@@ -7,40 +7,119 @@ describe('getDiff', () => {
7
7
const testObjectA = { name : 'gary' } ;
8
8
const testObjectB = { name : 'gary' } ;
9
9
const difference = diffler ( testObjectA , testObjectB ) ;
10
- assert . equal ( Object . keys ( difference ) . length , 0 ) ;
11
- assert . deepEqual ( difference , { } ) ;
10
+ assert . strictEqual ( Object . keys ( difference ) . length , 0 ) ;
11
+ assert . deepStrictEqual ( difference , { } ) ;
12
12
} ) ;
13
13
14
14
it ( 'should detect a single property change' , ( ) => {
15
15
const testObjectA = { name : 'gary' } ;
16
16
const testObjectB = { name : 'cindy' } ;
17
17
const difference = diffler ( testObjectA , testObjectB ) ;
18
18
19
- assert . equal ( Object . keys ( difference ) . length , 1 ) ;
20
- assert . equal ( Object . keys ( difference . name ) . length , 2 ) ;
19
+ assert . strictEqual ( Object . keys ( difference ) . length , 1 ) ;
20
+ assert . strictEqual ( Object . keys ( difference . name ) . length , 2 ) ;
21
21
22
- assert . equal ( difference . name . from , 'gary' ) ;
23
- assert . equal ( difference . name . to , 'cindy' ) ;
22
+ assert . strictEqual ( difference . name . from , 'gary' ) ;
23
+ assert . strictEqual ( difference . name . to , 'cindy' ) ;
24
24
} ) ;
25
25
26
26
it ( 'should detect no changes' , ( ) => {
27
27
const testObjectA = { name : 'gary' } ;
28
28
const testObjectB = { name : 'gary' } ;
29
29
const difference = diffler ( testObjectA , testObjectB ) ;
30
30
31
- assert . equal ( Object . keys ( difference ) . length , 0 ) ;
31
+ assert . strictEqual ( Object . keys ( difference ) . length , 0 ) ;
32
32
} ) ;
33
33
34
34
it ( 'should detect type changes' , ( ) => {
35
35
const testObjectA = { name : '1' } ;
36
36
const testObjectB = { name : 1 } ;
37
37
const difference = diffler ( testObjectA , testObjectB ) ;
38
38
39
- assert . equal ( Object . keys ( difference ) . length , 1 ) ;
40
- assert . equal ( Object . keys ( difference . name ) . length , 2 ) ;
39
+ assert . strictEqual ( Object . keys ( difference ) . length , 1 ) ;
40
+ assert . strictEqual ( Object . keys ( difference . name ) . length , 2 ) ;
41
41
42
- assert . equal ( difference . name . from , '1' ) ;
43
- assert . equal ( difference . name . to , 1 ) ;
42
+ assert . strictEqual ( difference . name . from , '1' ) ;
43
+ assert . strictEqual ( difference . name . to , 1 ) ;
44
+ } ) ;
45
+ } ) ;
46
+
47
+ describe ( 'array checks' , ( ) => {
48
+ it ( 'returns false when no changes detected' , ( ) => {
49
+ const testObjectA = { arr : [ 'one' , 'two' ] } ;
50
+ const testObjectB = { arr : [ 'one' , 'two' ] } ;
51
+ const difference = diffler ( testObjectA , testObjectB ) ;
52
+ assert . strictEqual ( Object . keys ( difference ) . length , 0 ) ;
53
+ assert . deepStrictEqual ( difference , { } ) ;
54
+ } ) ;
55
+
56
+ it ( 'returns change when array order shifted' , ( ) => {
57
+ const testObjectA = { arr : [ 'one' , 'two' , 'three' ] } ;
58
+ const testObjectB = { arr : [ 'three' , 'two' , 'one' ] } ;
59
+ const difference = diffler ( testObjectA , testObjectB ) ;
60
+ assert . strictEqual ( Object . keys ( difference ) . length , 1 ) ;
61
+ assert . deepStrictEqual ( difference , { arr : { 0 : { from : 'one' , to : 'three' } , 2 : { from : 'three' , to : 'one' } } } ) ;
62
+ } ) ;
63
+
64
+ it ( 'returns false when array order shifted but respectArrayOrder is false' , ( ) => {
65
+ const testObjectA = { arr : [ 'one' , 'two' , 'three' ] } ;
66
+ const testObjectB = { arr : [ 'three' , 'two' , 'one' ] } ;
67
+ const difference = diffler ( testObjectA , testObjectB , { respectArrayOrder : false } ) ;
68
+ assert . strictEqual ( Object . keys ( difference ) . length , 0 ) ;
69
+ assert . deepStrictEqual ( difference , { } ) ;
70
+ } ) ;
71
+
72
+ it ( 'returns false when array order shifted but respectArrayOrder is false as numbers' , ( ) => {
73
+ const testObjectA = { arr : [ 1 , 2 , 3 ] } ;
74
+ const testObjectB = { arr : [ 2 , 3 , 1 ] } ;
75
+ const difference = diffler ( testObjectA , testObjectB , { respectArrayOrder : false } ) ;
76
+ assert . strictEqual ( Object . keys ( difference ) . length , 0 ) ;
77
+ assert . deepStrictEqual ( difference , { } ) ;
78
+ } ) ;
79
+
80
+ it ( 'returns false when array order shifted but respectArrayOrder is false as mixed' , ( ) => {
81
+ const testObjectA = { arr : [ 1 , 'two' , 3 ] } ;
82
+ const testObjectB = { arr : [ 'two' , 3 , 1 ] } ;
83
+ const difference = diffler ( testObjectA , testObjectB , { respectArrayOrder : false } ) ;
84
+ assert . strictEqual ( Object . keys ( difference ) . length , 0 ) ;
85
+ assert . deepStrictEqual ( difference , { } ) ;
86
+ } ) ;
87
+
88
+ it ( 'returns diff when array order shifted for non-primitives and respectArrayOrder is false' , ( ) => {
89
+ const testObjectA = {
90
+ myArray : [ { foo : 'bar' } , { baz : 'bat' } ] ,
91
+ } ;
92
+
93
+ const testObjectB = {
94
+ myArray : [ { baz : 'bat' } , { foo : 'bar' } ] ,
95
+ } ;
96
+ const difference = diffler ( testObjectA , testObjectB , { respectArrayOrder : false } ) ;
97
+ assert . strictEqual ( Object . keys ( difference ) . length , 1 ) ;
98
+ assert . deepStrictEqual ( difference , { } ) ;
99
+ } ) ;
100
+
101
+ it ( 'returns change when array item added' , ( ) => {
102
+ const testObjectA = { arr : [ 'one' , 'two' ] } ;
103
+ const testObjectB = { arr : [ 'one' , 'two' , 'three' ] } ;
104
+ const difference = diffler ( testObjectA , testObjectB ) ;
105
+ assert . strictEqual ( Object . keys ( difference ) . length , 1 ) ;
106
+ assert . deepStrictEqual ( difference , { arr : { 2 : { from : null , to : 'three' } } } ) ;
107
+ } ) ;
108
+
109
+ it ( 'returns change when array item removed' , ( ) => {
110
+ const testObjectA = { arr : [ 'one' , 'two' , 'three' ] } ;
111
+ const testObjectB = { arr : [ 'one' , 'two' ] } ;
112
+ const difference = diffler ( testObjectA , testObjectB ) ;
113
+ assert . strictEqual ( Object . keys ( difference ) . length , 1 ) ;
114
+ assert . deepStrictEqual ( difference , { arr : { 2 : { from : 'three' , to : null } } } ) ;
115
+ } ) ;
116
+
117
+ it ( 'returns change and removal when array item removed from middle' , ( ) => {
118
+ const testObjectA = { arr : [ 'one' , 'two' , 'three' ] } ;
119
+ const testObjectB = { arr : [ 'one' , 'three' ] } ;
120
+ const difference = diffler ( testObjectA , testObjectB ) ;
121
+ assert . strictEqual ( Object . keys ( difference ) . length , 1 ) ;
122
+ assert . deepStrictEqual ( difference , { arr : { 1 : { from : 'two' , to : 'three' } , 2 : { from : 'three' , to : null } } } ) ;
44
123
} ) ;
45
124
} ) ;
46
125
@@ -58,11 +137,11 @@ describe('getDiff', () => {
58
137
} ;
59
138
const difference = diffler ( testObjectA , testObjectB ) ;
60
139
61
- assert . equal ( Object . keys ( difference ) . length , 1 ) ;
62
- assert . equal ( Object . keys ( difference . weight . value ) . length , 2 ) ;
140
+ assert . strictEqual ( Object . keys ( difference ) . length , 1 ) ;
141
+ assert . strictEqual ( Object . keys ( difference . weight . value ) . length , 2 ) ;
63
142
64
- assert . equal ( difference . weight . value . from , 80 ) ;
65
- assert . equal ( difference . weight . value . to , 79 ) ;
143
+ assert . strictEqual ( difference . weight . value . from , 80 ) ;
144
+ assert . strictEqual ( difference . weight . value . to , 79 ) ;
66
145
} ) ;
67
146
68
147
it ( 'should detect multiple nested property change' , ( ) => {
@@ -78,17 +157,17 @@ describe('getDiff', () => {
78
157
} ;
79
158
const difference = diffler ( testObjectA , testObjectB ) ;
80
159
81
- assert . equal ( Object . keys ( difference ) . length , 2 ) ;
82
- assert . equal ( Object . keys ( difference . weight ) . length , 2 ) ;
160
+ assert . strictEqual ( Object . keys ( difference ) . length , 2 ) ;
161
+ assert . strictEqual ( Object . keys ( difference . weight ) . length , 2 ) ;
83
162
84
- assert . equal ( difference . age . from , 33 ) ;
85
- assert . equal ( difference . age . to , 34 ) ;
163
+ assert . strictEqual ( difference . age . from , 33 ) ;
164
+ assert . strictEqual ( difference . age . to , 34 ) ;
86
165
87
- assert . equal ( difference . weight . value . from , 80 ) ;
88
- assert . equal ( difference . weight . value . to , 12.4 ) ;
166
+ assert . strictEqual ( difference . weight . value . from , 80 ) ;
167
+ assert . strictEqual ( difference . weight . value . to , 12.4 ) ;
89
168
90
- assert . equal ( difference . weight . unit . from , 'kg' ) ;
91
- assert . equal ( difference . weight . unit . to , 'stone' ) ;
169
+ assert . strictEqual ( difference . weight . unit . from , 'kg' ) ;
170
+ assert . strictEqual ( difference . weight . unit . to , 'stone' ) ;
92
171
} ) ;
93
172
} ) ;
94
173
@@ -98,11 +177,11 @@ describe('getDiff', () => {
98
177
const testObjectB = { } ;
99
178
const difference = diffler ( testObjectA , testObjectB ) ;
100
179
101
- assert . equal ( Object . keys ( difference ) . length , 1 ) ;
102
- assert . equal ( Object . keys ( difference . name ) . length , 2 ) ;
180
+ assert . strictEqual ( Object . keys ( difference ) . length , 1 ) ;
181
+ assert . strictEqual ( Object . keys ( difference . name ) . length , 2 ) ;
103
182
104
- assert . equal ( difference . name . from , 'gary' ) ;
105
- assert . equal ( difference . name . to , null ) ;
183
+ assert . strictEqual ( difference . name . from , 'gary' ) ;
184
+ assert . strictEqual ( difference . name . to , null ) ;
106
185
} ) ;
107
186
108
187
it ( 'should detect a nested property removal as null' , ( ) => {
@@ -114,11 +193,11 @@ describe('getDiff', () => {
114
193
const testObjectB = { name : 'gary' , age : 33 } ;
115
194
const difference = diffler ( testObjectA , testObjectB ) ;
116
195
117
- assert . equal ( Object . keys ( difference ) . length , 1 ) ;
118
- assert . equal ( Object . keys ( difference . weight ) . length , 2 ) ;
196
+ assert . strictEqual ( Object . keys ( difference ) . length , 1 ) ;
197
+ assert . strictEqual ( Object . keys ( difference . weight ) . length , 2 ) ;
119
198
120
- assert . deepEqual ( difference . weight . from , { unit : 'kg' , value : 80 } ) ;
121
- assert . equal ( difference . weight . to , null ) ;
199
+ assert . deepStrictEqual ( difference . weight . from , { unit : 'kg' , value : 80 } ) ;
200
+ assert . strictEqual ( difference . weight . to , null ) ;
122
201
} ) ;
123
202
} ) ;
124
203
} ) ;
0 commit comments