|
1 "use strict"; |
|
2 |
|
3 var patch = require("../patch") |
|
4 |
|
5 exports["test patch delete"] = function(assert) { |
|
6 var hash = { a: 1, b: 2 } |
|
7 |
|
8 assert.deepEqual(patch(hash, { a: null }), { b: 2 }, "null removes property") |
|
9 } |
|
10 |
|
11 exports["test patch delete with void"] = function(assert) { |
|
12 var hash = { a: 1, b: 2 } |
|
13 |
|
14 assert.deepEqual(patch(hash, { a: void(0) }), { b: 2 }, |
|
15 "void(0) removes property") |
|
16 } |
|
17 |
|
18 exports["test patch delete missing"] = function(assert) { |
|
19 assert.deepEqual(patch({ a: 1, b: 2 }, { c: null }), |
|
20 { a: 1, b: 2 }, |
|
21 "null removes property if exists"); |
|
22 |
|
23 assert.deepEqual(patch({ a: 1, b: 2 }, { c: void(0) }), |
|
24 { a: 1, b: 2 }, |
|
25 "void removes property if exists"); |
|
26 } |
|
27 |
|
28 exports["test delete deleted"] = function(assert) { |
|
29 assert.deepEqual(patch({ a: null, b: 2, c: 3, d: void(0)}, |
|
30 { a: void(0), b: null, d: null }), |
|
31 {c: 3}, |
|
32 "removed all existing and non existing"); |
|
33 } |
|
34 |
|
35 exports["test update deleted"] = function(assert) { |
|
36 assert.deepEqual(patch({ a: null, b: void(0), c: 3}, |
|
37 { a: { b: 2 } }), |
|
38 { a: { b: 2 }, c: 3 }, |
|
39 "replace deleted"); |
|
40 } |
|
41 |
|
42 exports["test patch delete with void"] = function(assert) { |
|
43 var hash = { a: 1, b: 2 } |
|
44 |
|
45 assert.deepEqual(patch(hash, { a: void(0) }), { b: 2 }, |
|
46 "void(0) removes property") |
|
47 } |
|
48 |
|
49 |
|
50 exports["test patch addition"] = function(assert) { |
|
51 var hash = { a: 1, b: 2 } |
|
52 |
|
53 assert.deepEqual(patch(hash, { c: 3 }), { a: 1, b: 2, c: 3 }, |
|
54 "new properties are added") |
|
55 } |
|
56 |
|
57 exports["test patch addition"] = function(assert) { |
|
58 var hash = { a: 1, b: 2 } |
|
59 |
|
60 assert.deepEqual(patch(hash, { c: 3 }), { a: 1, b: 2, c: 3 }, |
|
61 "new properties are added") |
|
62 } |
|
63 |
|
64 exports["test hash on itself"] = function(assert) { |
|
65 var hash = { a: 1, b: 2 } |
|
66 |
|
67 assert.deepEqual(patch(hash, hash), hash, |
|
68 "applying hash to itself returns hash itself") |
|
69 } |
|
70 |
|
71 exports["test patch with empty delta"] = function(assert) { |
|
72 var hash = { a: 1, b: 2 } |
|
73 |
|
74 assert.deepEqual(patch(hash, {}), hash, |
|
75 "applying empty delta results in no changes") |
|
76 } |
|
77 |
|
78 exports["test patch nested data"] = function(assert) { |
|
79 assert.deepEqual(patch({ a: { b: 1 }, c: { d: 2 } }, |
|
80 { a: { b: null, e: 3 }, c: { d: 4 } }), |
|
81 { a: { e: 3 }, c: { d: 4 } }, |
|
82 "nested structures can also be patched") |
|
83 } |