mock-config-server 3.3.1 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/package.json +1 -1
  2. package/dist/src/core/database/createDatabaseRoutes/createDatabaseRoutes.test.ts +0 -112
  3. package/dist/src/core/database/createDatabaseRoutes/helpers/array/createNewId/createNewId.test.ts +0 -13
  4. package/dist/src/core/database/createDatabaseRoutes/helpers/array/findIndexById/findIndexById.test.ts +0 -17
  5. package/dist/src/core/database/createDatabaseRoutes/helpers/array/isIndex/isIndex.test.ts +0 -30
  6. package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.test.ts +0 -399
  7. package/dist/src/core/database/createDatabaseRoutes/helpers/createShallowDatabaseRoutes/createShallowDatabaseRoutes.test.ts +0 -118
  8. package/dist/src/core/database/createDatabaseRoutes/helpers/operators/operators.d.ts +0 -3
  9. package/dist/src/core/database/createDatabaseRoutes/helpers/operators/operators.js +0 -30
  10. package/dist/src/core/database/createDatabaseRoutes/helpers/search/search.d.ts +0 -3
  11. package/dist/src/core/database/createDatabaseRoutes/helpers/search/search.js +0 -31
  12. package/dist/src/core/database/createDatabaseRoutes/helpers/splitDatabaseByNesting/splitDatabaseByNesting.test.ts +0 -25
  13. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.test.ts +0 -156
  14. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.test.ts +0 -48
  15. package/dist/src/core/database/createDatabaseRoutes/storages/Memory/MemoryStorage.test.ts +0 -96
  16. package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.test.ts +0 -851
  17. package/dist/src/core/graphql/createGraphQLRoutes/helpers/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.test.ts +0 -116
  18. package/dist/src/core/middlewares/cookieParseMiddleware/cookieParseMiddleware.test.ts +0 -22
  19. package/dist/src/core/middlewares/cookieParseMiddleware/helpers/parseCookie/parseCookie.test.ts +0 -45
  20. package/dist/src/core/middlewares/corsMiddleware/corsMiddleware.test.ts +0 -152
  21. package/dist/src/core/middlewares/corsMiddleware/helpers/getAllowedOrigins/getAllowedOrigins.test.ts +0 -15
  22. package/dist/src/core/middlewares/errorMiddleware/errorMiddleware.test.ts +0 -29
  23. package/dist/src/core/middlewares/noCorsMiddleware/noCorsMiddleware.test.ts +0 -49
  24. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.test.ts +0 -27
  25. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getLevenshteinDistance/getLevenshteinDistance.test.ts +0 -12
  26. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/getRestUrlSuggestions.test.ts +0 -54
  27. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.test.ts +0 -12
  28. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.test.ts +0 -10
  29. package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.test.ts +0 -285
  30. package/dist/src/core/rest/createRestRoutes/createRestRoutes.test.ts +0 -648
  31. package/dist/src/core/rest/createRestRoutes/helpers/prepareRestRequestConfigs/prepareRestRequestConfigs.test.ts +0 -154
  32. package/dist/src/utils/helpers/config/resolveEntityValues/resolveEntityValues.test.ts +0 -1452
  33. package/dist/src/utils/helpers/entities/convertToEntityDescriptor/convertToEntityDescriptor.test.ts +0 -27
  34. package/dist/src/utils/helpers/entities/isEntityDescriptor/isEntityDescriptor.test.ts +0 -15
  35. package/dist/src/utils/helpers/graphql/getGraphQLInput/getGraphQLInput.test.ts +0 -140
  36. package/dist/src/utils/helpers/graphql/parseQuery/parseQuery.test.ts +0 -32
  37. package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptors.test.ts +0 -53
  38. package/dist/src/utils/helpers/interceptors/callResponseInterceptors/callResponseInterceptors.test.ts +0 -262
  39. package/dist/src/utils/helpers/isPlainObject/isPlainObject.test.ts +0 -20
  40. package/dist/src/utils/helpers/isPrimitive/isPrimitive.test.ts +0 -26
  41. package/dist/src/utils/helpers/isRegExp/isRegExp.test.ts +0 -20
  42. package/dist/src/utils/helpers/url/convertWin32PathToUnix/convertWin32PathToUnix.test.ts +0 -21
  43. package/dist/src/utils/helpers/url/getUrlParts/getUrlParts.test.ts +0 -8
  44. package/dist/src/utils/helpers/url/removeLeadingAndTrailingSlashes/removeLeadingAndTrailingSlashes.test.ts +0 -10
  45. package/dist/src/utils/helpers/url/urlJoin/urlJoin.test.ts +0 -9
@@ -1,1452 +0,0 @@
1
- import type { CheckFunction, CheckMode } from '@/utils/types';
2
-
3
- import { resolveEntityValues } from './resolveEntityValues';
4
-
5
- describe('resolveEntityValues', () => {
6
- test('Should throw error if provided wrong checkMode', () => {
7
- expect(() => resolveEntityValues('wrongCheckMode' as CheckMode, '1', '1')).toThrow(
8
- new Error('Wrong checkMode')
9
- );
10
- });
11
-
12
- describe('"exists" checkMode', () => {
13
- describe('actual: primitive', () => {
14
- test('All primitive values should compare independent of their types', () => {
15
- expect(resolveEntityValues('exists', 12)).toBe(true);
16
- expect(resolveEntityValues('exists', true)).toBe(true);
17
- expect(resolveEntityValues('exists', null)).toBe(true);
18
- expect(resolveEntityValues('exists', 'string')).toBe(true);
19
- expect(resolveEntityValues('exists', 'undefined')).toBe(true);
20
- expect(resolveEntityValues('exists', undefined)).toBe(false);
21
- });
22
- });
23
-
24
- describe('actual: array', () => {
25
- test('Any array should be count as existed', () => {
26
- expect(resolveEntityValues('exists', ['true', '2', 'string'])).toBe(true);
27
- });
28
- });
29
-
30
- describe('actual: object', () => {
31
- test('Any object should be count as existed', () => {
32
- expect(
33
- resolveEntityValues('exists', { key1: 'value1', key2: 'value2', key3: 'value3' })
34
- ).toBe(true);
35
- });
36
- });
37
- });
38
-
39
- describe('"notExists" checkMode', () => {
40
- describe('actual: primitive', () => {
41
- test('All primitive values should compare independent of their types', () => {
42
- expect(resolveEntityValues('notExists', 12)).toBe(false);
43
- expect(resolveEntityValues('notExists', true)).toBe(false);
44
- expect(resolveEntityValues('notExists', null)).toBe(false);
45
- expect(resolveEntityValues('notExists', 'string')).toBe(false);
46
- expect(resolveEntityValues('notExists', 'undefined')).toBe(false);
47
- expect(resolveEntityValues('notExists', undefined)).toBe(true);
48
- });
49
- });
50
-
51
- describe('actual: array', () => {
52
- test('Any array should be count as existed', () => {
53
- expect(resolveEntityValues('notExists', ['true', '2', 'string'])).toBe(false);
54
- });
55
- });
56
-
57
- describe('actual: object', () => {
58
- test('Any object should be count as existed', () => {
59
- expect(
60
- resolveEntityValues('notExists', { key1: 'value1', key2: 'value2', key3: 'value3' })
61
- ).toBe(false);
62
- });
63
- });
64
- });
65
-
66
- describe('"equals" checkMode', () => {
67
- describe('actual: primitive, descriptor: primitive', () => {
68
- test('All primitive values should compare independent of their types', () => {
69
- expect(resolveEntityValues('equals', '12', 12)).toBe(true);
70
- expect(resolveEntityValues('equals', 'true', true)).toBe(true);
71
- expect(resolveEntityValues('equals', 'null', null)).toBe(true);
72
- expect(resolveEntityValues('equals', 'string', 'string')).toBe(true);
73
- expect(resolveEntityValues('equals', 'string2', 'string')).toBe(false);
74
- });
75
- });
76
- describe('actual: primitive, descriptor: array', () => {
77
- test('Should compare primitive actual value with every element in descriptor array value by "OR" logic', () => {
78
- expect(resolveEntityValues('equals', '12', [11, 12, '12'])).toBe(true);
79
- expect(resolveEntityValues('equals', '12', [11, 13, '13'])).toBe(false);
80
- });
81
- });
82
- describe('actual: primitive, descriptor: object', () => {
83
- test('All primitive values should not be equal object', () => {
84
- expect(resolveEntityValues('equals', 12, { key: 'value' })).toBe(false);
85
- expect(resolveEntityValues('equals', true, { key: 'value' })).toBe(false);
86
- expect(resolveEntityValues('equals', null, { key: 'value' })).toBe(false);
87
- expect(resolveEntityValues('equals', 'string', { key: 'value' })).toBe(false);
88
- });
89
- });
90
-
91
- describe('actual: array, descriptor: primitive', () => {
92
- test('Any array should not be equal primitive', () => {
93
- expect(resolveEntityValues('equals', [11, 12, '12'], '12')).toBe(false);
94
- });
95
- });
96
- describe('actual: array, descriptor: array', () => {
97
- test('Arrays with different length should not be count as equal', () => {
98
- expect(resolveEntityValues('equals', ['true', '2'], [true, 2, 'string'])).toBe(false);
99
- expect(resolveEntityValues('equals', ['true', '2', 'string'], [true, 2])).toBe(false);
100
- });
101
- test('Arrays should be full equal with nested objects (independent of primitive values types)', () => {
102
- expect(resolveEntityValues('equals', ['true', '2', 'string'], [true, 2, 'string'])).toBe(
103
- true
104
- );
105
- expect(
106
- resolveEntityValues(
107
- 'equals',
108
- [{ key1: 'value1', key2: '111' }],
109
- [{ key2: 111, key1: 'value1' }]
110
- )
111
- ).toBe(true);
112
- expect(
113
- resolveEntityValues(
114
- 'equals',
115
- [{ key1: 'value1', key2: 'value2' }],
116
- [{ key1: 'value1', key2: 'value2', key3: 'value3' }]
117
- )
118
- ).toBe(false);
119
- expect(
120
- resolveEntityValues(
121
- 'equals',
122
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }],
123
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }]
124
- )
125
- ).toBe(true);
126
- expect(
127
- resolveEntityValues(
128
- 'equals',
129
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }],
130
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' } }]
131
- )
132
- ).toBe(false);
133
- });
134
- });
135
- describe('actual: array, descriptor: object', () => {
136
- test('Any array should not be equal object', () => {
137
- expect(resolveEntityValues('equals', [], { key: 'value' })).toBe(false);
138
- expect(resolveEntityValues('equals', [true, 2, 'string'], { key: 'value' })).toBe(false);
139
- expect(
140
- resolveEntityValues('equals', [{ key: 'value' }, { key: 'value2' }], { key: 'value' })
141
- ).toBe(false);
142
- });
143
- });
144
-
145
- describe('actual: object, descriptor: primitive', () => {
146
- test('Any object should not be equal primitive', () => {
147
- expect(resolveEntityValues('equals', { key: 'value' }, 12)).toBe(false);
148
- expect(resolveEntityValues('equals', { key: 'value' }, true)).toBe(false);
149
- expect(resolveEntityValues('equals', { key: 'value' }, null)).toBe(false);
150
- expect(resolveEntityValues('equals', { key: 'value' }, 'string')).toBe(false);
151
- });
152
- });
153
- describe('actual: object, descriptor: array', () => {
154
- test('Should compare actual object value with every descriptor object value by "OR" logic', () => {
155
- expect(resolveEntityValues('equals', { key: 'value' }, [])).toBe(false);
156
- expect(resolveEntityValues('equals', { key: 'value' }, [true, 2, 'string'])).toBe(false);
157
- expect(
158
- resolveEntityValues('equals', { key: 'value' }, [{ key: 'value', key2: 'value2' }])
159
- ).toBe(false);
160
- expect(resolveEntityValues('equals', { key: 'value' }, [{ key: 'value' }])).toBe(true);
161
- expect(
162
- resolveEntityValues('equals', { user: { phone: '79091230102' } }, [
163
- { user: { phone: '7' } },
164
- { user: { phone: '8' } }
165
- ])
166
- ).toBe(false);
167
- expect(
168
- resolveEntityValues('equals', { user: { phone: '99091230102' } }, [
169
- { user: { phone: '99091230102' } },
170
- { user: { phone: '89091230102' } }
171
- ])
172
- ).toBe(true);
173
- });
174
- });
175
- describe('actual: object, descriptor: object', () => {
176
- test('Plain objects should compare by "actualValue is strictly equals descriptorValue" with nested objects', () => {
177
- expect(
178
- resolveEntityValues(
179
- 'equals',
180
- { key1: 'value1', key2: 'value2', key3: 'value3' },
181
- { key1: 'value1', key2: 'value2' }
182
- )
183
- ).toBe(false);
184
-
185
- expect(
186
- resolveEntityValues(
187
- 'equals',
188
- { key1: 'value1', key2: 'value2' },
189
- { key1: 'value1', key2: 'value2', key3: 'value3' }
190
- )
191
- ).toBe(false);
192
-
193
- expect(
194
- resolveEntityValues(
195
- 'equals',
196
- {
197
- key1: 'value1',
198
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' },
199
- key3: 'value3'
200
- },
201
- {
202
- key1: 'value1',
203
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' },
204
- key3: 'value3'
205
- }
206
- )
207
- ).toBe(true);
208
- });
209
- });
210
- });
211
-
212
- describe('"notEquals" checkMode', () => {
213
- describe('actual: primitive, descriptor: primitive', () => {
214
- test('All primitive values should compare independent of their types', () => {
215
- expect(resolveEntityValues('notEquals', 'true', true)).toBe(false);
216
- expect(resolveEntityValues('notEquals', 'null', null)).toBe(false);
217
- expect(resolveEntityValues('notEquals', '12', 12)).toBe(false);
218
- expect(resolveEntityValues('notEquals', 'string', 'string')).toBe(false);
219
- expect(resolveEntityValues('notEquals', 'string2', 'string')).toBe(true);
220
- });
221
- });
222
- describe('actual: primitive, descriptor: array', () => {
223
- test('Should compare primitive actual value with every element in descriptor array value by "OR" logic', () => {
224
- expect(resolveEntityValues('notEquals', '12', [11, 12, '12'])).toBe(false);
225
- expect(resolveEntityValues('notEquals', '12', [11, 13, '13'])).toBe(true);
226
- });
227
- });
228
- describe('actual: primitive, descriptor: object', () => {
229
- test('All primitive values should not be equal object', () => {
230
- expect(resolveEntityValues('notEquals', 12, { key: 'value' })).toBe(true);
231
- expect(resolveEntityValues('notEquals', true, { key: 'value' })).toBe(true);
232
- expect(resolveEntityValues('notEquals', null, { key: 'value' })).toBe(true);
233
- expect(resolveEntityValues('notEquals', 'string', { key: 'value' })).toBe(true);
234
- });
235
- });
236
-
237
- describe('actual: array, descriptor: primitive', () => {
238
- test('Any array should not be equal primitive', () => {
239
- expect(resolveEntityValues('notEquals', [11, 12, '12'], '12')).toBe(true);
240
- expect(resolveEntityValues('notEquals', [11, 13, '13'], '12')).toBe(true);
241
- });
242
- });
243
- describe('actual: array, descriptor: array', () => {
244
- test('Arrays with different length should be count as notEquals', () => {
245
- expect(resolveEntityValues('notEquals', ['true', '2'], [true, 2, 'string'])).toBe(true);
246
- expect(resolveEntityValues('notEquals', ['true', '2', 'string'], [true, 2])).toBe(true);
247
- });
248
- test('Arrays should be full equal with nested objects (independent of primitive values types)', () => {
249
- expect(resolveEntityValues('notEquals', ['true', '2', 'string'], [true, 2, 'string'])).toBe(
250
- false
251
- );
252
- expect(
253
- resolveEntityValues(
254
- 'notEquals',
255
- [{ key1: 'value1', key2: '111' }],
256
- [{ key2: 111, key1: 'value1' }]
257
- )
258
- ).toBe(false);
259
- expect(
260
- resolveEntityValues(
261
- 'notEquals',
262
- [{ key1: 'value1', key2: 'value2' }],
263
- [{ key1: 'value1', key2: 'value2', key3: 'value3' }]
264
- )
265
- ).toBe(true);
266
- expect(
267
- resolveEntityValues(
268
- 'notEquals',
269
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }],
270
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }]
271
- )
272
- ).toBe(false);
273
- expect(
274
- resolveEntityValues(
275
- 'notEquals',
276
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }],
277
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' } }]
278
- )
279
- ).toBe(true);
280
- });
281
- });
282
- describe('actual: array, descriptor: object', () => {
283
- test('Any array should not be equal object', () => {
284
- expect(resolveEntityValues('notEquals', [], { key: 'value' })).toBe(true);
285
- expect(resolveEntityValues('notEquals', [true, 2, 'string'], { key: 'value' })).toBe(true);
286
- expect(resolveEntityValues('notEquals', [{ key: 'value' }], { key: 'value' })).toBe(true);
287
- });
288
- });
289
-
290
- describe('actual: object, descriptor: primitive', () => {
291
- test('Any object should not be equal primitive', () => {
292
- expect(resolveEntityValues('notEquals', { key: 'value' }, 12)).toBe(true);
293
- expect(resolveEntityValues('notEquals', { key: 'value' }, true)).toBe(true);
294
- expect(resolveEntityValues('notEquals', { key: 'value' }, null)).toBe(true);
295
- expect(resolveEntityValues('notEquals', { key: 'value' }, 'string')).toBe(true);
296
- });
297
- });
298
- describe('actual: object, descriptor: array', () => {
299
- test('Should compare actual object value with every descriptor object value by "OR" logic', () => {
300
- expect(resolveEntityValues('notEquals', { key: 'value' }, [])).toBe(true);
301
- expect(resolveEntityValues('notEquals', { key: 'value' }, [true, 2, 'string'])).toBe(true);
302
- expect(
303
- resolveEntityValues('notEquals', { key: 'value' }, [{ key: 'value', key2: 'value2' }])
304
- ).toBe(true);
305
- expect(resolveEntityValues('notEquals', { key: 'value' }, [{ key: 'value' }])).toBe(false);
306
- expect(
307
- resolveEntityValues('notEquals', { user: { phone: '79091230102' } }, [
308
- { user: { phone: '7' } },
309
- { user: { phone: '8' } }
310
- ])
311
- ).toBe(true);
312
- expect(
313
- resolveEntityValues('notEquals', { user: { phone: '99091230102' } }, [
314
- { user: { phone: '99091230102' } },
315
- { user: { phone: '89091230102' } }
316
- ])
317
- ).toBe(false);
318
- });
319
- });
320
- describe('actual: object, descriptor: object', () => {
321
- test('Plain objects should compare by "actualValue is strictly equals descriptorValue" with nested objects', () => {
322
- expect(
323
- resolveEntityValues(
324
- 'notEquals',
325
- { key1: 'value1', key2: 'value2', key3: 'value3' },
326
- { key1: 'value1', key2: 'value2' }
327
- )
328
- ).toBe(true);
329
-
330
- expect(
331
- resolveEntityValues(
332
- 'notEquals',
333
- { key1: 'value1', key2: 'value2' },
334
- { key1: 'value1', key2: 'value2', key3: 'value3' }
335
- )
336
- ).toBe(true);
337
-
338
- expect(
339
- resolveEntityValues(
340
- 'notEquals',
341
- {
342
- key1: 'value1',
343
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue22' },
344
- key3: 'value3'
345
- },
346
- {
347
- key1: 'value1',
348
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' },
349
- key3: 'value3'
350
- }
351
- )
352
- ).toBe(true);
353
-
354
- expect(
355
- resolveEntityValues(
356
- 'notEquals',
357
- {
358
- key1: 'value1',
359
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' },
360
- key3: 'value3'
361
- },
362
- {
363
- key1: 'value1',
364
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' },
365
- key3: 'value3'
366
- }
367
- )
368
- ).toBe(false);
369
- });
370
- });
371
- });
372
-
373
- describe('"includes" checkMode', () => {
374
- describe('actual: primitive, descriptor: primitive', () => {
375
- test('All primitive values should compare independent of their types', () => {
376
- expect(resolveEntityValues('includes', '312', 12)).toBe(true);
377
- expect(resolveEntityValues('includes', 'truee', true)).toBe(true);
378
- expect(resolveEntityValues('includes', '1null', null)).toBe(true);
379
- expect(resolveEntityValues('includes', 'string', 'string')).toBe(true);
380
- expect(resolveEntityValues('includes', 'string', 'string2')).toBe(false);
381
- });
382
- });
383
- describe('actual: primitive, descriptor: array', () => {
384
- test('Should compare primitive actual value with every element in descriptor array value by "OR" logic', () => {
385
- expect(resolveEntityValues('includes', '123', [11, 12, '13'])).toBe(true);
386
- expect(resolveEntityValues('includes', '12', [111, 133, '134'])).toBe(false);
387
- });
388
- });
389
- describe('actual: primitive, descriptor: object', () => {
390
- test('All primitive values should not be count as included in object', () => {
391
- expect(resolveEntityValues('includes', 12, { key: '12' })).toBe(false);
392
- expect(resolveEntityValues('includes', true, { true: true })).toBe(false);
393
- expect(resolveEntityValues('includes', null, { key: 'value' })).toBe(false);
394
- expect(resolveEntityValues('includes', 'string', { key: 'value' })).toBe(false);
395
- });
396
- });
397
-
398
- describe('actual: array, descriptor: primitive', () => {
399
- test('Any array should not be count as included in primitive', () => {
400
- expect(resolveEntityValues('includes', [113, 1222, '312'], '12')).toBe(false);
401
- expect(resolveEntityValues('includes', [111, 133, '133'], '12')).toBe(false);
402
- });
403
- });
404
- describe('actual: array, descriptor: array', () => {
405
- test('Arrays with different length should not be count as includes', () => {
406
- expect(resolveEntityValues('includes', ['true', '2'], [true, 2, 'string'])).toBe(false);
407
- expect(resolveEntityValues('includes', ['true', '2', 'string'], [true, 2])).toBe(false);
408
- });
409
- test('Arrays should be fully checked for "includes" with nested objects (independent of primitive values types)', () => {
410
- expect(
411
- resolveEntityValues('includes', ['truee', '32', '53string'], [true, 2, 'string'])
412
- ).toBe(true);
413
- expect(
414
- resolveEntityValues(
415
- 'includes',
416
- [{ key1: 'value122', key2: '31113' }],
417
- [{ key2: 111, key1: 'value1' }]
418
- )
419
- ).toBe(true);
420
- expect(
421
- resolveEntityValues(
422
- 'includes',
423
- [{ key1: 'value12', key2: '1value2' }],
424
- [{ key1: 'value1', key2: 'value2', key3: 'value3' }]
425
- )
426
- ).toBe(false);
427
- expect(
428
- resolveEntityValues(
429
- 'includes',
430
- [{ key1: 'value12', key2: { nestedKey1: '2nestedValue1' } }],
431
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }]
432
- )
433
- ).toBe(true);
434
- expect(
435
- resolveEntityValues(
436
- 'includes',
437
- [{ key1: 'value12', key2: { nestedKey1: '2nestedValue1' } }],
438
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' } }]
439
- )
440
- ).toBe(false);
441
- });
442
- });
443
- describe('actual: array, descriptor: object', () => {
444
- test('Any array should not be count as included in object', () => {
445
- expect(resolveEntityValues('includes', [], { key: 'value' })).toBe(false);
446
- expect(resolveEntityValues('includes', [true, 2, 'value'], { key: 'value' })).toBe(false);
447
- expect(resolveEntityValues('includes', [{ key: 'value33' }], { key: 'value' })).toBe(false);
448
- });
449
- });
450
-
451
- describe('actual: object, descriptor: primitive', () => {
452
- test('Any object should not be count as included in primitive', () => {
453
- expect(resolveEntityValues('includes', { key: 'value' }, 12)).toBe(false);
454
- expect(resolveEntityValues('includes', { key: 'value' }, true)).toBe(false);
455
- expect(resolveEntityValues('includes', { key: 'value' }, null)).toBe(false);
456
- expect(resolveEntityValues('includes', { key: 'value' }, 'string')).toBe(false);
457
- });
458
- });
459
- describe('actual: object, descriptor: array', () => {
460
- test('Should compare actual object value with every descriptor object value by "OR" logic', () => {
461
- expect(resolveEntityValues('includes', { key: 'value' }, [])).toBe(false);
462
- expect(resolveEntityValues('includes', { key: 'value' }, [true, 2, 'string'])).toBe(false);
463
- expect(
464
- resolveEntityValues('includes', { key: '1value2' }, [{ key: 'value', key2: 'value2' }])
465
- ).toBe(false);
466
- expect(resolveEntityValues('includes', { key: '1value2' }, [{ key: 'value' }])).toBe(true);
467
- expect(
468
- resolveEntityValues('includes', { user: { phone: '99091230102' } }, [
469
- { user: { phone: '7' } },
470
- { user: { phone: '8' } }
471
- ])
472
- ).toBe(false);
473
- expect(
474
- resolveEntityValues('includes', { user: { phone: '79091230102' } }, [
475
- { user: { phone: '7' } },
476
- { user: { phone: '8' } }
477
- ])
478
- ).toBe(true);
479
- });
480
- });
481
- describe('actual: object, descriptor: object', () => {
482
- test('Plain objects should compare by "actualValue is strictly equals descriptorValue" with nested objects', () => {
483
- expect(
484
- resolveEntityValues(
485
- 'includes',
486
- { key1: 'value12', key2: 'value23', key3: 'value34' },
487
- { key1: 'value1', key2: 'value2' }
488
- )
489
- ).toBe(false);
490
-
491
- expect(
492
- resolveEntityValues(
493
- 'includes',
494
- { key1: 'value12', key2: 'value23' },
495
- { key1: 'value1', key2: 'value2', key3: 'value3' }
496
- )
497
- ).toBe(false);
498
-
499
- expect(
500
- resolveEntityValues(
501
- 'includes',
502
- {
503
- key1: 'value12',
504
- key2: { nestedKey1: 'nestedValue12', nestedKey2: 'nestedValue23' },
505
- key3: 'value34'
506
- },
507
- { key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }
508
- )
509
- ).toBe(false);
510
-
511
- expect(
512
- resolveEntityValues(
513
- 'includes',
514
- {
515
- key1: 'value12',
516
- key2: { nestedKey1: 'nestedValue12', nestedKey2: 'nestedValue23' },
517
- key3: 'value34'
518
- },
519
- {
520
- key1: 'value1',
521
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' },
522
- key3: 'value3'
523
- }
524
- )
525
- ).toBe(true);
526
- });
527
- });
528
- });
529
-
530
- describe('"notIncludes" checkMode', () => {
531
- describe('actual: primitive, descriptor: primitive', () => {
532
- test('All primitive values should compare independent of their types', () => {
533
- expect(resolveEntityValues('notIncludes', '312', 12)).toBe(false);
534
- expect(resolveEntityValues('notIncludes', 'truee', true)).toBe(false);
535
- expect(resolveEntityValues('notIncludes', '1null', null)).toBe(false);
536
- expect(resolveEntityValues('notIncludes', 'string', 'string')).toBe(false);
537
- expect(resolveEntityValues('notIncludes', 'string', 'string2')).toBe(true);
538
- });
539
- });
540
- describe('actual: primitive, descriptor: array', () => {
541
- test('Should compare primitive actual value with every element in descriptor array value by "OR" logic', () => {
542
- expect(resolveEntityValues('notIncludes', '123', [11, 12, '13'])).toBe(false);
543
- expect(resolveEntityValues('notIncludes', '12', [111, 133, '134'])).toBe(true);
544
- });
545
- });
546
- describe('actual: primitive, descriptor: object', () => {
547
- test('All primitive values should not be count as included in object', () => {
548
- expect(resolveEntityValues('notIncludes', 12, { key: '12' })).toBe(true);
549
- expect(resolveEntityValues('notIncludes', true, { true: true })).toBe(true);
550
- expect(resolveEntityValues('notIncludes', null, { key: 'value' })).toBe(true);
551
- expect(resolveEntityValues('notIncludes', 'string', { key: 'value' })).toBe(true);
552
- });
553
- });
554
-
555
- describe('actual: array, descriptor: primitive', () => {
556
- test('Any array should not be count as included in primitive', () => {
557
- expect(resolveEntityValues('notIncludes', [113, 1222, '312'], '12')).toBe(true);
558
- expect(resolveEntityValues('notIncludes', [111, 133, '133'], '12')).toBe(true);
559
- });
560
- });
561
- describe('actual: array, descriptor: array', () => {
562
- test('Arrays with different length should be count as notIncludes', () => {
563
- expect(resolveEntityValues('notIncludes', ['true', '2'], [true, 2, 'string'])).toBe(true);
564
- expect(resolveEntityValues('notIncludes', ['true', '2', 'string'], [true, 2])).toBe(true);
565
- });
566
- test('Arrays should be fully checked for "notIncludes" with nested objects (independent of primitive values types)', () => {
567
- expect(
568
- resolveEntityValues('notIncludes', ['truee', '32', '53string'], [true, 2, 'string'])
569
- ).toBe(false);
570
- expect(
571
- resolveEntityValues(
572
- 'notIncludes',
573
- [{ key1: 'value122', key2: '31113' }],
574
- [{ key2: 111, key1: 'value1' }]
575
- )
576
- ).toBe(false);
577
- expect(
578
- resolveEntityValues(
579
- 'notIncludes',
580
- [{ key1: 'value12', key2: '1value2' }],
581
- [{ key1: 'value1', key2: 'value2', key3: 'value3' }]
582
- )
583
- ).toBe(true);
584
- expect(
585
- resolveEntityValues(
586
- 'notIncludes',
587
- [{ key1: 'value12', key2: { nestedKey1: '2nestedValue1' } }],
588
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }]
589
- )
590
- ).toBe(false);
591
- expect(
592
- resolveEntityValues(
593
- 'notIncludes',
594
- [{ key1: 'value12', key2: { nestedKey1: '2nestedValue1' } }],
595
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' } }]
596
- )
597
- ).toBe(true);
598
- });
599
- });
600
- describe('actual: array, descriptor: object', () => {
601
- test('Any array should not be count as included in object', () => {
602
- expect(resolveEntityValues('notIncludes', [], { key: 'value' })).toBe(true);
603
- expect(resolveEntityValues('notIncludes', [true, 2, 'value'], { key: 'value' })).toBe(true);
604
- expect(resolveEntityValues('notIncludes', [{ key: 'value33' }], { key: 'value' })).toBe(
605
- true
606
- );
607
- });
608
- });
609
-
610
- describe('actual: object, descriptor: primitive', () => {
611
- test('Any object should not be count as included in primitive', () => {
612
- expect(resolveEntityValues('notIncludes', { key: 'value' }, 12)).toBe(true);
613
- expect(resolveEntityValues('notIncludes', { key: 'value' }, true)).toBe(true);
614
- expect(resolveEntityValues('notIncludes', { key: 'value' }, null)).toBe(true);
615
- expect(resolveEntityValues('notIncludes', { key: 'value' }, 'string')).toBe(true);
616
- });
617
- });
618
- describe('actual: object, descriptor: array', () => {
619
- test('Should compare actual object value with every descriptor object value by "OR" logic', () => {
620
- expect(resolveEntityValues('notIncludes', { key: 'value' }, [])).toBe(true);
621
- expect(resolveEntityValues('notIncludes', { key: 'value' }, [true, 2, 'string'])).toBe(
622
- true
623
- );
624
- expect(
625
- resolveEntityValues('notIncludes', { key: '1value2' }, [{ key: 'value', key2: 'value2' }])
626
- ).toBe(true);
627
- expect(resolveEntityValues('notIncludes', { key: '1value2' }, [{ key: 'value' }])).toBe(
628
- false
629
- );
630
- expect(
631
- resolveEntityValues('notIncludes', { user: { phone: '99091230102' } }, [
632
- { user: { phone: '7' } },
633
- { user: { phone: '8' } }
634
- ])
635
- ).toBe(true);
636
- expect(
637
- resolveEntityValues('notIncludes', { user: { phone: '79091230102' } }, [
638
- { user: { phone: '7' } },
639
- { user: { phone: '8' } }
640
- ])
641
- ).toBe(false);
642
- });
643
- });
644
- describe('actual: object, descriptor: object', () => {
645
- test('Plain objects should compare by "actualValue is strictly equals descriptorValue" with nested objects', () => {
646
- expect(
647
- resolveEntityValues(
648
- 'notIncludes',
649
- { key1: 'value12', key2: 'value23', key3: 'value34' },
650
- { key1: 'value1', key2: 'value2' }
651
- )
652
- ).toBe(true);
653
-
654
- expect(
655
- resolveEntityValues(
656
- 'notIncludes',
657
- { key1: 'value12', key2: 'value23' },
658
- { key1: 'value1', key2: 'value2', key3: 'value3' }
659
- )
660
- ).toBe(true);
661
-
662
- expect(
663
- resolveEntityValues(
664
- 'notIncludes',
665
- {
666
- key1: 'value12',
667
- key2: { nestedKey1: 'nestedValue12', nestedKey2: 'nestedValue23' },
668
- key3: 'value34'
669
- },
670
- { key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }
671
- )
672
- ).toBe(true);
673
-
674
- expect(
675
- resolveEntityValues(
676
- 'notIncludes',
677
- {
678
- key1: 'value12',
679
- key2: { nestedKey1: 'nestedValue12', nestedKey2: 'nestedValue23' },
680
- key3: 'value34'
681
- },
682
- {
683
- key1: 'value12',
684
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' },
685
- key3: 'value3'
686
- }
687
- )
688
- ).toBe(false);
689
- });
690
- });
691
- });
692
-
693
- describe('"startsWith" checkMode', () => {
694
- describe('actual: primitive, descriptor: primitive', () => {
695
- test('All primitive values should compare independent of their types', () => {
696
- expect(resolveEntityValues('startsWith', '123', 12)).toBe(true);
697
- expect(resolveEntityValues('startsWith', 'truee', true)).toBe(true);
698
- expect(resolveEntityValues('startsWith', 'null1', null)).toBe(true);
699
- expect(resolveEntityValues('startsWith', 'string', 'string')).toBe(true);
700
- expect(resolveEntityValues('startsWith', 'string', 'string2')).toBe(false);
701
- });
702
- });
703
- describe('actual: primitive, descriptor: array', () => {
704
- test('Should compare primitive actual value with every element in descriptor array value by "OR" logic', () => {
705
- expect(resolveEntityValues('startsWith', '123', [11, 12, '13'])).toBe(true);
706
- expect(resolveEntityValues('startsWith', '12', [111, 133, '134'])).toBe(false);
707
- });
708
- });
709
- describe('actual: primitive, descriptor: object', () => {
710
- test('All primitive values should not be count as start of an object', () => {
711
- expect(resolveEntityValues('startsWith', 12, { key: '12' })).toBe(false);
712
- expect(resolveEntityValues('startsWith', true, { true: true })).toBe(false);
713
- expect(resolveEntityValues('startsWith', null, { key: 'value' })).toBe(false);
714
- expect(resolveEntityValues('startsWith', 'string', { key: 'value' })).toBe(false);
715
- });
716
- });
717
-
718
- describe('actual: array, descriptor: primitive', () => {
719
- test('Any array should not be count as start of primitive', () => {
720
- expect(resolveEntityValues('startsWith', [113, 1222, '312'], '12')).toBe(false);
721
- expect(resolveEntityValues('startsWith', [111, 133, '133'], '12')).toBe(false);
722
- });
723
- });
724
- describe('actual: array, descriptor: array', () => {
725
- test('Arrays with different length should not be count as startsWith=', () => {
726
- expect(resolveEntityValues('startsWith', ['true', '2'], [true, 2, 'string'])).toBe(false);
727
- expect(resolveEntityValues('startsWith', ['true', '2', 'string'], [true, 2])).toBe(false);
728
- });
729
- test('Arrays should be fully checked for "startsWith" with nested objects (independent of primitive values types)', () => {
730
- expect(
731
- resolveEntityValues('startsWith', ['truee', '23', 'string12'], [true, 2, 'string'])
732
- ).toBe(true);
733
- expect(
734
- resolveEntityValues(
735
- 'startsWith',
736
- [{ key1: 'value122', key2: '1113' }],
737
- [{ key2: 111, key1: 'value1' }]
738
- )
739
- ).toBe(true);
740
- expect(
741
- resolveEntityValues(
742
- 'startsWith',
743
- [{ key1: 'value12', key2: 'value23' }],
744
- [{ key1: 'value1', key2: 'value2', key3: 'value3' }]
745
- )
746
- ).toBe(false);
747
- expect(
748
- resolveEntityValues(
749
- 'startsWith',
750
- [{ key1: 'value12', key2: { nestedKey1: 'nestedValue12' } }],
751
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }]
752
- )
753
- ).toBe(true);
754
- expect(
755
- resolveEntityValues(
756
- 'startsWith',
757
- [{ key1: 'value12', key2: { nestedKey1: 'nestedValue12' } }],
758
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' } }]
759
- )
760
- ).toBe(false);
761
- });
762
- });
763
- describe('actual: array, descriptor: object', () => {
764
- test('Any array should not be count as start of an object', () => {
765
- expect(resolveEntityValues('startsWith', [], { key: 'value' })).toBe(false);
766
- expect(resolveEntityValues('startsWith', [true, 2, 'value'], { key: 'value' })).toBe(false);
767
- expect(resolveEntityValues('startsWith', [{ key: 'value33' }], { key: 'value' })).toBe(
768
- false
769
- );
770
- });
771
- });
772
-
773
- describe('actual: object, descriptor: primitive', () => {
774
- test('Any object should not be count as started with primitive', () => {
775
- expect(resolveEntityValues('startsWith', { key: 'value' }, 12)).toBe(false);
776
- expect(resolveEntityValues('startsWith', { key: 'value' }, true)).toBe(false);
777
- expect(resolveEntityValues('startsWith', { key: 'value' }, null)).toBe(false);
778
- expect(resolveEntityValues('startsWith', { key: 'value' }, 'string')).toBe(false);
779
- });
780
- });
781
- describe('actual: object, descriptor: array', () => {
782
- test('Should compare actual object value with every descriptor object value by "OR" logic', () => {
783
- expect(resolveEntityValues('startsWith', { key: 'value' }, [])).toBe(false);
784
- expect(resolveEntityValues('startsWith', { key: 'value' }, [true, 2, 'string'])).toBe(
785
- false
786
- );
787
- expect(
788
- resolveEntityValues('startsWith', { key: 'value12' }, [{ key: 'value', key2: 'value2' }])
789
- ).toBe(false);
790
- expect(resolveEntityValues('startsWith', { key: 'value12' }, [{ key: 'value' }])).toBe(
791
- true
792
- );
793
- expect(
794
- resolveEntityValues('startsWith', { user: { phone: '99091230102' } }, [
795
- { user: { phone: '7' } },
796
- { user: { phone: '8' } }
797
- ])
798
- ).toBe(false);
799
- expect(
800
- resolveEntityValues('startsWith', { user: { phone: '79091230102' } }, [
801
- { user: { phone: '7' } },
802
- { user: { phone: '8' } }
803
- ])
804
- ).toBe(true);
805
- });
806
- });
807
- describe('actual: object, descriptor: object', () => {
808
- test('Plain objects should compare by "actualValue is strictly equals descriptorValue" with nested objects', () => {
809
- expect(
810
- resolveEntityValues(
811
- 'startsWith',
812
- { key1: 'value12', key2: 'value23', key3: 'value34' },
813
- { key1: 'value1', key2: 'value2' }
814
- )
815
- ).toBe(false);
816
-
817
- expect(
818
- resolveEntityValues(
819
- 'startsWith',
820
- { key1: 'value12', key2: 'value23' },
821
- { key1: 'value1', key2: 'value2', key3: 'value3' }
822
- )
823
- ).toBe(false);
824
-
825
- expect(
826
- resolveEntityValues(
827
- 'startsWith',
828
- {
829
- key1: 'value12',
830
- key2: { nestedKey1: 'nestedValue12', nestedKey2: 'nestedValue23' },
831
- key3: 'value34'
832
- },
833
- { key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }
834
- )
835
- ).toBe(false);
836
-
837
- expect(
838
- resolveEntityValues(
839
- 'startsWith',
840
- {
841
- key1: 'value12',
842
- key2: { nestedKey1: 'nestedValue12', nestedKey2: 'nestedValue23' },
843
- key3: 'value34'
844
- },
845
- {
846
- key1: 'value1',
847
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' },
848
- key3: 'value3'
849
- }
850
- )
851
- ).toBe(true);
852
- });
853
- });
854
- });
855
-
856
- describe('"notStartsWith" checkMode', () => {
857
- describe('actual: primitive, descriptor: primitive', () => {
858
- test('All primitive values should compare independent of their types', () => {
859
- expect(resolveEntityValues('notStartsWith', '123', 12)).toBe(false);
860
- expect(resolveEntityValues('notStartsWith', 'truee', true)).toBe(false);
861
- expect(resolveEntityValues('notStartsWith', 'null1', null)).toBe(false);
862
- expect(resolveEntityValues('notStartsWith', 'string', 'string')).toBe(false);
863
- expect(resolveEntityValues('notStartsWith', 'string', 'string2')).toBe(true);
864
- });
865
- });
866
- describe('actual: primitive, descriptor: array', () => {
867
- test('Should compare primitive actual value with every element in descriptor array value by "OR" logic', () => {
868
- expect(resolveEntityValues('notStartsWith', '123', [11, 12, '13'])).toBe(false);
869
- expect(resolveEntityValues('notStartsWith', '12', [111, 133, '134'])).toBe(true);
870
- });
871
- });
872
- describe('actual: primitive, descriptor: object', () => {
873
- test('All primitive values should not be count as start of an object', () => {
874
- expect(resolveEntityValues('notStartsWith', 12, { key: '12' })).toBe(true);
875
- expect(resolveEntityValues('notStartsWith', true, { true: true })).toBe(true);
876
- expect(resolveEntityValues('notStartsWith', null, { key: 'value' })).toBe(true);
877
- expect(resolveEntityValues('notStartsWith', 'string', { key: 'value' })).toBe(true);
878
- });
879
- });
880
-
881
- describe('actual: array, descriptor: primitive', () => {
882
- test('Any array should not be count as start of primitive', () => {
883
- expect(resolveEntityValues('notStartsWith', [113, 1222, '312'], '12')).toBe(true);
884
- expect(resolveEntityValues('notStartsWith', [111, 133, '133'], '12')).toBe(true);
885
- });
886
- });
887
- describe('actual: array, descriptor: array', () => {
888
- test('Arrays with different length should be count as notStartsWith', () => {
889
- expect(resolveEntityValues('notStartsWith', ['true', '2'], [true, 2, 'string'])).toBe(true);
890
- expect(resolveEntityValues('notStartsWith', ['true', '2', 'string'], [true, 2])).toBe(true);
891
- });
892
- test('Arrays should be fully checked for "notStartsWith" with nested objects (independent of primitive values types)', () => {
893
- expect(
894
- resolveEntityValues('notStartsWith', ['truee', '23', 'string12'], [true, 2, 'string'])
895
- ).toBe(false);
896
- expect(
897
- resolveEntityValues(
898
- 'notStartsWith',
899
- [{ key1: 'value122', key2: '1113' }],
900
- [{ key2: 111, key1: 'value1' }]
901
- )
902
- ).toBe(false);
903
- expect(
904
- resolveEntityValues(
905
- 'notStartsWith',
906
- [{ key1: 'value12', key2: 'value23' }],
907
- [{ key1: 'value1', key2: 'value2', key3: 'value3' }]
908
- )
909
- ).toBe(true);
910
- expect(
911
- resolveEntityValues(
912
- 'notStartsWith',
913
- [{ key1: 'value12', key2: { nestedKey1: 'nestedValue12' } }],
914
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }]
915
- )
916
- ).toBe(false);
917
- expect(
918
- resolveEntityValues(
919
- 'notStartsWith',
920
- [{ key1: 'value12', key2: { nestedKey1: 'nestedValue12' } }],
921
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' } }]
922
- )
923
- ).toBe(true);
924
- });
925
- });
926
- describe('actual: array, descriptor: object', () => {
927
- test('Any array should not be count as start of object', () => {
928
- expect(resolveEntityValues('notStartsWith', [], { key: 'value' })).toBe(true);
929
- expect(resolveEntityValues('notStartsWith', [true, 2, 'value'], { key: 'value' })).toBe(
930
- true
931
- );
932
- expect(resolveEntityValues('notStartsWith', [{ key: 'value33' }], { key: 'value' })).toBe(
933
- true
934
- );
935
- });
936
- });
937
-
938
- describe('actual: object, descriptor: primitive', () => {
939
- test('Any object should not be count as started with primitive', () => {
940
- expect(resolveEntityValues('notStartsWith', { key: 'value' }, 12)).toBe(true);
941
- expect(resolveEntityValues('notStartsWith', { key: 'value' }, true)).toBe(true);
942
- expect(resolveEntityValues('notStartsWith', { key: 'value' }, null)).toBe(true);
943
- expect(resolveEntityValues('notStartsWith', { key: 'value' }, 'string')).toBe(true);
944
- });
945
- });
946
- describe('actual: object, descriptor: array', () => {
947
- test('Should compare actual object value with every descriptor object value by "OR" logic', () => {
948
- expect(resolveEntityValues('notStartsWith', { key: 'value' }, [])).toBe(true);
949
- expect(resolveEntityValues('notStartsWith', { key: 'value' }, [true, 2, 'string'])).toBe(
950
- true
951
- );
952
- expect(
953
- resolveEntityValues('notStartsWith', { key: 'value12' }, [
954
- { key: 'value', key2: 'value2' }
955
- ])
956
- ).toBe(true);
957
- expect(resolveEntityValues('notStartsWith', { key: 'value12' }, [{ key: 'value' }])).toBe(
958
- false
959
- );
960
- expect(
961
- resolveEntityValues('notStartsWith', { user: { phone: '99091230102' } }, [
962
- { user: { phone: '7' } },
963
- { user: { phone: '8' } }
964
- ])
965
- ).toBe(true);
966
- expect(
967
- resolveEntityValues('notStartsWith', { user: { phone: '79091230102' } }, [
968
- { user: { phone: '7' } },
969
- { user: { phone: '8' } }
970
- ])
971
- ).toBe(false);
972
- });
973
- });
974
- describe('actual: object, descriptor: object', () => {
975
- test('Plain objects should compare by "actualValue is strictly equals descriptorValue" with nested objects', () => {
976
- expect(
977
- resolveEntityValues(
978
- 'notStartsWith',
979
- { key1: 'value12', key2: 'value23', key3: 'value34' },
980
- { key1: 'value1', key2: 'value2' }
981
- )
982
- ).toBe(true);
983
-
984
- expect(
985
- resolveEntityValues(
986
- 'notStartsWith',
987
- { key1: 'value12', key2: 'value23' },
988
- { key1: 'value1', key2: 'value2', key3: 'value3' }
989
- )
990
- ).toBe(true);
991
-
992
- expect(
993
- resolveEntityValues(
994
- 'notStartsWith',
995
- {
996
- key1: 'value12',
997
- key2: { nestedKey1: 'nestedValue12', nestedKey2: 'nestedValue23' },
998
- key3: 'value34'
999
- },
1000
- { key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }
1001
- )
1002
- ).toBe(true);
1003
-
1004
- expect(
1005
- resolveEntityValues(
1006
- 'notStartsWith',
1007
- {
1008
- key1: 'value12',
1009
- key2: { nestedKey1: 'nestedValue12', nestedKey2: 'nestedValue23' },
1010
- key3: 'value34'
1011
- },
1012
- {
1013
- key1: 'value1',
1014
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' },
1015
- key3: 'value3'
1016
- }
1017
- )
1018
- ).toBe(false);
1019
- });
1020
- });
1021
- });
1022
-
1023
- describe('"endsWith" checkMode', () => {
1024
- describe('actual: primitive, descriptor: primitive', () => {
1025
- test('All primitive values should compare independent of their types', () => {
1026
- expect(resolveEntityValues('endsWith', '312', 12)).toBe(true);
1027
- expect(resolveEntityValues('endsWith', '1true', true)).toBe(true);
1028
- expect(resolveEntityValues('endsWith', '1null', null)).toBe(true);
1029
- expect(resolveEntityValues('endsWith', 'string', 'string')).toBe(true);
1030
- expect(resolveEntityValues('endsWith', 'string', 'string2')).toBe(false);
1031
- });
1032
- });
1033
- describe('actual: primitive, descriptor: array', () => {
1034
- test('Should compare primitive actual value with every element in descriptor array value by "OR" logic', () => {
1035
- expect(resolveEntityValues('endsWith', '312', [11, 12, '13'])).toBe(true);
1036
- expect(resolveEntityValues('endsWith', '12', [111, 133, '134'])).toBe(false);
1037
- });
1038
- });
1039
- describe('actual: primitive, descriptor: object', () => {
1040
- test('All primitive values should not be count as end of an object', () => {
1041
- expect(resolveEntityValues('endsWith', 12, { key: '12' })).toBe(false);
1042
- expect(resolveEntityValues('endsWith', true, { true: true })).toBe(false);
1043
- expect(resolveEntityValues('endsWith', null, { key: 'value' })).toBe(false);
1044
- expect(resolveEntityValues('endsWith', 'string', { key: 'value' })).toBe(false);
1045
- });
1046
- });
1047
-
1048
- describe('actual: array, descriptor: primitive', () => {
1049
- test('Any array should not be count as end of primitive', () => {
1050
- expect(resolveEntityValues('endsWith', [113, 1222, '312'], '12')).toBe(false);
1051
- expect(resolveEntityValues('endsWith', [111, 133, '133'], '12')).toBe(false);
1052
- });
1053
- });
1054
- describe('actual: array, descriptor: array', () => {
1055
- test('Arrays with different length should not be count as endsWith', () => {
1056
- expect(resolveEntityValues('endsWith', ['true', '2'], [true, 2, 'string'])).toBe(false);
1057
- expect(resolveEntityValues('endsWith', ['true', '2', 'string'], [true, 2])).toBe(false);
1058
- });
1059
- test('Arrays should be fully checked for "endsWith" with nested objects (independent of primitive values types)', () => {
1060
- expect(
1061
- resolveEntityValues('endsWith', ['1true', '32', '12string'], [true, 2, 'string'])
1062
- ).toBe(true);
1063
- expect(
1064
- resolveEntityValues(
1065
- 'endsWith',
1066
- [{ key1: '22value1', key2: '3111' }],
1067
- [{ key2: 111, key1: 'value1' }]
1068
- )
1069
- ).toBe(true);
1070
- expect(
1071
- resolveEntityValues(
1072
- 'endsWith',
1073
- [{ key1: '2value1', key2: '3value2' }],
1074
- [{ key1: 'value1', key2: 'value2', key3: 'value3' }]
1075
- )
1076
- ).toBe(false);
1077
- expect(
1078
- resolveEntityValues(
1079
- 'endsWith',
1080
- [{ key1: '2value1', key2: { nestedKey1: '2nestedValue1' } }],
1081
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }]
1082
- )
1083
- ).toBe(true);
1084
- expect(
1085
- resolveEntityValues(
1086
- 'endsWith',
1087
- [{ key1: '2value1', key2: { nestedKey1: '2nestedValue1' } }],
1088
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' } }]
1089
- )
1090
- ).toBe(false);
1091
- });
1092
- });
1093
- describe('actual: array, descriptor: object', () => {
1094
- test('Any array should not be count as end of object', () => {
1095
- expect(resolveEntityValues('endsWith', [], { key: 'value' })).toBe(false);
1096
- expect(resolveEntityValues('endsWith', [true, 2, 'value'], { key: 'value' })).toBe(false);
1097
- expect(resolveEntityValues('endsWith', [{ key: '33value' }], { key: 'value' })).toBe(false);
1098
- });
1099
- });
1100
-
1101
- describe('actual: object, descriptor: primitive', () => {
1102
- test('Any object should not be count as ended with primitive', () => {
1103
- expect(resolveEntityValues('endsWith', { key: 'value' }, 12)).toBe(false);
1104
- expect(resolveEntityValues('endsWith', { key: 'value' }, true)).toBe(false);
1105
- expect(resolveEntityValues('endsWith', { key: 'value' }, null)).toBe(false);
1106
- expect(resolveEntityValues('endsWith', { key: 'value' }, 'string')).toBe(false);
1107
- });
1108
- });
1109
- describe('actual: object, descriptor: array', () => {
1110
- test('Should compare actual object value with every descriptor object value by "OR" logic', () => {
1111
- expect(resolveEntityValues('endsWith', { key: 'value' }, [])).toBe(false);
1112
- expect(resolveEntityValues('endsWith', { key: 'value' }, [true, 2, 'string'])).toBe(false);
1113
- expect(
1114
- resolveEntityValues('endsWith', { key: '12value' }, [{ key: 'value', key2: 'value2' }])
1115
- ).toBe(false);
1116
- expect(resolveEntityValues('endsWith', { key: '12value' }, [{ key: 'value' }])).toBe(true);
1117
- expect(
1118
- resolveEntityValues('endsWith', { user: { phone: '99091230102' } }, [
1119
- { user: { phone: '0' } },
1120
- { user: { phone: '1' } }
1121
- ])
1122
- ).toBe(false);
1123
- expect(
1124
- resolveEntityValues('endsWith', { user: { phone: '99091230100' } }, [
1125
- { user: { phone: '0' } },
1126
- { user: { phone: '1' } }
1127
- ])
1128
- ).toBe(true);
1129
- });
1130
- });
1131
- describe('actual: object, descriptor: object', () => {
1132
- test('Plain objects should compare by "actualValue is strictly equals descriptorValue" with nested objects', () => {
1133
- expect(
1134
- resolveEntityValues(
1135
- 'endsWith',
1136
- { key1: '2value1', key2: '3value2', key3: 'value34' },
1137
- { key1: 'value1', key2: 'value2' }
1138
- )
1139
- ).toBe(false);
1140
-
1141
- expect(
1142
- resolveEntityValues(
1143
- 'endsWith',
1144
- { key1: '2value1', key2: '3value2' },
1145
- { key1: 'value1', key2: 'value2', key3: 'value3' }
1146
- )
1147
- ).toBe(false);
1148
-
1149
- expect(
1150
- resolveEntityValues(
1151
- 'endsWith',
1152
- {
1153
- key1: '2value1',
1154
- key2: { nestedKey1: '2nestedValue1', nestedKey2: 'nestedValue23' },
1155
- key3: 'value34'
1156
- },
1157
- { key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }
1158
- )
1159
- ).toBe(false);
1160
-
1161
- expect(
1162
- resolveEntityValues(
1163
- 'endsWith',
1164
- {
1165
- key1: '2value1',
1166
- key2: { nestedKey1: '2nestedValue1', nestedKey2: '2nestedValue23' },
1167
- key3: 'value34'
1168
- },
1169
- {
1170
- key1: 'value1',
1171
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue23' },
1172
- key3: '34'
1173
- }
1174
- )
1175
- ).toBe(true);
1176
- });
1177
- });
1178
- });
1179
-
1180
- describe('"notEndsWith" checkMode', () => {
1181
- describe('actual: primitive, descriptor: primitive', () => {
1182
- test('All primitive values should compare independent of their types', () => {
1183
- expect(resolveEntityValues('notEndsWith', '312', 12)).toBe(false);
1184
- expect(resolveEntityValues('notEndsWith', '1true', true)).toBe(false);
1185
- expect(resolveEntityValues('notEndsWith', '1null', null)).toBe(false);
1186
- expect(resolveEntityValues('notEndsWith', 'string', 'string')).toBe(false);
1187
- expect(resolveEntityValues('notEndsWith', 'string', 'string2')).toBe(true);
1188
- });
1189
- });
1190
- describe('actual: primitive, descriptor: array', () => {
1191
- test('Should compare primitive actual value with every element in descriptor array value by "OR" logic', () => {
1192
- expect(resolveEntityValues('notEndsWith', '312', [11, 12, '13'])).toBe(false);
1193
- expect(resolveEntityValues('notEndsWith', '12', [111, 133, '134'])).toBe(true);
1194
- });
1195
- });
1196
- describe('actual: primitive, descriptor: object', () => {
1197
- test('All primitive values should not be count as end of an object', () => {
1198
- expect(resolveEntityValues('notEndsWith', 12, { key: '12' })).toBe(true);
1199
- expect(resolveEntityValues('notEndsWith', true, { true: true })).toBe(true);
1200
- expect(resolveEntityValues('notEndsWith', null, { key: 'value' })).toBe(true);
1201
- expect(resolveEntityValues('notEndsWith', 'string', { key: 'value' })).toBe(true);
1202
- });
1203
- });
1204
-
1205
- describe('actual: array, descriptor: primitive', () => {
1206
- test('Any array should not be count as end of primitive', () => {
1207
- expect(resolveEntityValues('notEndsWith', [113, 1222, '312'], '12')).toBe(true);
1208
- expect(resolveEntityValues('notEndsWith', [111, 133, '133'], '12')).toBe(true);
1209
- });
1210
- });
1211
- describe('actual: array, descriptor: array', () => {
1212
- test('Arrays with different length should be count as notEndsWith', () => {
1213
- expect(resolveEntityValues('notEndsWith', ['true', '2'], [true, 2, 'string'])).toBe(true);
1214
- expect(resolveEntityValues('notEndsWith', ['true', '2', 'string'], [true, 2])).toBe(true);
1215
- });
1216
- test('Arrays should be fully checked for "notEndsWith" with nested objects (independent of primitive values types)', () => {
1217
- expect(
1218
- resolveEntityValues('notEndsWith', ['1true', '32', '12string'], [true, 2, 'string'])
1219
- ).toBe(false);
1220
- expect(
1221
- resolveEntityValues(
1222
- 'notEndsWith',
1223
- [{ key1: '22value1', key2: '3111' }],
1224
- [{ key2: 111, key1: 'value1' }]
1225
- )
1226
- ).toBe(false);
1227
- expect(
1228
- resolveEntityValues(
1229
- 'notEndsWith',
1230
- [{ key1: '2value1', key2: '3value2' }],
1231
- [{ key1: 'value1', key2: 'value2', key3: 'value3' }]
1232
- )
1233
- ).toBe(true);
1234
- expect(
1235
- resolveEntityValues(
1236
- 'notEndsWith',
1237
- [{ key1: '2value1', key2: { nestedKey1: '2nestedValue1' } }],
1238
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }]
1239
- )
1240
- ).toBe(false);
1241
- expect(
1242
- resolveEntityValues(
1243
- 'notEndsWith',
1244
- [{ key1: '2value1', key2: { nestedKey1: '2nestedValue1' } }],
1245
- [{ key1: 'value1', key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' } }]
1246
- )
1247
- ).toBe(true);
1248
- });
1249
- });
1250
- describe('actual: array, descriptor: object', () => {
1251
- test('Any array should not be count as end of an object', () => {
1252
- expect(resolveEntityValues('notEndsWith', [], { key: 'value' })).toBe(true);
1253
- expect(resolveEntityValues('notEndsWith', [true, 2, 'value'], { key: 'value' })).toBe(true);
1254
- expect(resolveEntityValues('notEndsWith', [{ key: '33value' }], { key: 'value' })).toBe(
1255
- true
1256
- );
1257
- });
1258
- });
1259
-
1260
- describe('actual: object, descriptor: primitive', () => {
1261
- test('Any object should not be count as ended with primitive', () => {
1262
- expect(resolveEntityValues('notEndsWith', { key: 'value' }, 12)).toBe(true);
1263
- expect(resolveEntityValues('notEndsWith', { key: 'value' }, true)).toBe(true);
1264
- expect(resolveEntityValues('notEndsWith', { key: 'value' }, null)).toBe(true);
1265
- expect(resolveEntityValues('notEndsWith', { key: 'value' }, 'string')).toBe(true);
1266
- });
1267
- });
1268
- describe('actual: object, descriptor: array', () => {
1269
- test('Should compare actual object value with every descriptor object value by "OR" logic', () => {
1270
- expect(resolveEntityValues('notEndsWith', { key: 'value' }, [])).toBe(true);
1271
- expect(resolveEntityValues('notEndsWith', { key: 'value' }, [true, 2, 'string'])).toBe(
1272
- true
1273
- );
1274
- expect(
1275
- resolveEntityValues('notEndsWith', { key: '12value' }, [{ key: 'value', key2: 'value2' }])
1276
- ).toBe(true);
1277
- expect(resolveEntityValues('notEndsWith', { key: '12value' }, [{ key: 'value' }])).toBe(
1278
- false
1279
- );
1280
- expect(
1281
- resolveEntityValues('notEndsWith', { user: { phone: '99091230102' } }, [
1282
- { user: { phone: '0' } },
1283
- { user: { phone: '1' } }
1284
- ])
1285
- ).toBe(true);
1286
- expect(
1287
- resolveEntityValues('notEndsWith', { user: { phone: '99091230100' } }, [
1288
- { user: { phone: '0' } },
1289
- { user: { phone: '1' } }
1290
- ])
1291
- ).toBe(false);
1292
- });
1293
- });
1294
- describe('actual: object, descriptor: object', () => {
1295
- test('Plain objects should compare by "actualValue is strictly equals descriptorValue" with nested objects', () => {
1296
- expect(
1297
- resolveEntityValues(
1298
- 'notEndsWith',
1299
- { key1: '2value1', key2: '3value2', key3: 'value34' },
1300
- { key1: 'value1', key2: 'value2' }
1301
- )
1302
- ).toBe(true);
1303
-
1304
- expect(
1305
- resolveEntityValues(
1306
- 'notEndsWith',
1307
- { key1: '2value1', key2: '3value2' },
1308
- { key1: 'value1', key2: 'value2', key3: 'value3' }
1309
- )
1310
- ).toBe(true);
1311
-
1312
- expect(
1313
- resolveEntityValues(
1314
- 'notEndsWith',
1315
- {
1316
- key1: '2value1',
1317
- key2: { nestedKey1: '2nestedValue1', nestedKey2: 'nestedValue23' },
1318
- key3: 'value34'
1319
- },
1320
- { key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }
1321
- )
1322
- ).toBe(true);
1323
-
1324
- expect(
1325
- resolveEntityValues(
1326
- 'notEndsWith',
1327
- {
1328
- key1: '2value1',
1329
- key2: { nestedKey1: '2nestedValue1', nestedKey2: '2nestedValue23' },
1330
- key3: 'value34'
1331
- },
1332
- {
1333
- key1: 'value1',
1334
- key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue23' },
1335
- key3: '34'
1336
- }
1337
- )
1338
- ).toBe(false);
1339
- });
1340
- });
1341
- });
1342
-
1343
- describe('"regExp" checkMode', () => {
1344
- describe('actual: primitive, descriptor: regExp', () => {
1345
- test('All primitive values should computed independent of their types', () => {
1346
- expect(resolveEntityValues('regExp', 12, /^\d\d$/)).toBe(true);
1347
- expect(resolveEntityValues('regExp', true, /^true$/)).toBe(true);
1348
- expect(resolveEntityValues('regExp', null, /^null$/)).toBe(true);
1349
- expect(resolveEntityValues('regExp', 'string12', /^string\d\d$/)).toBe(true);
1350
- expect(resolveEntityValues('regExp', 'string2', /^string$/)).toBe(false);
1351
- });
1352
- });
1353
- describe('actual: primitive, descriptor: regExpArray', () => {
1354
- test('Should compare primitive actual value with every element in descriptor array value by "OR" logic', () => {
1355
- expect(resolveEntityValues('regExp', '12', [/^11$/, /^12$/])).toBe(true);
1356
- expect(resolveEntityValues('regExp', '12', [/^11$/, /^13$/])).toBe(false);
1357
- });
1358
- });
1359
-
1360
- describe('actual: array, descriptor: regExp', () => {
1361
- test('Should compare every actual array element with regExp descriptor value by "OR" logic', () => {
1362
- expect(resolveEntityValues('regExp', [11, 12, '12'], /^12$/)).toBe(true);
1363
- expect(resolveEntityValues('regExp', [11, 13, '13'], /^12$/)).toBe(false);
1364
- });
1365
- });
1366
- describe('actual: array, descriptor: regExpArray', () => {
1367
- test('Arrays should be fully compared by corresponding regExp (independent of primitive values types)', () => {
1368
- expect(
1369
- resolveEntityValues('regExp', [true, 2, 'string'], [/^true$/, /^2$/, /^string$/])
1370
- ).toBe(true);
1371
- expect(
1372
- resolveEntityValues('regExp', [true, 3, 'string'], [/^true$/, /^2$/, /^string$/])
1373
- ).toBe(false);
1374
- });
1375
- });
1376
-
1377
- describe('actual: object, descriptor: regExp', () => {
1378
- test('Any object should not be pass regExp check', () => {
1379
- expect(resolveEntityValues('regExp', { key1: 'value1', key2: '111' }, /^\d\d\d$/)).toBe(
1380
- false
1381
- );
1382
- });
1383
- });
1384
- describe('actual: object, descriptor: regExpArray', () => {
1385
- test('Any object should not be pass regExp check', () => {
1386
- expect(
1387
- resolveEntityValues('regExp', { key1: 'value1', key2: '111' }, [/^\d\d\d$/, /^value\d$/])
1388
- ).toBe(false);
1389
- });
1390
- });
1391
- });
1392
-
1393
- describe('"function" checkMode', () => {
1394
- describe('actual: primitive, descriptor: function', () => {
1395
- test('Should support nested function calls using checkFunction', () => {
1396
- expect(
1397
- resolveEntityValues(
1398
- 'function',
1399
- 'string2',
1400
- (actualValue: string, checkFunction: CheckFunction) =>
1401
- checkFunction('function', actualValue, () => actualValue === 'string2')
1402
- )
1403
- ).toBe(true);
1404
- });
1405
- test('All primitive values should be count as first argument in descriptor function', () => {
1406
- expect(
1407
- resolveEntityValues('function', '12', (actualValue: string) => actualValue === '12')
1408
- ).toBe(true);
1409
- expect(resolveEntityValues('function', true, (actualValue: string) => actualValue)).toBe(
1410
- true
1411
- );
1412
- expect(resolveEntityValues('function', null, (actualValue: string) => !actualValue)).toBe(
1413
- true
1414
- );
1415
- expect(resolveEntityValues('function', 'string', () => true)).toBe(true);
1416
- });
1417
- });
1418
-
1419
- describe('actual: array, descriptor: function', () => {
1420
- test('Any array should be count as first argument in descriptor function', () => {
1421
- expect(
1422
- resolveEntityValues(
1423
- 'function',
1424
- ['true', '2'],
1425
- ([first, second]: string[]) => first === 'true' && second === '2'
1426
- )
1427
- ).toBe(true);
1428
- expect(
1429
- resolveEntityValues(
1430
- 'function',
1431
- [{ key1: 'value1' }, { key2: '111' }],
1432
- (actualValue: Record<string, string>[]) =>
1433
- actualValue[0].key1 === 'value1' && actualValue[1].key2 === '111'
1434
- )
1435
- ).toBe(true);
1436
- });
1437
- });
1438
-
1439
- describe('actual: object, descriptor: function', () => {
1440
- test('Any object should be count as first argument in descriptor function', () => {
1441
- expect(
1442
- resolveEntityValues(
1443
- 'function',
1444
- { key1: 'value1', key2: 'value2' },
1445
- (actualValue: Record<string, string>) =>
1446
- actualValue.key1 === 'value1' && actualValue.key2 === 'value2'
1447
- )
1448
- ).toBe(true);
1449
- });
1450
- });
1451
- });
1452
- });