fleet/frontend/utilities/deep_difference/deep_difference.tests.js

56 lines
1.9 KiB
JavaScript

import expect from 'expect';
import deepDifference from 'utilities/deep_difference';
describe('deepDifference - utility', () => {
it('returns the difference for 2 un-nested objects', () => {
const obj1 = { id: 1, first_name: 'Joe', last_name: 'Smith' };
const obj2 = { id: 1, first_name: 'Joe', last_name: 'Smyth' };
expect(deepDifference(obj1, obj2)).toEqual({ last_name: 'Smith' });
expect(deepDifference(obj2, obj1)).toEqual({ last_name: 'Smyth' });
});
it('returns the difference for 2 nested objects', () => {
const obj1 = {
profile: { id: 1, first_name: 'Joe', last_name: 'Smith' },
preferences: { email: true, push: false },
post_ids: [1, 2, 3],
};
const obj2 = {
profile: { id: 1, first_name: 'Joe', last_name: 'Smyth' },
preferences: { email: false, push: false },
post_ids: [1, 3],
};
expect(deepDifference(obj1, obj2)).toEqual({
profile: { last_name: 'Smith' },
preferences: { email: true },
post_ids: [2],
});
expect(deepDifference(obj2, obj1)).toEqual({
profile: { last_name: 'Smyth' },
preferences: { email: false },
});
});
it('returns the difference for 1 nested object and 1 non-nested object', () => {
const obj1 = {
profile: { id: 1, first_name: 'Joe', last_name: 'Smith' },
preferences: { email: true, push: false },
post_ids: [1, 2, 3],
};
const obj2 = { profile: 'my profile', preferences: 'my preferences' };
expect(deepDifference(obj1, obj2)).toEqual(obj1);
expect(deepDifference(obj2, obj1)).toEqual(obj2);
});
it('returns an empty array when comparing an empty array against a non-empty array', () => {
const obj1 = { pack_name: 'My Pack', label_ids: [] };
const obj2 = { pack_name: 'My Pack', label_ids: [1, 2] };
expect(deepDifference(obj1, obj2)).toEqual({ label_ids: [] });
});
});