issue-48.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. var dd = require('../'); // deep-diff
  2. var inspect = require('util').inspect;
  3. var expect = require('expect.js');
  4. var before = {
  5. name: 'my object',
  6. description: 'it\'s an object!',
  7. details: {
  8. it: 'has',
  9. an: 'array',
  10. with: ['a', 'few', 'elements']
  11. }
  12. };
  13. var after = {
  14. name: 'updated object',
  15. description: 'it\'s an object!',
  16. details: {
  17. it: 'has',
  18. an: 'array',
  19. with: ['a', 'few', 'more', 'elements', { than: 'before' }]
  20. }
  21. };
  22. var revertDiff = function (src, d) {
  23. d.forEach(function (change) {
  24. dd.revertChange(src, true, change);
  25. });
  26. return src;
  27. };
  28. var clone = function (src) {
  29. return JSON.parse(JSON.stringify(src));
  30. };
  31. var df = dd.diff(before, after);
  32. var b1 = clone(before);
  33. var a1 = clone(after);
  34. console.log(inspect(a1, false, 9)); // eslint-disable-line no-console
  35. var reverted = revertDiff(a1, df);
  36. console.log(inspect(reverted, false, 9)); // eslint-disable-line no-console
  37. console.log(inspect(b1, false, 9)); // eslint-disable-line no-console
  38. expect(reverted).to.eql(b1);