apphouse
Version:
Component library for React that uses observable state management and theme-able components.
38 lines (28 loc) • 1.21 kB
text/typescript
import { compareKeysDeep } from './compareKeysDeep';
describe('compareKeysDeep', () => {
it('should return an empty array for two identical objects', () => {
const obj1 = { a: 1, b: 2, c: { d: 3 } };
const obj2 = { a: 1, b: 2, c: { d: 3 } };
expect(compareKeysDeep(obj1, obj2)).toEqual([]);
});
it('should return missing keys when the second object is missing keys', () => {
const obj1 = { a: 1, b: 2, c: { d: 3 } };
const obj2 = { a: 1, c: { d: 3 } };
expect(compareKeysDeep(obj1, obj2)).toEqual(['b']);
});
it('should return missing keys at nested levels', () => {
const obj1 = { a: { b: 2, c: { d: 3 } }, e: 4 };
const obj2 = { a: { b: 2 } };
expect(compareKeysDeep(obj1, obj2)).toEqual(['a.c.d', 'e']);
});
it('should return missing keys at very deep nested levels', () => {
const obj1 = { a: { b: 2, c: { d: 3, e: 5, f: 6, k: { l: 4 } } }, e: 4 };
const obj2 = { a: { b: 2 } };
expect(compareKeysDeep(obj1, obj2)).toEqual(['a.c.d,e,f,k.l', 'e']);
});
it('should return an empty array if both objects are empty', () => {
const obj1 = {};
const obj2 = {};
expect(compareKeysDeep(obj1, obj2)).toEqual([]);
});
});