1
1
'use strict' ;
2
2
const { arrMergeAsync, arrMergeSync} = require ( "../index" ) ;
3
+ const ENV = [ 'prod' , 'develop' ] ;
3
4
4
5
function deepCopy ( item ) {
5
6
let copy = null ;
@@ -12,15 +13,41 @@ function deepCopy(item) {
12
13
return copy ;
13
14
}
14
15
15
- function identifier ( item ) {
16
+ function identifierOk ( item ) {
16
17
return `${ item . key } ${ item . child . key } ` ;
17
18
}
18
19
20
+ function identifierThrow ( item ) {
21
+ throw new Error ( 'some error' ) ;
22
+ }
23
+
19
24
function after ( arr1 , arr2 ) {
20
25
arr1 [ 0 ] . value = 'AA' ;
21
26
arr2 [ 1 ] . value = 'DD' ;
22
27
}
23
28
29
+ function makeCircularObject ( ) {
30
+ this . abc = "abc" ;
31
+ this . circular = this ;
32
+ }
33
+
34
+ // let cyrc = new makeCircularObject();
35
+
36
+ function makeCircularTest ( testArr ) {
37
+ let item = deepCopy ( testArr [ 0 ] ) ;
38
+ item . name = 'C1' ;
39
+ item . description = 'Circular object in array' ;
40
+ item . arr1 = [ 1 ] ;
41
+ item . arr1 . push ( new makeCircularObject ( ) ) ;
42
+ item . arr2 = [ 2 ] ;
43
+ item . arr2 . push ( new makeCircularObject ( ) ) ;
44
+ item . expect = [ ] ;
45
+ item . expect . push ( 1 ) ;
46
+ item . expect . push ( new makeCircularObject ( ) ) ;
47
+ item . expect . push ( 2 ) ;
48
+ testArr . push ( item ) ;
49
+ }
50
+
24
51
let testSet = [
25
52
{
26
53
name : 'test 1' ,
@@ -59,7 +86,7 @@ let testSet = [
59
86
description : 'Objects arrays; identifier as function.' ,
60
87
arr1 : [ { key : 'A' , text : 'text-A' , child : { key : 'A' } } , { key : 'A' , text : 'text-B' , child : { key : 'B' } } ] ,
61
88
arr2 : [ { key : 'A' , text : 'text-C' , child : { key : 'B' } } , { key : 'B' , text : 'text-D' , child : { key : 'A' } } ] ,
62
- identifierAsFunc : true ,
89
+ identifierAsFunc : 1 ,
63
90
expect : [ { key : 'A' , text : 'text-A' , child : { key : 'A' } } , { key : 'A' , text : 'text-C' , child : { key : 'B' } } , {
64
91
key : 'B' ,
65
92
text : 'text-D' ,
@@ -68,6 +95,25 @@ let testSet = [
68
95
} ,
69
96
{
70
97
name : 'test 6' ,
98
+ description : 'Objects arrays; identifier as wrong function' ,
99
+ arr1 : [
100
+ { key : 'A' , text : 'text-A' , child : { key : 'A' } } ,
101
+ { key : 'A' , text : 'text-B' , child : { key : 'B' } }
102
+ ] ,
103
+ arr2 : [
104
+ { key : 'A' , text : 'text-C' , child : { key : 'B' } } ,
105
+ { key : 'B' , text : 'text-D' , child : { key : 'A' } }
106
+ ] ,
107
+ identifierAsFunc : 2 ,
108
+ expect : [
109
+ { key : 'A' , text : 'text-A' , child : { key : 'A' } } ,
110
+ { key : 'A' , text : 'text-B' , child : { key : 'B' } } ,
111
+ { key : 'A' , text : 'text-C' , child : { key : 'B' } } ,
112
+ { key : 'B' , text : 'text-D' , child : { key : 'A' } }
113
+ ]
114
+ } ,
115
+ {
116
+ name : 'test 7' ,
71
117
description : 'Objects arrays; result array has objects copies.' ,
72
118
arr1 : [ { id : 1 , value : 'A' } , { id : 2 , value : 'B' } ] ,
73
119
arr2 : [ { id : 2 , value : 'C' } , { id : 3 , value : 'D' } ] ,
@@ -109,34 +155,51 @@ let testSet = [
109
155
} ,
110
156
] ;
111
157
158
+
112
159
describe ( 'Sync tests' , ( ) => {
113
- let testSetSync = deepCopy ( testSet ) ;
114
- for ( let item of testSetSync ) {
115
- test ( item . name , ( ) => {
116
- if ( item . identifierAsFunc ) {
117
- item . identifier = identifier ;
118
- }
119
- let merged = arrMergeSync ( item . arr1 , item . arr2 , item . identifier ) ;
120
- if ( item . after ) {
121
- after ( item . arr1 , item . arr2 ) ;
122
- }
123
- expect ( merged . sort ( ) ) . toEqual ( item . expect . sort ( ) ) ;
124
- } ) ;
125
- }
160
+ for ( let env of ENV ) {
161
+ process . env . NODE_ENV = env ;
162
+ let testSetSync = deepCopy ( testSet ) ;
163
+ makeCircularTest ( testSetSync ) ;
164
+ for ( let item of testSetSync ) {
165
+ test ( `${ env } , ${ item . name } : ${ item . description } ` , ( ) => {
166
+ if ( item . identifierAsFunc === 1 ) {
167
+ item . identifier = identifierOk ;
168
+ }
169
+ if ( item . identifierAsFunc === 2 ) {
170
+ item . identifier = identifierThrow ;
171
+ }
172
+ let merged = arrMergeSync ( item . arr1 , item . arr2 , item . identifier ) ;
173
+ if ( item . after ) {
174
+ after ( item . arr1 , item . arr2 ) ;
175
+ }
176
+ merged . sort ( ) ;
177
+ item . expect . sort ( ) ;
178
+ expect ( merged ) . toEqual ( item . expect ) ;
179
+ } ) ;
180
+ }
181
+ }
126
182
} )
127
183
128
184
describe ( 'Async tests' , ( ) => {
129
- let testSetAsync = deepCopy ( testSet ) ;
130
- for ( let item of testSetAsync ) {
131
- test ( item . name , async ( ) => {
132
- if ( item . identifierAsFunc ) {
133
- item . identifier = identifier ;
134
- }
135
- let merged = await arrMergeAsync ( item . arr1 , item . arr2 , item . identifier ) ;
136
- if ( item . after ) {
137
- after ( item . arr1 , item . arr2 ) ;
138
- }
139
- expect ( merged . sort ( ) ) . toEqual ( item . expect . sort ( ) ) ;
140
- } ) ;
185
+ for ( let env of ENV ) {
186
+ process . env . NODE_ENV = env ;
187
+ let testSetAsync = deepCopy ( testSet ) ;
188
+ makeCircularTest ( testSetAsync ) ;
189
+ for ( let item of testSetAsync ) {
190
+ test ( `${ env } , ${ item . name } : ${ item . description } ` , async ( ) => {
191
+ if ( item . identifierAsFunc === 1 ) {
192
+ item . identifier = identifierOk ;
193
+ }
194
+ if ( item . identifierAsFunc === 2 ) {
195
+ item . identifier = identifierThrow ;
196
+ }
197
+ let merged = await arrMergeAsync ( item . arr1 , item . arr2 , item . identifier ) ;
198
+ if ( item . after ) {
199
+ after ( item . arr1 , item . arr2 ) ;
200
+ }
201
+ expect ( merged . sort ( ) ) . toEqual ( item . expect . sort ( ) ) ;
202
+ } ) ;
203
+ }
141
204
}
142
205
} )
0 commit comments