69 lines
1.7 KiB
JavaScript
69 lines
1.7 KiB
JavaScript
|
/**
|
||
|
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
||
|
*
|
||
|
* This source code is licensed under the BSD-style license found in the
|
||
|
* LICENSE file in the root directory of this source tree. An additional grant
|
||
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||
|
*
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
|
||
|
|
||
|
const defaultConfig = require('./defaultConfig');
|
||
|
|
||
|
const _validate = (config, options) => {
|
||
|
let hasDeprecationWarnings = false;
|
||
|
|
||
|
for (const key in config) {
|
||
|
if (
|
||
|
options.deprecatedConfig &&
|
||
|
key in options.deprecatedConfig &&
|
||
|
typeof options.deprecate === 'function')
|
||
|
{
|
||
|
const isDeprecatedKey = options.deprecate(
|
||
|
config,
|
||
|
key,
|
||
|
options.deprecatedConfig,
|
||
|
options);
|
||
|
|
||
|
|
||
|
hasDeprecationWarnings = hasDeprecationWarnings || isDeprecatedKey;
|
||
|
} else if (hasOwnProperty.call(options.exampleConfig, key)) {
|
||
|
if (
|
||
|
typeof options.condition === 'function' &&
|
||
|
typeof options.error === 'function' &&
|
||
|
!options.condition(config[key], options.exampleConfig[key]))
|
||
|
{
|
||
|
options.error(key, config[key], options.exampleConfig[key], options);
|
||
|
}
|
||
|
} else {
|
||
|
options.unknown &&
|
||
|
options.unknown(config, options.exampleConfig, key, options);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return { hasDeprecationWarnings };
|
||
|
};
|
||
|
|
||
|
const validate = (config, options) => {
|
||
|
_validate(options, defaultConfig); // validate against jest-validate config
|
||
|
|
||
|
const defaultedOptions = Object.assign(
|
||
|
{},
|
||
|
defaultConfig,
|
||
|
options,
|
||
|
{ title: Object.assign({}, defaultConfig.title, options.title) });var _validate2 =
|
||
|
|
||
|
|
||
|
_validate(config, defaultedOptions);const hasDeprecationWarnings = _validate2.hasDeprecationWarnings;
|
||
|
|
||
|
return {
|
||
|
hasDeprecationWarnings,
|
||
|
isValid: true };
|
||
|
|
||
|
};
|
||
|
|
||
|
module.exports = validate;
|