Files
xod/packages/xod-func-tools/test/objects.spec.js
Evgeny Kochetkov e6ab08e297 chore(infra): format code with prettier
Just `yarn lint  --fix`
2018-03-05 17:59:03 +03:00

109 lines
2.4 KiB
JavaScript

import { assert } from 'chai';
import {
omitRecursively,
omitNilValues,
omitEmptyValues,
subtractObject,
renameKeys,
reverseLookup,
invertMap,
} from '../src/objects';
describe('objects', () => {
describe('omitRecursively()', () => {
it('omits values in deeply nested objects', () => {
const obj = {
omitMe: 'hello',
foo: 2,
bar: {
qux: 4,
moo: ['a', 'b', 'c'],
baz: {
omitMe: 'ola',
quux: 6,
},
},
};
const cleanObj = omitRecursively(['omitMe'], obj);
assert.deepEqual(cleanObj, {
foo: 2,
bar: {
qux: 4,
moo: ['a', 'b', 'c'],
baz: {
quux: 6,
},
},
});
});
it('omits values in objects nested in arrays', () => {
const obj = [[{ omitMe: 'hello', foo: 2 }]];
const cleanObj = omitRecursively(['omitMe'], obj);
assert.deepEqual(cleanObj, [[{ foo: 2 }]]);
});
});
describe('omitNilValues()', () => {
it('omits nil values from object', () => {
assert.hasAllKeys(
omitNilValues({ a: 1, b: 2, c: undefined, d: null, e: 3 }),
['a', 'b', 'e']
);
});
});
describe('omitEmptyValues()', () => {
it('omits empty values from object', () => {
assert.hasAllKeys(omitEmptyValues({ a: 1, b: 2, c: '', d: '', e: 3 }), [
'a',
'b',
'e',
]);
});
});
describe('subtractObject()', () => {
it('returns subtracted object (if fields are equal)', () => {
assert.deepEqual(subtractObject({ a: 1, b: 2 }, { a: 1, b: 9, c: 3 }), {
b: 9,
c: 3,
});
});
});
describe('renameKeys()', () => {
it('returns object with renamed keys', () => {
assert.deepEqual(renameKeys({ a: 'b', b: 'c', c: 'd' }, { a: 1, b: 2 }), {
b: 1,
c: 2,
});
});
});
describe('reverseLookup()', () => {
it('returns first finded key that contains specified value', () => {
assert.equal(
reverseLookup('find me', {
a: 'a',
b: 'b',
c: 'find me',
d: 'd',
e: 'find me',
}),
'c'
);
});
});
describe('invertMap()', () => {
it('returns object with switched keys and values', () => {
assert.deepEqual(invertMap({ a: 'abc', b: 'bcd' }), {
abc: 'a',
bcd: 'b',
});
});
});
});