52 lines
2.0 KiB
JavaScript
52 lines
2.0 KiB
JavaScript
|
import { getPropsWithDefaults } from './getPropsWithDefaults';
|
||
|
var defaultProps = {
|
||
|
num: 4,
|
||
|
bool: true,
|
||
|
str: 'default',
|
||
|
fn: function () {
|
||
|
console.log('default');
|
||
|
},
|
||
|
nul: 'not null',
|
||
|
};
|
||
|
describe('getPropsWithDefaults', function () {
|
||
|
it("doesn't override non-undefined specified values", function () {
|
||
|
var propsWithoutDefaults = {
|
||
|
num: 0,
|
||
|
bool: false,
|
||
|
str: '',
|
||
|
fn: function () { return undefined; },
|
||
|
nul: null,
|
||
|
};
|
||
|
var props = getPropsWithDefaults(defaultProps, propsWithoutDefaults);
|
||
|
expect(props.num).toEqual(propsWithoutDefaults.num);
|
||
|
expect(props.bool).toEqual(propsWithoutDefaults.bool);
|
||
|
expect(props.str).toEqual(propsWithoutDefaults.str);
|
||
|
expect(props.fn).toEqual(propsWithoutDefaults.fn);
|
||
|
expect(props.nul).toEqual(propsWithoutDefaults.nul);
|
||
|
});
|
||
|
it('overrides specified undefined values', function () {
|
||
|
var propsWithoutDefaults = {
|
||
|
num: undefined,
|
||
|
bool: undefined,
|
||
|
str: undefined,
|
||
|
fn: undefined,
|
||
|
nul: undefined,
|
||
|
};
|
||
|
var props = getPropsWithDefaults(defaultProps, propsWithoutDefaults);
|
||
|
expect(props.num).toEqual(defaultProps.num);
|
||
|
expect(props.bool).toEqual(defaultProps.bool);
|
||
|
expect(props.str).toEqual(defaultProps.str);
|
||
|
expect(props.fn).toEqual(defaultProps.fn);
|
||
|
expect(props.nul).toEqual(defaultProps.nul);
|
||
|
});
|
||
|
it('overrides unspecified values', function () {
|
||
|
var propsWithoutDefaults = {};
|
||
|
var props = getPropsWithDefaults(defaultProps, propsWithoutDefaults);
|
||
|
expect(props.num).toEqual(defaultProps.num);
|
||
|
expect(props.bool).toEqual(defaultProps.bool);
|
||
|
expect(props.str).toEqual(defaultProps.str);
|
||
|
expect(props.fn).toEqual(defaultProps.fn);
|
||
|
expect(props.nul).toEqual(defaultProps.nul);
|
||
|
});
|
||
|
});
|
||
|
//# sourceMappingURL=getPropsWithDefaults.test.js.map
|