var dd = require('../'); // deep-diff var inspect = require('util').inspect; var expect = require('expect.js'); var before = { name: 'my object', description: 'it\'s an object!', details: { it: 'has', an: 'array', with: ['a', 'few', 'elements'] } }; var after = { name: 'updated object', description: 'it\'s an object!', details: { it: 'has', an: 'array', with: ['a', 'few', 'more', 'elements', { than: 'before' }] } }; var revertDiff = function (src, d) { d.forEach(function (change) { dd.revertChange(src, true, change); }); return src; }; var clone = function (src) { return JSON.parse(JSON.stringify(src)); }; var df = dd.diff(before, after); var b1 = clone(before); var a1 = clone(after); console.log(inspect(a1, false, 9)); // eslint-disable-line no-console var reverted = revertDiff(a1, df); console.log(inspect(reverted, false, 9)); // eslint-disable-line no-console console.log(inspect(b1, false, 9)); // eslint-disable-line no-console expect(reverted).to.eql(b1);