32 lines
848 B
JavaScript
32 lines
848 B
JavaScript
import { expect } from 'chai';
|
|
import u from '../lib';
|
|
|
|
describe('u.withDefault', () => {
|
|
it('uses the default as the basis for the update if the object is undefined', () => {
|
|
const inc = x => x + 1;
|
|
const result = u.withDefault({ a: 0 }, { a: inc }, undefined);
|
|
|
|
expect(result).to.eql({ a: 1 });
|
|
});
|
|
|
|
it('uses ignores the default if the object is defined', () => {
|
|
const inc = x => x + 1;
|
|
const result = u.withDefault({ a: 0 }, { a: inc }, { a: 3 });
|
|
|
|
expect(result).to.eql({ a: 4 });
|
|
});
|
|
|
|
it('can be partially applied', () => {
|
|
const object = {};
|
|
const result = u({
|
|
foo: u.withDefault([], { 0: 'bar' }),
|
|
}, object);
|
|
|
|
expect(result).to.eql({ foo: ['bar'] });
|
|
});
|
|
|
|
it('freezes the result', () => {
|
|
expect(Object.isFrozen(u.withDefault({}, { a: 1 })(undefined))).to.be.true;
|
|
});
|
|
});
|