@featurevisor/core 1.1.1 → 1.2.0

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 (36) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +11 -0
  3. package/coverage/clover.xml +161 -5
  4. package/coverage/coverage-final.json +2 -0
  5. package/coverage/lcov-report/index.html +32 -32
  6. package/coverage/lcov-report/lib/builder/allocator.js.html +1 -1
  7. package/coverage/lcov-report/lib/builder/index.html +1 -1
  8. package/coverage/lcov-report/lib/builder/traffic.js.html +1 -1
  9. package/coverage/lcov-report/lib/tester/checkIfObjectsAreEqual.js.html +1 -1
  10. package/coverage/lcov-report/lib/tester/index.html +25 -10
  11. package/coverage/lcov-report/lib/tester/matrix.js.html +487 -0
  12. package/coverage/lcov-report/src/builder/allocator.ts.html +1 -1
  13. package/coverage/lcov-report/src/builder/index.html +1 -1
  14. package/coverage/lcov-report/src/builder/traffic.ts.html +1 -1
  15. package/coverage/lcov-report/src/tester/checkIfObjectsAreEqual.ts.html +1 -1
  16. package/coverage/lcov-report/src/tester/index.html +25 -10
  17. package/coverage/lcov-report/src/tester/matrix.ts.html +640 -0
  18. package/coverage/lcov.info +276 -0
  19. package/lib/linter/testSchema.js +19 -4
  20. package/lib/linter/testSchema.js.map +1 -1
  21. package/lib/tester/matrix.d.ts +13 -0
  22. package/lib/tester/matrix.js +135 -0
  23. package/lib/tester/matrix.js.map +1 -0
  24. package/lib/tester/matrix.spec.d.ts +1 -0
  25. package/lib/tester/matrix.spec.js +42 -0
  26. package/lib/tester/matrix.spec.js.map +1 -0
  27. package/lib/tester/testFeature.js +26 -16
  28. package/lib/tester/testFeature.js.map +1 -1
  29. package/lib/tester/testSegment.js +14 -11
  30. package/lib/tester/testSegment.js.map +1 -1
  31. package/package.json +5 -5
  32. package/src/linter/testSchema.ts +21 -2
  33. package/src/tester/matrix.spec.ts +49 -0
  34. package/src/tester/matrix.ts +185 -0
  35. package/src/tester/testFeature.ts +121 -114
  36. package/src/tester/testSegment.ts +17 -11
@@ -229,6 +229,159 @@ BRF:14
229
229
  BRH:13
230
230
  end_of_record
231
231
  TN:
232
+ SF:lib/tester/matrix.js
233
+ FN:2,(anonymous_0)
234
+ FN:3,(anonymous_1)
235
+ FN:15,generateCombinations
236
+ FN:29,getMatrixCombinations
237
+ FN:39,applyCombinationToValue
238
+ FN:52,(anonymous_5)
239
+ FN:60,applyCombinationToFeatureAssertion
240
+ FN:65,(anonymous_7)
241
+ FN:84,getFeatureAssertionsFromMatrix
242
+ FN:104,applyCombinationToSegmentAssertion
243
+ FN:107,(anonymous_10)
244
+ FN:118,getSegmentAssertionsFromMatrix
245
+ FNF:12
246
+ FNH:3
247
+ FNDA:2,(anonymous_0)
248
+ FNDA:0,(anonymous_1)
249
+ FNDA:10,generateCombinations
250
+ FNDA:3,getMatrixCombinations
251
+ FNDA:0,applyCombinationToValue
252
+ FNDA:0,(anonymous_5)
253
+ FNDA:0,applyCombinationToFeatureAssertion
254
+ FNDA:0,(anonymous_7)
255
+ FNDA:0,getFeatureAssertionsFromMatrix
256
+ FNDA:0,applyCombinationToSegmentAssertion
257
+ FNDA:0,(anonymous_10)
258
+ FNDA:0,getSegmentAssertionsFromMatrix
259
+ DA:2,1
260
+ DA:3,2
261
+ DA:4,0
262
+ DA:5,0
263
+ DA:6,0
264
+ DA:7,0
265
+ DA:9,0
266
+ DA:11,2
267
+ DA:13,1
268
+ DA:14,1
269
+ DA:17,10
270
+ DA:18,10
271
+ DA:19,10
272
+ DA:20,20
273
+ DA:21,20
274
+ DA:22,12
275
+ DA:25,8
276
+ DA:30,3
277
+ DA:31,3
278
+ DA:32,1
279
+ DA:34,2
280
+ DA:35,2
281
+ DA:36,2
282
+ DA:38,1
283
+ DA:40,0
284
+ DA:41,0
285
+ DA:43,0
286
+ DA:44,0
287
+ DA:47,0
288
+ DA:48,0
289
+ DA:49,0
290
+ DA:52,0
291
+ DA:54,0
292
+ DA:56,1
293
+ DA:61,0
294
+ DA:63,0
295
+ DA:65,0
296
+ DA:66,0
297
+ DA:67,0
298
+ DA:70,0
299
+ DA:71,0
300
+ DA:72,0
301
+ DA:78,0
302
+ DA:79,0
303
+ DA:81,0
304
+ DA:83,1
305
+ DA:85,0
306
+ DA:86,0
307
+ DA:87,0
308
+ DA:88,0
309
+ DA:90,0
310
+ DA:91,0
311
+ DA:92,0
312
+ DA:93,0
313
+ DA:94,0
314
+ DA:95,0
315
+ DA:96,0
316
+ DA:98,0
317
+ DA:100,1
318
+ DA:105,0
319
+ DA:107,0
320
+ DA:108,0
321
+ DA:109,0
322
+ DA:112,0
323
+ DA:113,0
324
+ DA:115,0
325
+ DA:117,1
326
+ DA:119,0
327
+ DA:120,0
328
+ DA:121,0
329
+ DA:122,0
330
+ DA:124,0
331
+ DA:125,0
332
+ DA:126,0
333
+ DA:127,0
334
+ DA:128,0
335
+ DA:129,0
336
+ DA:130,0
337
+ DA:132,0
338
+ DA:134,1
339
+ LF:80
340
+ LH:24
341
+ BRDA:2,0,0,1
342
+ BRDA:2,0,1,1
343
+ BRDA:2,0,2,1
344
+ BRDA:3,1,0,2
345
+ BRDA:3,1,1,0
346
+ BRDA:6,2,0,0
347
+ BRDA:6,2,1,0
348
+ BRDA:21,3,0,12
349
+ BRDA:21,3,1,8
350
+ BRDA:31,4,0,1
351
+ BRDA:31,4,1,2
352
+ BRDA:40,5,0,0
353
+ BRDA:40,5,1,0
354
+ BRDA:43,6,0,0
355
+ BRDA:43,6,1,0
356
+ BRDA:47,7,0,0
357
+ BRDA:47,7,1,0
358
+ BRDA:47,8,0,0
359
+ BRDA:47,8,1,0
360
+ BRDA:47,8,2,0
361
+ BRDA:71,9,0,0
362
+ BRDA:71,9,1,0
363
+ BRDA:73,10,0,0
364
+ BRDA:73,10,1,0
365
+ BRDA:78,11,0,0
366
+ BRDA:78,11,1,0
367
+ BRDA:85,12,0,0
368
+ BRDA:85,12,1,0
369
+ BRDA:87,13,0,0
370
+ BRDA:87,13,1,0
371
+ BRDA:95,14,0,0
372
+ BRDA:95,14,1,0
373
+ BRDA:112,15,0,0
374
+ BRDA:112,15,1,0
375
+ BRDA:119,16,0,0
376
+ BRDA:119,16,1,0
377
+ BRDA:121,17,0,0
378
+ BRDA:121,17,1,0
379
+ BRDA:129,18,0,0
380
+ BRDA:129,18,1,0
381
+ BRF:40
382
+ BRH:8
383
+ end_of_record
384
+ TN:
232
385
  SF:src/builder/allocator.ts
233
386
  FN:3,getAllocation
234
387
  FN:21,getUpdatedAvailableRangesAfterFilling
@@ -434,3 +587,126 @@ BRDA:18,5,1,8
434
587
  BRF:10
435
588
  BRH:9
436
589
  end_of_record
590
+ TN:
591
+ SF:src/tester/matrix.ts
592
+ FN:3,generateCombinations
593
+ FN:24,getMatrixCombinations
594
+ FN:37,applyCombinationToValue
595
+ FN:54,(anonymous_3)
596
+ FN:63,applyCombinationToFeatureAssertion
597
+ FN:76,(anonymous_5)
598
+ FN:102,getFeatureAssertionsFromMatrix
599
+ FN:134,applyCombinationToSegmentAssertion
600
+ FN:141,(anonymous_8)
601
+ FN:158,getSegmentAssertionsFromMatrix
602
+ FNF:10
603
+ FNH:2
604
+ FNDA:10,generateCombinations
605
+ FNDA:3,getMatrixCombinations
606
+ FNDA:0,applyCombinationToValue
607
+ FNDA:0,(anonymous_3)
608
+ FNDA:0,applyCombinationToFeatureAssertion
609
+ FNDA:0,(anonymous_5)
610
+ FNDA:0,getFeatureAssertionsFromMatrix
611
+ FNDA:0,applyCombinationToSegmentAssertion
612
+ FNDA:0,(anonymous_8)
613
+ FNDA:0,getSegmentAssertionsFromMatrix
614
+ DA:10,10
615
+ DA:11,10
616
+ DA:13,10
617
+ DA:14,20
618
+ DA:16,20
619
+ DA:17,12
620
+ DA:19,8
621
+ DA:24,1
622
+ DA:25,3
623
+ DA:27,3
624
+ DA:28,1
625
+ DA:31,2
626
+ DA:32,2
627
+ DA:34,2
628
+ DA:37,1
629
+ DA:38,0
630
+ DA:39,0
631
+ DA:42,0
632
+ DA:43,0
633
+ DA:47,0
634
+ DA:48,0
635
+ DA:50,0
636
+ DA:54,0
637
+ DA:57,0
638
+ DA:63,1
639
+ DA:67,0
640
+ DA:70,0
641
+ DA:76,0
642
+ DA:77,0
643
+ DA:79,0
644
+ DA:83,0
645
+ DA:84,0
646
+ DA:85,0
647
+ DA:92,0
648
+ DA:93,0
649
+ DA:99,0
650
+ DA:102,1
651
+ DA:106,0
652
+ DA:107,0
653
+ DA:108,0
654
+ DA:112,0
655
+ DA:115,0
656
+ DA:116,0
657
+ DA:118,0
658
+ DA:119,0
659
+ DA:120,0
660
+ DA:121,0
661
+ DA:125,0
662
+ DA:128,0
663
+ DA:134,1
664
+ DA:138,0
665
+ DA:141,0
666
+ DA:142,0
667
+ DA:144,0
668
+ DA:148,0
669
+ DA:149,0
670
+ DA:155,0
671
+ DA:158,1
672
+ DA:162,0
673
+ DA:163,0
674
+ DA:164,0
675
+ DA:168,0
676
+ DA:171,0
677
+ DA:172,0
678
+ DA:174,0
679
+ DA:175,0
680
+ DA:176,0
681
+ DA:177,0
682
+ DA:181,0
683
+ DA:184,0
684
+ LF:70
685
+ LH:19
686
+ BRDA:16,0,0,12
687
+ BRDA:16,0,1,8
688
+ BRDA:27,1,0,1
689
+ BRDA:38,2,0,0
690
+ BRDA:42,3,0,0
691
+ BRDA:47,4,0,0
692
+ BRDA:47,5,0,0
693
+ BRDA:47,5,1,0
694
+ BRDA:47,5,2,0
695
+ BRDA:84,6,0,0
696
+ BRDA:86,7,0,0
697
+ BRDA:86,7,1,0
698
+ BRDA:92,8,0,0
699
+ BRDA:106,9,0,0
700
+ BRDA:109,10,0,0
701
+ BRDA:109,10,1,0
702
+ BRDA:122,11,0,0
703
+ BRDA:122,11,1,0
704
+ BRDA:148,12,0,0
705
+ BRDA:162,13,0,0
706
+ BRDA:165,14,0,0
707
+ BRDA:165,14,1,0
708
+ BRDA:178,15,0,0
709
+ BRDA:178,15,1,0
710
+ BRF:24
711
+ BRH:3
712
+ end_of_record
@@ -3,11 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTestsJoiSchema = void 0;
4
4
  var Joi = require("joi");
5
5
  function getTestsJoiSchema(projectConfig, availableFeatureKeys, availableSegmentKeys) {
6
- var _a, _b, _c;
6
+ var _a, _b;
7
7
  var segmentTestJoiSchema = Joi.object({
8
8
  segment: (_a = Joi.string())
9
9
  .valid.apply(_a, availableSegmentKeys).required(),
10
10
  assertions: Joi.array().items(Joi.object({
11
+ matrix: Joi.object().optional(),
11
12
  description: Joi.string().optional(),
12
13
  context: Joi.object(),
13
14
  expectedToMatch: Joi.boolean(),
@@ -17,10 +18,24 @@ function getTestsJoiSchema(projectConfig, availableFeatureKeys, availableSegment
17
18
  feature: (_b = Joi.string())
18
19
  .valid.apply(_b, availableFeatureKeys).required(),
19
20
  assertions: Joi.array().items(Joi.object({
21
+ matrix: Joi.object().optional(),
20
22
  description: Joi.string().optional(),
21
- at: Joi.number().precision(3).min(0).max(100).required(),
22
- environment: (_c = Joi.string())
23
- .valid.apply(_c, projectConfig.environments).required(),
23
+ at: Joi.alternatives().try(Joi.number().precision(3).min(0).max(100).required(),
24
+ // because of supporting matrix
25
+ Joi.string().required()),
26
+ environment: Joi.string()
27
+ .custom(function (value, helpers) {
28
+ if (value.indexOf("${{") === 0) {
29
+ // allow unknown strings for matrix
30
+ return value;
31
+ }
32
+ // otherwise only known environments should be passed
33
+ if (projectConfig.environments.includes(value)) {
34
+ return value;
35
+ }
36
+ return helpers.error("any.invalid");
37
+ })
38
+ .required(),
24
39
  context: Joi.object().required(),
25
40
  expectedToBeEnabled: Joi.boolean().required(),
26
41
  expectedVariation: Joi.alternatives().try(Joi.string(), Joi.number(), Joi.boolean()),
@@ -1 +1 @@
1
- {"version":3,"file":"testSchema.js","sourceRoot":"","sources":["../../src/linter/testSchema.ts"],"names":[],"mappings":";;;AAAA,yBAA2B;AAI3B,SAAgB,iBAAiB,CAC/B,aAA4B,EAC5B,oBAA8B,EAC9B,oBAA8B;;IAE9B,IAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC;QACtC,OAAO,EAAE,CAAA,KAAA,GAAG,CAAC,MAAM,EAAE,CAAA;aAClB,KAAK,WAAI,oBAAoB,EAC7B,QAAQ,EAAE;QACb,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAC3B,GAAG,CAAC,MAAM,CAAC;YACT,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACpC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;YACrB,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE;SAC/B,CAAC,CACH;KACF,CAAC,CAAC;IAEH,IAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC;QACtC,OAAO,EAAE,CAAA,KAAA,GAAG,CAAC,MAAM,EAAE,CAAA;aAClB,KAAK,WAAI,oBAAoB,EAC7B,QAAQ,EAAE;QACb,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAC3B,GAAG,CAAC,MAAM,CAAC;YACT,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACpC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;YACxD,WAAW,EAAE,CAAA,KAAA,GAAG,CAAC,MAAM,EAAE,CAAA;iBACtB,KAAK,WAAI,aAAa,CAAC,YAAY,EACnC,QAAQ,EAAE;YACb,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,mBAAmB,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC7C,iBAAiB,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YACpF,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE;SAChC,CAAC,CACH;KACF,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;AAC5E,CAAC;AAtCD,8CAsCC"}
1
+ {"version":3,"file":"testSchema.js","sourceRoot":"","sources":["../../src/linter/testSchema.ts"],"names":[],"mappings":";;;AAAA,yBAA2B;AAI3B,SAAgB,iBAAiB,CAC/B,aAA4B,EAC5B,oBAA8B,EAC9B,oBAA8B;;IAE9B,IAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC;QACtC,OAAO,EAAE,CAAA,KAAA,GAAG,CAAC,MAAM,EAAE,CAAA;aAClB,KAAK,WAAI,oBAAoB,EAC7B,QAAQ,EAAE;QACb,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAC3B,GAAG,CAAC,MAAM,CAAC;YACT,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACpC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;YACrB,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE;SAC/B,CAAC,CACH;KACF,CAAC,CAAC;IAEH,IAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC;QACtC,OAAO,EAAE,CAAA,KAAA,GAAG,CAAC,MAAM,EAAE,CAAA;aAClB,KAAK,WAAI,oBAAoB,EAC7B,QAAQ,EAAE;QACb,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAC3B,GAAG,CAAC,MAAM,CAAC;YACT,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACpC,EAAE,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CACxB,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;YAEpD,+BAA+B;YAC/B,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CACxB;YACD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;iBACtB,MAAM,CAAC,UAAC,KAAK,EAAE,OAAO;gBACrB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC9B,mCAAmC;oBACnC,OAAO,KAAK,CAAC;iBACd;gBAED,qDAAqD;gBACrD,IAAI,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;oBAC9C,OAAO,KAAK,CAAC;iBACd;gBAED,OAAO,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACtC,CAAC,CAAC;iBACD,QAAQ,EAAE;YACb,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,mBAAmB,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC7C,iBAAiB,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YACpF,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE;SAChC,CAAC,CACH;KACF,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;AAC5E,CAAC;AAzDD,8CAyDC"}
@@ -0,0 +1,13 @@
1
+ import { AssertionMatrix, FeatureAssertion, SegmentAssertion } from "@featurevisor/types";
2
+ export declare function getMatrixCombinations(matrix: AssertionMatrix): any[];
3
+ export declare function applyCombinationToValue(value: any, combination: any): any;
4
+ /**
5
+ * Features
6
+ */
7
+ export declare function applyCombinationToFeatureAssertion(combination: any, assertion: FeatureAssertion): FeatureAssertion;
8
+ export declare function getFeatureAssertionsFromMatrix(aIndex: any, assertionWithMatrix: FeatureAssertion): FeatureAssertion[];
9
+ /**
10
+ * Segments
11
+ */
12
+ export declare function applyCombinationToSegmentAssertion(combination: any, assertion: SegmentAssertion): SegmentAssertion;
13
+ export declare function getSegmentAssertionsFromMatrix(aIndex: any, assertionWithMatrix: SegmentAssertion): SegmentAssertion[];
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.getSegmentAssertionsFromMatrix = exports.applyCombinationToSegmentAssertion = exports.getFeatureAssertionsFromMatrix = exports.applyCombinationToFeatureAssertion = exports.applyCombinationToValue = exports.getMatrixCombinations = void 0;
15
+ function generateCombinations(keys, matrix, idx, prev, combinations) {
16
+ var _a;
17
+ var key = keys[idx];
18
+ var values = matrix[key];
19
+ for (var i = 0; i < values.length; i++) {
20
+ var combination = __assign(__assign({}, prev), (_a = {}, _a[key] = values[i], _a));
21
+ if (idx === keys.length - 1) {
22
+ combinations.push(combination);
23
+ }
24
+ else {
25
+ generateCombinations(keys, matrix, idx + 1, combination, combinations);
26
+ }
27
+ }
28
+ }
29
+ function getMatrixCombinations(matrix) {
30
+ var keys = Object.keys(matrix);
31
+ if (!keys.length) {
32
+ return [];
33
+ }
34
+ var combinations = [];
35
+ generateCombinations(keys, matrix, 0, {}, combinations);
36
+ return combinations;
37
+ }
38
+ exports.getMatrixCombinations = getMatrixCombinations;
39
+ function applyCombinationToValue(value, combination) {
40
+ if (typeof value === "string") {
41
+ var variableKeysInValue = value.match(/\${{(.+?)}}/g);
42
+ // no variables found
43
+ if (!variableKeysInValue) {
44
+ return value;
45
+ }
46
+ // only 1 variable found, so we can insert the value directly
47
+ if (variableKeysInValue.length === 1 && value.startsWith("${{") && value.endsWith("}}")) {
48
+ var key = value.replace("${{", "").replace("}}", "").trim();
49
+ return combination[key];
50
+ }
51
+ // multiple variables found, so we can replace each as a whole string
52
+ return value.replace(/\${{(.+?)}}/g, function (_, key) { return combination[key.trim()]; });
53
+ }
54
+ return value;
55
+ }
56
+ exports.applyCombinationToValue = applyCombinationToValue;
57
+ /**
58
+ * Features
59
+ */
60
+ function applyCombinationToFeatureAssertion(combination, assertion) {
61
+ var flattenedAssertion = __assign({}, assertion);
62
+ // environment
63
+ flattenedAssertion.environment = applyCombinationToValue(flattenedAssertion.environment, combination);
64
+ // context
65
+ flattenedAssertion.context = Object.keys(flattenedAssertion.context).reduce(function (acc, key) {
66
+ acc[key] = applyCombinationToValue(flattenedAssertion.context[key], combination);
67
+ return acc;
68
+ }, {});
69
+ // at
70
+ flattenedAssertion.at = applyCombinationToValue(flattenedAssertion.at, combination);
71
+ if (typeof flattenedAssertion.at === "string") {
72
+ flattenedAssertion.at =
73
+ flattenedAssertion.at.indexOf(".") > -1
74
+ ? parseFloat(flattenedAssertion.at)
75
+ : parseInt(flattenedAssertion.at, 10);
76
+ }
77
+ // description
78
+ if (flattenedAssertion.description) {
79
+ flattenedAssertion.description = applyCombinationToValue(flattenedAssertion.description, combination);
80
+ }
81
+ return flattenedAssertion;
82
+ }
83
+ exports.applyCombinationToFeatureAssertion = applyCombinationToFeatureAssertion;
84
+ function getFeatureAssertionsFromMatrix(aIndex, assertionWithMatrix) {
85
+ if (!assertionWithMatrix.matrix) {
86
+ var assertion = __assign({}, assertionWithMatrix);
87
+ assertion.description = " Assertion #".concat(aIndex + 1, ": (").concat(assertion.environment, ") ").concat(assertion.description || "at ".concat(assertion.at, "%"));
88
+ return [assertion];
89
+ }
90
+ var assertions = [];
91
+ var combinations = getMatrixCombinations(assertionWithMatrix.matrix);
92
+ for (var cIndex = 0; cIndex < combinations.length; cIndex++) {
93
+ var combination = combinations[cIndex];
94
+ var assertion = applyCombinationToFeatureAssertion(combination, assertionWithMatrix);
95
+ assertion.description = " Assertion #".concat(aIndex + 1, ": (").concat(assertion.environment, ") ").concat(assertion.description || "at ".concat(assertion.at, "%"));
96
+ assertions.push(assertion);
97
+ }
98
+ return assertions;
99
+ }
100
+ exports.getFeatureAssertionsFromMatrix = getFeatureAssertionsFromMatrix;
101
+ /**
102
+ * Segments
103
+ */
104
+ function applyCombinationToSegmentAssertion(combination, assertion) {
105
+ var flattenedAssertion = __assign({}, assertion);
106
+ // context
107
+ flattenedAssertion.context = Object.keys(flattenedAssertion.context).reduce(function (acc, key) {
108
+ acc[key] = applyCombinationToValue(flattenedAssertion.context[key], combination);
109
+ return acc;
110
+ }, {});
111
+ // description
112
+ if (flattenedAssertion.description) {
113
+ flattenedAssertion.description = applyCombinationToValue(flattenedAssertion.description, combination);
114
+ }
115
+ return flattenedAssertion;
116
+ }
117
+ exports.applyCombinationToSegmentAssertion = applyCombinationToSegmentAssertion;
118
+ function getSegmentAssertionsFromMatrix(aIndex, assertionWithMatrix) {
119
+ if (!assertionWithMatrix.matrix) {
120
+ var assertion = __assign({}, assertionWithMatrix);
121
+ assertion.description = " Assertion #".concat(aIndex + 1, ": ").concat(assertion.description || "#".concat(aIndex + 1));
122
+ return [assertion];
123
+ }
124
+ var assertions = [];
125
+ var combinations = getMatrixCombinations(assertionWithMatrix.matrix);
126
+ for (var cIndex = 0; cIndex < combinations.length; cIndex++) {
127
+ var combination = combinations[cIndex];
128
+ var assertion = applyCombinationToSegmentAssertion(combination, assertionWithMatrix);
129
+ assertion.description = " Assertion #".concat(aIndex + 1, ": ").concat(assertion.description || "#".concat(aIndex + 1));
130
+ assertions.push(assertion);
131
+ }
132
+ return assertions;
133
+ }
134
+ exports.getSegmentAssertionsFromMatrix = getSegmentAssertionsFromMatrix;
135
+ //# sourceMappingURL=matrix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../src/tester/matrix.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var matrix_1 = require("./matrix");
4
+ describe("core :: tester :: matrix", function () {
5
+ test("should empty array when no keys are available", function () {
6
+ var matrix = {};
7
+ var combinations = (0, matrix_1.getMatrixCombinations)(matrix);
8
+ expect(combinations).toEqual([]);
9
+ });
10
+ test("should get combinations from matrix with two keys", function () {
11
+ var matrix = {
12
+ a: [1, 2],
13
+ b: ["x", "y"],
14
+ };
15
+ var combinations = (0, matrix_1.getMatrixCombinations)(matrix);
16
+ expect(combinations).toEqual([
17
+ { a: 1, b: "x" },
18
+ { a: 1, b: "y" },
19
+ { a: 2, b: "x" },
20
+ { a: 2, b: "y" },
21
+ ]);
22
+ });
23
+ test("should get combinations from matrix with three keys", function () {
24
+ var matrix = {
25
+ a: [1, 2],
26
+ b: ["x", "y"],
27
+ c: [true, false],
28
+ };
29
+ var combinations = (0, matrix_1.getMatrixCombinations)(matrix);
30
+ expect(combinations).toEqual([
31
+ { a: 1, b: "x", c: true },
32
+ { a: 1, b: "x", c: false },
33
+ { a: 1, b: "y", c: true },
34
+ { a: 1, b: "y", c: false },
35
+ { a: 2, b: "x", c: true },
36
+ { a: 2, b: "x", c: false },
37
+ { a: 2, b: "y", c: true },
38
+ { a: 2, b: "y", c: false },
39
+ ]);
40
+ });
41
+ });
42
+ //# sourceMappingURL=matrix.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix.spec.js","sourceRoot":"","sources":["../../src/tester/matrix.spec.ts"],"names":[],"mappings":";;AAAA,mCAAiD;AAEjD,QAAQ,CAAC,0BAA0B,EAAE;IACnC,IAAI,CAAC,+CAA+C,EAAE;QACpD,IAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAM,YAAY,GAAG,IAAA,8BAAqB,EAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mDAAmD,EAAE;QACxD,IAAM,MAAM,GAAG;YACb,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;SACd,CAAC;QACF,IAAM,YAAY,GAAG,IAAA,8BAAqB,EAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;YAC3B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;YAChB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;YAEhB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;YAChB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qDAAqD,EAAE;QAC1D,IAAM,MAAM,GAAG;YACb,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACb,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;SACjB,CAAC;QACF,IAAM,YAAY,GAAG,IAAA,8BAAqB,EAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;YAC3B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE;YACzB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE;YAE1B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE;YACzB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE;YAE1B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE;YACzB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE;YAE1B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE;YACzB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -43,27 +43,32 @@ var config_1 = require("../config");
43
43
  var checkIfArraysAreEqual_1 = require("./checkIfArraysAreEqual");
44
44
  var checkIfObjectsAreEqual_1 = require("./checkIfObjectsAreEqual");
45
45
  var cliFormat_1 = require("./cliFormat");
46
+ var matrix_1 = require("./matrix");
46
47
  function testFeature(datasource, projectConfig, test, options, patterns) {
47
48
  if (options === void 0) { options = {}; }
48
49
  return __awaiter(this, void 0, void 0, function () {
49
- var hasError, featureKey, _loop_1, aIndex;
50
+ var hasError, featureKey, aIndex, assertions, _loop_1, bIndex;
50
51
  return __generator(this, function (_a) {
51
52
  switch (_a.label) {
52
53
  case 0:
53
54
  hasError = false;
54
55
  featureKey = test.feature;
55
56
  console.log(cliFormat_1.CLI_FORMAT_BOLD, " Feature \"".concat(featureKey, "\":"));
56
- _loop_1 = function (aIndex) {
57
- var assertion, description, requiredChain, featuresToInclude, existingState, datafileContent, sdk, isEnabled, variation, feature;
57
+ aIndex = 0;
58
+ _a.label = 1;
59
+ case 1:
60
+ if (!(aIndex < test.assertions.length)) return [3 /*break*/, 6];
61
+ assertions = (0, matrix_1.getFeatureAssertionsFromMatrix)(aIndex, test.assertions[aIndex]);
62
+ _loop_1 = function (bIndex) {
63
+ var assertion, requiredChain, featuresToInclude, existingState, datafileContent, sdk, isEnabled, variation, feature;
58
64
  return __generator(this, function (_b) {
59
65
  switch (_b.label) {
60
66
  case 0:
61
- assertion = test.assertions[aIndex];
62
- description = " Assertion #".concat(aIndex + 1, ": (").concat(assertion.environment, ") ").concat(assertion.description || "at ".concat(assertion.at, "%"));
63
- if (patterns.assertionPattern && !patterns.assertionPattern.test(description)) {
67
+ assertion = assertions[bIndex];
68
+ if (patterns.assertionPattern && !patterns.assertionPattern.test(assertion.description)) {
64
69
  return [2 /*return*/, "continue"];
65
70
  }
66
- console.log(description);
71
+ console.log(assertion.description);
67
72
  return [4 /*yield*/, datasource.getRequiredFeaturesChain(test.feature)];
68
73
  case 1:
69
74
  requiredChain = _b.sent();
@@ -131,7 +136,9 @@ function testFeature(datasource, projectConfig, test, options, patterns) {
131
136
  }
132
137
  if (variableSchema.type === "json") {
133
138
  // JSON type
134
- var parsedExpectedValue = typeof expectedValue === "string" ? JSON.parse(expectedValue) : expectedValue;
139
+ var parsedExpectedValue = typeof expectedValue === "string"
140
+ ? JSON.parse(expectedValue)
141
+ : expectedValue;
135
142
  if (Array.isArray(actualValue)) {
136
143
  passed = (0, checkIfArraysAreEqual_1.checkIfArraysAreEqual)(parsedExpectedValue, actualValue);
137
144
  }
@@ -173,18 +180,21 @@ function testFeature(datasource, projectConfig, test, options, patterns) {
173
180
  }
174
181
  });
175
182
  };
176
- aIndex = 0;
177
- _a.label = 1;
178
- case 1:
179
- if (!(aIndex < test.assertions.length)) return [3 /*break*/, 4];
180
- return [5 /*yield**/, _loop_1(aIndex)];
183
+ bIndex = 0;
184
+ _a.label = 2;
181
185
  case 2:
182
- _a.sent();
183
- _a.label = 3;
186
+ if (!(bIndex < assertions.length)) return [3 /*break*/, 5];
187
+ return [5 /*yield**/, _loop_1(bIndex)];
184
188
  case 3:
189
+ _a.sent();
190
+ _a.label = 4;
191
+ case 4:
192
+ bIndex++;
193
+ return [3 /*break*/, 2];
194
+ case 5:
185
195
  aIndex++;
186
196
  return [3 /*break*/, 1];
187
- case 4: return [2 /*return*/, hasError];
197
+ case 6: return [2 /*return*/, hasError];
188
198
  }
189
199
  });
190
200
  });
@@ -1 +1 @@
1
- {"version":3,"file":"testFeature.js","sourceRoot":"","sources":["../../src/tester/testFeature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testFeature.js","sourceRoot":"","sources":["../../src/tester/testFeature.ts"],"names":[],"mappings":"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"}