mirror of
https://github.com/moroshko/rxviz.git
synced 2026-01-18 16:22:20 +00:00
122 lines
2.1 KiB
JavaScript
122 lines
2.1 KiB
JavaScript
import areObjectsSame from './are-objects-same';
|
|
|
|
const obj = { a: 1 };
|
|
const noop = () => {};
|
|
|
|
const cases = [
|
|
{
|
|
objA: {},
|
|
objB: {},
|
|
result: true
|
|
},
|
|
{
|
|
objA: obj,
|
|
objB: obj,
|
|
result: true
|
|
},
|
|
{
|
|
objA: { a: 5 },
|
|
objB: { a: 5 },
|
|
result: true
|
|
},
|
|
{
|
|
objA: { a: 1 },
|
|
objB: { b: 1 },
|
|
result: false
|
|
},
|
|
{
|
|
objA: { a: 1 },
|
|
objB: { a: 1, b: 2 },
|
|
result: false
|
|
},
|
|
{
|
|
objA: { a: 1, b: 2 },
|
|
objB: { a: 1 },
|
|
result: false
|
|
},
|
|
{
|
|
objA: { a: 5, b: false, c: 'hey' },
|
|
objB: { a: 5, b: false, c: 'hey' },
|
|
result: true
|
|
},
|
|
{
|
|
objA: { a: noop },
|
|
objB: { a: noop },
|
|
result: true
|
|
},
|
|
{
|
|
objA: { a: noop },
|
|
objB: { a: noop },
|
|
keys: ['a'],
|
|
result: true
|
|
},
|
|
{
|
|
objA: { a: () => {} },
|
|
objB: { a: () => {} },
|
|
result: false
|
|
},
|
|
{
|
|
objA: { a: () => {} },
|
|
objB: { a: () => {} },
|
|
keys: ['a'],
|
|
result: false
|
|
},
|
|
{
|
|
objA: { a: { b: 9 } },
|
|
objB: { a: { b: 9 } },
|
|
result: false
|
|
},
|
|
{
|
|
objA: { a: { b: 9 } },
|
|
objB: { a: { b: 9 } },
|
|
keys: ['a'],
|
|
result: true
|
|
},
|
|
{
|
|
objA: { a: { b: 9 } },
|
|
objB: { a: null },
|
|
keys: ['a'],
|
|
result: false
|
|
},
|
|
{
|
|
objA: { a: null },
|
|
objB: { a: { b: 9 } },
|
|
keys: ['a'],
|
|
result: false
|
|
},
|
|
{
|
|
objA: { a: { b: 9, c: 'hi' } },
|
|
objB: { a: { b: 9 } },
|
|
keys: ['a'],
|
|
result: false
|
|
},
|
|
{
|
|
objA: { a: { b: 9 } },
|
|
objB: { a: { b: 9, c: 'hi' } },
|
|
keys: ['a'],
|
|
result: false
|
|
},
|
|
{
|
|
objA: { a: { b: 9 }, c: { d: null } },
|
|
objB: { a: { b: 9 }, c: { d: null } },
|
|
keys: ['a', 'c'],
|
|
result: true
|
|
},
|
|
{
|
|
objA: { a: { b: 9 }, c: { d: {} } },
|
|
objB: { a: { b: 9 }, c: { d: {} } },
|
|
keys: ['a', 'c'],
|
|
result: false
|
|
}
|
|
];
|
|
|
|
describe('areObjectsSame', () => {
|
|
cases.forEach(({ objA, objB, keys, result }) => {
|
|
it(`should return ${result} for ${JSON.stringify(
|
|
objA
|
|
)} and ${JSON.stringify(objB)}${keys ? ` with keys ${keys}` : ''}`, () => {
|
|
expect(areObjectsSame(objA, objB, keys)).toEqual(result);
|
|
});
|
|
});
|
|
});
|