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