@newskit-render/feature-flags 0.0.0-767f0ff7 → 0.0.0-cc29eac2

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.
@@ -146,12 +146,33 @@ beforeEach(function () {
146
146
  afterEach(function () {
147
147
  (0, utils_1._resetInstance)();
148
148
  });
149
- describe('getFlagsAll', function () {
150
- it('should return all flags with default options', function () { return __awaiter(void 0, void 0, void 0, function () {
149
+ describe('initAndGetFeatureFlag', function () {
150
+ it('should return all flags data in flat mode with default options', function () { return __awaiter(void 0, void 0, void 0, function () {
151
151
  var flagsAll;
152
152
  return __generator(this, function (_a) {
153
153
  switch (_a.label) {
154
- case 0: return [4 /*yield*/, (0, utils_1.getFlagsAll)()];
154
+ case 0: return [4 /*yield*/, (0, utils_1.initAndGetFeatureFlag)()];
155
+ case 1:
156
+ flagsAll = _a.sent();
157
+ expect(flagsAll).toEqual({
158
+ another_test_flag_1: false,
159
+ qualtrics_flag: true,
160
+ testing_flag: true,
161
+ testing_flag_with_variations_and_variables: true,
162
+ });
163
+ return [2 /*return*/];
164
+ }
165
+ });
166
+ }); });
167
+ it('should return all flags with included variable data when "includeFlagVariables: true" is added in the options', function () { return __awaiter(void 0, void 0, void 0, function () {
168
+ var options, flagsAll;
169
+ return __generator(this, function (_a) {
170
+ switch (_a.label) {
171
+ case 0:
172
+ options = {
173
+ includeFlagVariables: true,
174
+ };
175
+ return [4 /*yield*/, (0, utils_1.initAndGetFeatureFlag)(options)];
155
176
  case 1:
156
177
  flagsAll = _a.sent();
157
178
  expect(flagsAll).toEqual({
@@ -183,6 +204,27 @@ describe('getFlagsAll', function () {
183
204
  }
184
205
  });
185
206
  }); });
207
+ it('should return empty object if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
208
+ var initAndGetFeatureFlag, flagsAll;
209
+ return __generator(this, function (_a) {
210
+ switch (_a.label) {
211
+ case 0:
212
+ jest.doMock('@optimizely/optimizely-sdk', function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk')), { createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
213
+ decideAll: jest
214
+ .fn()
215
+ .mockImplementation(function (options) {
216
+ return undefined;
217
+ }),
218
+ }); }, onReady: jest.fn().mockResolvedValue({ success: true }), close: jest.fn().mockResolvedValue({ success: true }) })); } })); });
219
+ initAndGetFeatureFlag = require('../utils').initAndGetFeatureFlag;
220
+ return [4 /*yield*/, initAndGetFeatureFlag()];
221
+ case 1:
222
+ flagsAll = _a.sent();
223
+ expect(flagsAll).toEqual({});
224
+ return [2 /*return*/];
225
+ }
226
+ });
227
+ }); });
186
228
  it('should return all flags with custom options', function () { return __awaiter(void 0, void 0, void 0, function () {
187
229
  var options, flagsAll;
188
230
  return __generator(this, function (_a) {
@@ -197,8 +239,9 @@ describe('getFlagsAll', function () {
197
239
  userId: 'user456',
198
240
  attributes: { logged_in: true, cpn: 'AAA123', subs_type: 'digi-print' },
199
241
  },
242
+ includeFlagVariables: true,
200
243
  };
201
- return [4 /*yield*/, (0, utils_1.getFlagsAll)(options)];
244
+ return [4 /*yield*/, (0, utils_1.initAndGetFeatureFlag)(options)];
202
245
  case 1:
203
246
  flagsAll = _a.sent();
204
247
  expect(flagsAll).toEqual({
@@ -230,34 +273,13 @@ describe('getFlagsAll', function () {
230
273
  }
231
274
  });
232
275
  }); });
233
- it('should return empty object if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
234
- var getFlagsAll, flagsAll;
235
- return __generator(this, function (_a) {
236
- switch (_a.label) {
237
- case 0:
238
- jest.doMock('@optimizely/optimizely-sdk', function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk')), { createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
239
- decideAll: jest
240
- .fn()
241
- .mockImplementation(function (options) {
242
- return undefined;
243
- }),
244
- }); }, onReady: jest.fn().mockResolvedValue({ success: true }), close: jest.fn().mockResolvedValue({ success: true }) })); } })); });
245
- getFlagsAll = require('../utils').getFlagsAll;
246
- return [4 /*yield*/, getFlagsAll()];
247
- case 1:
248
- flagsAll = _a.sent();
249
- expect(flagsAll).toEqual({});
250
- return [2 /*return*/];
251
- }
252
- });
253
- }); });
254
276
  it('should return empty object when called without sdk key', function () { return __awaiter(void 0, void 0, void 0, function () {
255
277
  var flagsAll;
256
278
  return __generator(this, function (_a) {
257
279
  switch (_a.label) {
258
280
  case 0:
259
281
  process.env = __assign(__assign({}, originalEnv), { OPTIMIZELY_SDK_KEY: undefined });
260
- return [4 /*yield*/, (0, utils_1.getFlagsAll)()];
282
+ return [4 /*yield*/, (0, utils_1.initAndGetFeatureFlag)()];
261
283
  case 1:
262
284
  flagsAll = _a.sent();
263
285
  expect(flagsAll).toEqual({});
@@ -266,15 +288,15 @@ describe('getFlagsAll', function () {
266
288
  });
267
289
  }); });
268
290
  it('should return empty object when sdk not initialized', function () { return __awaiter(void 0, void 0, void 0, function () {
269
- var getFlagsAll, flagsAll;
291
+ var initAndGetFeatureFlag, flagsAll;
270
292
  return __generator(this, function (_a) {
271
293
  switch (_a.label) {
272
294
  case 0:
273
295
  jest.doMock('@optimizely/optimizely-sdk', function () { return ({
274
296
  createInstance: jest.fn().mockReturnValue(null),
275
297
  }); });
276
- getFlagsAll = require('../utils').getFlagsAll;
277
- return [4 /*yield*/, getFlagsAll()];
298
+ initAndGetFeatureFlag = require('../utils').initAndGetFeatureFlag;
299
+ return [4 /*yield*/, initAndGetFeatureFlag()];
278
300
  case 1:
279
301
  flagsAll = _a.sent();
280
302
  expect(flagsAll).toEqual({});
@@ -283,15 +305,15 @@ describe('getFlagsAll', function () {
283
305
  });
284
306
  }); });
285
307
  it('should return empty object when user context not initialized', function () { return __awaiter(void 0, void 0, void 0, function () {
286
- var getFlagsAll, flagsAll;
308
+ var initAndGetFeatureFlag, flagsAll;
287
309
  return __generator(this, function (_a) {
288
310
  switch (_a.label) {
289
311
  case 0:
290
312
  jest.doMock('@optimizely/optimizely-sdk', function () { return ({
291
313
  createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: jest.fn().mockReturnValue(null), onReady: jest.fn().mockResolvedValue({ success: true }) })); },
292
314
  }); });
293
- getFlagsAll = require('../utils').getFlagsAll;
294
- return [4 /*yield*/, getFlagsAll()];
315
+ initAndGetFeatureFlag = require('../utils').initAndGetFeatureFlag;
316
+ return [4 /*yield*/, initAndGetFeatureFlag()];
295
317
  case 1:
296
318
  flagsAll = _a.sent();
297
319
  expect(flagsAll).toEqual({});
@@ -307,7 +329,7 @@ describe('getFlagsAll', function () {
307
329
  options = {
308
330
  logLevel: 'critical',
309
331
  };
310
- return [4 /*yield*/, (0, utils_1.getFlagsAll)(options)];
332
+ return [4 /*yield*/, (0, utils_1.initAndGetFeatureFlag)(options)];
311
333
  case 1:
312
334
  _a.sent();
313
335
  expect(optimizely_sdk_1.setLogLevel).toBeCalledWith('critical');
@@ -317,7 +339,7 @@ describe('getFlagsAll', function () {
317
339
  });
318
340
  }); });
319
341
  it('should return defaultFeatureFlags when they have been passed and optimizely client is not ready', function () { return __awaiter(void 0, void 0, void 0, function () {
320
- var getFlagsAll, options, flagsAll;
342
+ var initAndGetFeatureFlag, options, flagsAll;
321
343
  return __generator(this, function (_a) {
322
344
  switch (_a.label) {
323
345
  case 0:
@@ -332,7 +354,7 @@ describe('getFlagsAll', function () {
332
354
  .fn()
333
355
  .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
334
356
  }); });
335
- getFlagsAll = require('../utils').getFlagsAll;
357
+ initAndGetFeatureFlag = require('../utils').initAndGetFeatureFlag;
336
358
  options = {
337
359
  defaultFeatureFlags: {
338
360
  default_flag: {
@@ -342,7 +364,7 @@ describe('getFlagsAll', function () {
342
364
  },
343
365
  },
344
366
  };
345
- return [4 /*yield*/, getFlagsAll(options)];
367
+ return [4 /*yield*/, initAndGetFeatureFlag(options)];
346
368
  case 1:
347
369
  flagsAll = _a.sent();
348
370
  expect(flagsAll).toEqual(options.defaultFeatureFlags);
@@ -350,299 +372,296 @@ describe('getFlagsAll', function () {
350
372
  }
351
373
  });
352
374
  }); });
353
- it('should return empty object when no default flag have been passed and optimizely client is not ready', function () { return __awaiter(void 0, void 0, void 0, function () {
354
- var getFlagsAll, flagsAll;
355
- return __generator(this, function (_a) {
356
- switch (_a.label) {
357
- case 0:
358
- jest.doMock('@optimizely/optimizely-sdk', function () { return ({
359
- createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
360
- decideAll: jest
361
- .fn()
362
- .mockImplementation(function (options) {
363
- return flagsMock;
364
- }),
365
- }); }, onReady: jest
366
- .fn()
367
- .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
368
- }); });
369
- getFlagsAll = require('../utils').getFlagsAll;
370
- return [4 /*yield*/, getFlagsAll()];
371
- case 1:
372
- flagsAll = _a.sent();
373
- expect(flagsAll).toEqual({});
374
- return [2 /*return*/];
375
- }
376
- });
377
- }); });
378
- });
379
- describe('getFlag', function () {
380
- it('should return a flag with default options', function () { return __awaiter(void 0, void 0, void 0, function () {
381
- var flag;
382
- return __generator(this, function (_a) {
383
- switch (_a.label) {
384
- case 0: return [4 /*yield*/, (0, utils_1.getFlag)('testing_flag_with_variations_and_variables')];
385
- case 1:
386
- flag = _a.sent();
387
- expect(flag).toEqual({
388
- testing_flag_with_variations_and_variables: {
389
- variationKey: 'primary_with_new_weclome_message_and_max_accounts',
390
- enabled: true,
391
- variables: {
392
- family_primary_welcome_message: 'This is the new message',
393
- family_primary_enable_secondary_accounts: true,
394
- family_primary_max_secondary_accounts: 10,
395
- family_primary_metadata_json: {
396
- metadata1: 'a',
397
- },
398
- },
399
- },
400
- });
401
- return [2 /*return*/];
402
- }
403
- });
404
- }); });
405
- it('should return empty object if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
406
- var getFlag, flagsAll;
407
- return __generator(this, function (_a) {
408
- switch (_a.label) {
409
- case 0:
410
- jest.doMock('@optimizely/optimizely-sdk', function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk')), { createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
411
- decide: jest
412
- .fn()
413
- .mockImplementation(function (options) {
414
- return undefined;
415
- }),
416
- }); }, onReady: jest.fn().mockResolvedValue({ success: true }), close: jest.fn().mockResolvedValue({ success: true }) })); } })); });
417
- getFlag = require('../utils').getFlag;
418
- return [4 /*yield*/, getFlag('testing_flag_with_variations_and_variables')];
419
- case 1:
420
- flagsAll = _a.sent();
421
- expect(flagsAll).toEqual({});
422
- return [2 /*return*/];
423
- }
424
- });
425
- }); });
426
- it('should return defaultFeatureFlags when they have been passed and optimizely client is not ready', function () { return __awaiter(void 0, void 0, void 0, function () {
427
- var getFlag, options, flag;
428
- return __generator(this, function (_a) {
429
- switch (_a.label) {
430
- case 0:
431
- jest.doMock('@optimizely/optimizely-sdk', function () { return ({
432
- createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
433
- decide: jest
434
- .fn()
435
- .mockImplementation(function (key, options) {
436
- return flagsMock[key];
437
- }),
438
- }); }, onReady: jest
439
- .fn()
440
- .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
441
- }); });
442
- getFlag = require('../utils').getFlag;
443
- options = {
444
- defaultFeatureFlags: {
445
- default_flag: {
446
- variationKey: 'off',
447
- enabled: true,
448
- variables: {},
449
- },
450
- },
451
- };
452
- return [4 /*yield*/, getFlag('testing_flag_with_variations_and_variables', options)];
453
- case 1:
454
- flag = _a.sent();
455
- expect(flag).toEqual(options.defaultFeatureFlags);
456
- return [2 /*return*/];
457
- }
458
- });
459
- }); });
460
- it('should return empty object when no default flag have been passed and optimizely client is not ready', function () { return __awaiter(void 0, void 0, void 0, function () {
461
- var getFlag, flag;
462
- return __generator(this, function (_a) {
463
- switch (_a.label) {
464
- case 0:
465
- jest.doMock('@optimizely/optimizely-sdk', function () { return ({
466
- createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
467
- decide: jest
468
- .fn()
469
- .mockImplementation(function (key, options) {
470
- return flagsMock[key];
471
- }),
472
- }); }, onReady: jest
473
- .fn()
474
- .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
475
- }); });
476
- getFlag = require('../utils').getFlag;
477
- return [4 /*yield*/, getFlag('testing_flag_with_variations_and_variables')];
478
- case 1:
479
- flag = _a.sent();
480
- expect(flag).toEqual({});
481
- return [2 /*return*/];
482
- }
483
- });
484
- }); });
485
- });
486
- describe('getFlagsByKeys', function () {
487
- it('should return flags by keys with default options', function () { return __awaiter(void 0, void 0, void 0, function () {
488
- var flagsByKeys;
489
- return __generator(this, function (_a) {
490
- switch (_a.label) {
491
- case 0: return [4 /*yield*/, (0, utils_1.getFlagsByKeys)([
492
- 'another_test_flag_1',
493
- 'qualtrics_flag',
494
- ])];
495
- case 1:
496
- flagsByKeys = _a.sent();
497
- expect(flagsByKeys).toEqual({
498
- qualtrics_flag: { variationKey: 'on', enabled: true, variables: {} },
499
- another_test_flag_1: {
500
- variationKey: 'off',
501
- enabled: false,
502
- variables: {},
503
- },
504
- });
505
- return [2 /*return*/];
506
- }
507
- });
508
- }); });
509
- it('should return empty object if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
510
- var getFlagsByKeys, flagsAll;
511
- return __generator(this, function (_a) {
512
- switch (_a.label) {
513
- case 0:
514
- jest.doMock('@optimizely/optimizely-sdk', function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk')), { createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
515
- decideForKeys: jest
516
- .fn()
517
- .mockImplementation(function (options) {
518
- return undefined;
519
- }),
520
- }); }, onReady: jest.fn().mockResolvedValue({ success: true }), close: jest.fn().mockResolvedValue({ success: true }) })); } })); });
521
- getFlagsByKeys = require('../utils').getFlagsByKeys;
522
- return [4 /*yield*/, getFlagsByKeys([
523
- 'another_test_flag_1',
524
- 'qualtrics_flag',
525
- ])];
526
- case 1:
527
- flagsAll = _a.sent();
528
- expect(flagsAll).toEqual({});
529
- return [2 /*return*/];
530
- }
531
- });
532
- }); });
533
- it('should return defaultFeatureFlags when they have been passed and optimizely client is not ready', function () { return __awaiter(void 0, void 0, void 0, function () {
534
- var getFlagsByKeys, options, flagsByKeys;
535
- return __generator(this, function (_a) {
536
- switch (_a.label) {
537
- case 0:
538
- jest.doMock('@optimizely/optimizely-sdk', function () { return ({
539
- createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
540
- decideForKeys: jest
541
- .fn()
542
- .mockImplementation(function (keys, options) {
543
- var filtered = {};
544
- keys.forEach(function (k) { return (filtered[k] = flagsMock[k]); });
545
- return filtered;
546
- }),
547
- }); }, onReady: jest
548
- .fn()
549
- .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
550
- }); });
551
- getFlagsByKeys = require('../utils').getFlagsByKeys;
552
- options = {
553
- defaultFeatureFlags: {
554
- default_flag: {
555
- variationKey: 'off',
556
- enabled: true,
557
- variables: {},
558
- },
559
- },
560
- };
561
- return [4 /*yield*/, getFlagsByKeys(['another_test_flag_1', 'qualtrics_flag'], options)];
562
- case 1:
563
- flagsByKeys = _a.sent();
564
- expect(flagsByKeys).toEqual(options.defaultFeatureFlags);
565
- return [2 /*return*/];
566
- }
567
- });
568
- }); });
569
- it('should return empty object when no default flag have been passed and optimizely client is not ready', function () { return __awaiter(void 0, void 0, void 0, function () {
570
- var getFlagsByKeys, flagsByKeys;
571
- return __generator(this, function (_a) {
572
- switch (_a.label) {
573
- case 0:
574
- jest.doMock('@optimizely/optimizely-sdk', function () { return ({
575
- createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
576
- decideForKeys: jest
577
- .fn()
578
- .mockImplementation(function (keys, options) {
579
- var filtered = {};
580
- keys.forEach(function (k) { return (filtered[k] = flagsMock[k]); });
581
- return filtered;
582
- }),
583
- }); }, onReady: jest
584
- .fn()
585
- .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
586
- }); });
587
- getFlagsByKeys = require('../utils').getFlagsByKeys;
588
- return [4 /*yield*/, getFlagsByKeys([
589
- 'another_test_flag_1',
590
- 'qualtrics_flag',
591
- ])];
592
- case 1:
593
- flagsByKeys = _a.sent();
594
- expect(flagsByKeys).toEqual({});
595
- return [2 /*return*/];
596
- }
597
- });
598
- }); });
599
- });
600
- describe('closeFlagsInstance', function () {
601
- it('should close sdk instance sucessfully', function () { return __awaiter(void 0, void 0, void 0, function () {
602
- var spy;
603
- return __generator(this, function (_a) {
604
- switch (_a.label) {
605
- case 0:
606
- spy = jest.spyOn(console, 'log');
607
- return [4 /*yield*/, (0, utils_1.getFlag)('testing_flag_with_variations_and_variables')];
608
- case 1:
609
- _a.sent();
610
- return [4 /*yield*/, (0, utils_1.closeFlagsInstance)()];
611
- case 2:
612
- _a.sent();
613
- expect(spy).toHaveBeenCalledWith('optimizely instance closed successfully');
614
- return [2 /*return*/];
615
- }
616
- });
617
- }); });
618
- it('should not close sdk instance sucessfully', function () { return __awaiter(void 0, void 0, void 0, function () {
619
- var spy, _a, getFlag, closeFlagsInstance;
620
- return __generator(this, function (_b) {
621
- switch (_b.label) {
622
- case 0:
623
- spy = jest.spyOn(console, 'log');
624
- jest.doMock('@optimizely/optimizely-sdk', function () { return ({
625
- createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
626
- decide: jest
627
- .fn()
628
- .mockImplementation(function (key, options) {
629
- return flagsMock[key];
630
- }),
631
- }); }, onReady: jest.fn().mockResolvedValue({ success: true }), close: jest
632
- .fn()
633
- .mockResolvedValue({ success: false, reason: 'Closing rejected' }) })); },
634
- }); });
635
- _a = require('../utils'), getFlag = _a.getFlag, closeFlagsInstance = _a.closeFlagsInstance;
636
- return [4 /*yield*/, getFlag('testing_flag_with_variations_and_variables')];
637
- case 1:
638
- _b.sent();
639
- return [4 /*yield*/, closeFlagsInstance()];
640
- case 2:
641
- _b.sent();
642
- expect(spy).toHaveBeenCalledWith('closing Optimizely instance failed, reason: Closing rejected');
643
- return [2 /*return*/];
644
- }
645
- });
646
- }); });
647
375
  });
376
+ // describe('getFlagsAll', () => {
377
+ // it('should return defaultFeatureFlags when they have been passed and optimizely client is not ready', async () => {
378
+ // jest.doMock('@optimizely/optimizely-sdk', () => ({
379
+ // createInstance: () => ({
380
+ // ...jest.requireActual('@optimizely/optimizely-sdk').createInstance,
381
+ // createUserContext: () => ({
382
+ // decideAll: jest
383
+ // .fn()
384
+ // .mockImplementation((options?: OptimizelyDecideOption[]) => {
385
+ // return flagsMock as {
386
+ // [key: string]: Omit<OptimizelyDecision, 'userContext'>
387
+ // }
388
+ // }),
389
+ // }),
390
+ // onReady: jest
391
+ // .fn()
392
+ // .mockResolvedValue({ success: false, reason: 'Promise rejected' }),
393
+ // }),
394
+ // }))
395
+ // const { getFlagsAll } = require('../utils')
396
+ // const options: SDKConfig = {
397
+ // defaultFeatureFlags: {
398
+ // default_flag: {
399
+ // variationKey: 'off',
400
+ // enabled: true,
401
+ // variables: {},
402
+ // },
403
+ // },
404
+ // }
405
+ // const flagsAll = await getFlagsAll(options)
406
+ // expect(flagsAll).toEqual(options.defaultFeatureFlags)
407
+ // })
408
+ // it('should return empty object when no default flag have been passed and optimizely client is not ready', async () => {
409
+ // jest.doMock('@optimizely/optimizely-sdk', () => ({
410
+ // createInstance: () => ({
411
+ // ...jest.requireActual('@optimizely/optimizely-sdk').createInstance,
412
+ // createUserContext: () => ({
413
+ // decideAll: jest
414
+ // .fn()
415
+ // .mockImplementation((options?: OptimizelyDecideOption[]) => {
416
+ // return flagsMock as {
417
+ // [key: string]: Omit<OptimizelyDecision, 'userContext'>
418
+ // }
419
+ // }),
420
+ // }),
421
+ // onReady: jest
422
+ // .fn()
423
+ // .mockResolvedValue({ success: false, reason: 'Promise rejected' }),
424
+ // }),
425
+ // }))
426
+ // const { getFlagsAll } = require('../utils')
427
+ // const flagsAll = await getFlagsAll()
428
+ // expect(flagsAll).toEqual({})
429
+ // })
430
+ // })
431
+ // describe('closeFlagsInstance', () => {
432
+ // it('should close sdk instance successfully', async () => {
433
+ // const spy = jest.spyOn(console, 'log')
434
+ // await getFlagsAll()
435
+ // await closeFlagsInstance()
436
+ // expect(spy).toHaveBeenCalledWith('optimizely instance closed successfully')
437
+ // })
438
+ // it('should not close sdk instance sucessfully', async () => {
439
+ // const spy = jest.spyOn(console, 'log')
440
+ // jest.doMock('@optimizely/optimizely-sdk', () => ({
441
+ // createInstance: () => ({
442
+ // ...jest.requireActual('@optimizely/optimizely-sdk').createInstance,
443
+ // createUserContext: () => ({
444
+ // decide: jest
445
+ // .fn()
446
+ // .mockImplementation(
447
+ // (key: string, options?: OptimizelyDecideOption[]) => {
448
+ // return getFlagsAll as Omit<OptimizelyDecision, 'userContext'>
449
+ // }
450
+ // ),
451
+ // }),
452
+ // onReady: jest.fn().mockResolvedValue({ success: true }),
453
+ // close: jest
454
+ // .fn()
455
+ // .mockResolvedValue({ success: false, reason: 'Closing rejected' }),
456
+ // }),
457
+ // }))
458
+ // const { getFlagsAll, closeFlagsInstance } = require('../utils')
459
+ // await getFlagsAll()
460
+ // await closeFlagsInstance()
461
+ // expect(spy).toHaveBeenCalledWith(
462
+ // 'closing Optimizely instance failed, reason: Closing rejected'
463
+ // )
464
+ // })
465
+ // })
466
+ // describe('getFlag', () => {
467
+ // it('should return a flag with default options', async () => {
468
+ // const flag = await getFlag('testing_flag_with_variations_and_variables')
469
+ // expect(flag).toEqual({
470
+ // testing_flag_with_variations_and_variables: {
471
+ // variationKey: 'primary_with_new_weclome_message_and_max_accounts',
472
+ // enabled: true,
473
+ // variables: {
474
+ // family_primary_welcome_message: 'This is the new message',
475
+ // family_primary_enable_secondary_accounts: true,
476
+ // family_primary_max_secondary_accounts: 10,
477
+ // family_primary_metadata_json: {
478
+ // metadata1: 'a',
479
+ // },
480
+ // },
481
+ // },
482
+ // })
483
+ // })
484
+ // it('should return empty object if no flags are fetched', async () => {
485
+ // jest.doMock('@optimizely/optimizely-sdk', () => ({
486
+ // ...jest.requireActual('@optimizely/optimizely-sdk'),
487
+ // createInstance: () => ({
488
+ // ...jest.requireActual('@optimizely/optimizely-sdk').createInstance,
489
+ // createUserContext: () => ({
490
+ // decide: jest
491
+ // .fn()
492
+ // .mockImplementation((options?: OptimizelyDecideOption[]) => {
493
+ // return undefined
494
+ // }),
495
+ // }),
496
+ // onReady: jest.fn().mockResolvedValue({ success: true }),
497
+ // close: jest.fn().mockResolvedValue({ success: true }),
498
+ // }),
499
+ // }))
500
+ // const { getFlag } = require('../utils')
501
+ // const flagsAll = await getFlag('testing_flag_with_variations_and_variables')
502
+ // expect(flagsAll).toEqual({})
503
+ // })
504
+ // it('should return defaultFeatureFlags when they have been passed and optimizely client is not ready', async () => {
505
+ // jest.doMock('@optimizely/optimizely-sdk', () => ({
506
+ // createInstance: () => ({
507
+ // ...jest.requireActual('@optimizely/optimizely-sdk').createInstance,
508
+ // createUserContext: () => ({
509
+ // decide: jest
510
+ // .fn()
511
+ // .mockImplementation(
512
+ // (key: string, options?: OptimizelyDecideOption[]) => {
513
+ // return flagsMock[key] as Omit<OptimizelyDecision, 'userContext'>
514
+ // }
515
+ // ),
516
+ // }),
517
+ // onReady: jest
518
+ // .fn()
519
+ // .mockResolvedValue({ success: false, reason: 'Promise rejected' }),
520
+ // }),
521
+ // }))
522
+ // const { getFlag } = require('../utils')
523
+ // const options: SDKConfig = {
524
+ // defaultFeatureFlags: {
525
+ // default_flag: {
526
+ // variationKey: 'off',
527
+ // enabled: true,
528
+ // variables: {},
529
+ // },
530
+ // },
531
+ // }
532
+ // const flag = await getFlag(
533
+ // 'testing_flag_with_variations_and_variables',
534
+ // options
535
+ // )
536
+ // expect(flag).toEqual(options.defaultFeatureFlags)
537
+ // })
538
+ // it('should return empty object when no default flag have been passed and optimizely client is not ready', async () => {
539
+ // jest.doMock('@optimizely/optimizely-sdk', () => ({
540
+ // createInstance: () => ({
541
+ // ...jest.requireActual('@optimizely/optimizely-sdk').createInstance,
542
+ // createUserContext: () => ({
543
+ // decide: jest
544
+ // .fn()
545
+ // .mockImplementation(
546
+ // (key: string, options?: OptimizelyDecideOption[]) => {
547
+ // return flagsMock[key] as Omit<OptimizelyDecision, 'userContext'>
548
+ // }
549
+ // ),
550
+ // }),
551
+ // onReady: jest
552
+ // .fn()
553
+ // .mockResolvedValue({ success: false, reason: 'Promise rejected' }),
554
+ // }),
555
+ // }))
556
+ // const { getFlag } = require('../utils')
557
+ // const flag = await getFlag('testing_flag_with_variations_and_variables')
558
+ // expect(flag).toEqual({})
559
+ // })
560
+ // })
561
+ // describe('getFlagsByKeys', () => {
562
+ // it('should return flags by keys with default options', async () => {
563
+ // const flagsByKeys = await getFlagsByKeys([
564
+ // 'another_test_flag_1',
565
+ // 'qualtrics_flag',
566
+ // ])
567
+ // expect(flagsByKeys).toEqual({
568
+ // qualtrics_flag: { variationKey: 'on', enabled: true, variables: {} },
569
+ // another_test_flag_1: {
570
+ // variationKey: 'off',
571
+ // enabled: false,
572
+ // variables: {},
573
+ // },
574
+ // })
575
+ // })
576
+ // it('should return empty object if no flags are fetched', async () => {
577
+ // jest.doMock('@optimizely/optimizely-sdk', () => ({
578
+ // ...jest.requireActual('@optimizely/optimizely-sdk'),
579
+ // createInstance: () => ({
580
+ // ...jest.requireActual('@optimizely/optimizely-sdk').createInstance,
581
+ // createUserContext: () => ({
582
+ // decideForKeys: jest
583
+ // .fn()
584
+ // .mockImplementation((options?: OptimizelyDecideOption[]) => {
585
+ // return undefined
586
+ // }),
587
+ // }),
588
+ // onReady: jest.fn().mockResolvedValue({ success: true }),
589
+ // close: jest.fn().mockResolvedValue({ success: true }),
590
+ // }),
591
+ // }))
592
+ // const { getFlagsByKeys } = require('../utils')
593
+ // const flagsAll = await getFlagsByKeys([
594
+ // 'another_test_flag_1',
595
+ // 'qualtrics_flag',
596
+ // ])
597
+ // expect(flagsAll).toEqual({})
598
+ // })
599
+ // it('should return defaultFeatureFlags when they have been passed and optimizely client is not ready', async () => {
600
+ // jest.doMock('@optimizely/optimizely-sdk', () => ({
601
+ // createInstance: () => ({
602
+ // ...jest.requireActual('@optimizely/optimizely-sdk').createInstance,
603
+ // createUserContext: () => ({
604
+ // decideForKeys: jest
605
+ // .fn()
606
+ // .mockImplementation(
607
+ // (keys: string[], options?: OptimizelyDecideOption[]) => {
608
+ // const filtered: {
609
+ // [key: string]: Omit<OptimizelyDecision, 'userContext'>
610
+ // } = {}
611
+ // keys.forEach((k) => (filtered[k] = flagsMock[k]))
612
+ // return filtered
613
+ // }
614
+ // ),
615
+ // }),
616
+ // onReady: jest
617
+ // .fn()
618
+ // .mockResolvedValue({ success: false, reason: 'Promise rejected' }),
619
+ // }),
620
+ // }))
621
+ // const { getFlagsByKeys } = require('../utils')
622
+ // const options: SDKConfig = {
623
+ // defaultFeatureFlags: {
624
+ // default_flag: {
625
+ // variationKey: 'off',
626
+ // enabled: true,
627
+ // variables: {},
628
+ // },
629
+ // },
630
+ // }
631
+ // const flagsByKeys = await getFlagsByKeys(
632
+ // ['another_test_flag_1', 'qualtrics_flag'],
633
+ // options
634
+ // )
635
+ // expect(flagsByKeys).toEqual(options.defaultFeatureFlags)
636
+ // })
637
+ // it('should return empty object when no default flag have been passed and optimizely client is not ready', async () => {
638
+ // jest.doMock('@optimizely/optimizely-sdk', () => ({
639
+ // createInstance: () => ({
640
+ // ...jest.requireActual('@optimizely/optimizely-sdk').createInstance,
641
+ // createUserContext: () => ({
642
+ // decideForKeys: jest
643
+ // .fn()
644
+ // .mockImplementation(
645
+ // (keys: string[], options?: OptimizelyDecideOption[]) => {
646
+ // const filtered: {
647
+ // [key: string]: Omit<OptimizelyDecision, 'userContext'>
648
+ // } = {}
649
+ // keys.forEach((k) => (filtered[k] = flagsMock[k]))
650
+ // return filtered
651
+ // }
652
+ // ),
653
+ // }),
654
+ // onReady: jest
655
+ // .fn()
656
+ // .mockResolvedValue({ success: false, reason: 'Promise rejected' }),
657
+ // }),
658
+ // }))
659
+ // const { getFlagsByKeys } = require('../utils')
660
+ // const flagsByKeys = await getFlagsByKeys([
661
+ // 'another_test_flag_1',
662
+ // 'qualtrics_flag',
663
+ // ])
664
+ // expect(flagsByKeys).toEqual({})
665
+ // })
666
+ // })
648
667
  //# sourceMappingURL=utils.tests.js.map