can-util
Version:
Common utilities for CanJS projects
59 lines (49 loc) • 1.39 kB
JavaScript
'use strict';
var QUnit = require('../../test/qunit');
var diffObject = require('./diff-object');
QUnit.module("can-util/js/diff");
QUnit.test("basics", function(assert){
var patches = diffObject({}, {a:'foo'});
assert.deepEqual(patches, [{
property: 'a',
type: 'add',
value: 'foo'
}], "add property");
patches = diffObject(null, {a:'foo'});
assert.deepEqual(patches, [{
property: 'a',
type: 'add',
value: 'foo'
}], "add property - oldObject null");
patches = diffObject({a: 'foo'}, {a:'bar'});
assert.deepEqual(patches, [{
property: 'a',
type: 'set',
value: 'bar'
}], "change property");
patches = diffObject({a: 'foo'}, {});
assert.deepEqual(patches, [{
property: 'a',
type: 'remove'
}], "remove property");
patches = diffObject({a: 'foo', b: 'baz'}, {a: 'bar', c: 'quz'});
assert.deepEqual(patches, [{
property: 'a',
type: 'set',
value: 'bar'
}, {
property: 'c',
type: 'add',
value: 'quz'
}, {
property: 'b',
type: 'remove'
}], "add, set, and remove");
});
QUnit.test("mutation test", function(assert){
var oldObject = {a: 'foo', b: 'baz'};
var newObject = {a: 'bar', c: 'quz'};
diffObject(oldObject, newObject);
assert.deepEqual(oldObject, {a: 'foo', b: 'baz'}, 'should not mutate old object');
assert.deepEqual(newObject, {a: 'bar', c: 'quz'}, 'should not mutate new object');
});