@newskit-render/feature-flags 1.9.1 → 1.10.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.
@@ -53,62 +53,59 @@ var originalEnv = process.env;
53
53
  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 ({
54
54
  decide: jest
55
55
  .fn()
56
- .mockImplementation(function (key, options) {
56
+ .mockImplementation(function (key, config) {
57
57
  return flagsMock[key];
58
58
  }),
59
59
  decideForKeys: jest
60
60
  .fn()
61
- .mockImplementation(function (keys, options) {
61
+ .mockImplementation(function (keys, config) {
62
62
  var filtered = {};
63
63
  keys.forEach(function (k) { return (filtered[k] = flagsMock[k]); });
64
64
  return filtered;
65
65
  }),
66
66
  decideAll: jest
67
67
  .fn()
68
- .mockImplementation(function (options) {
68
+ .mockImplementation(function (config) {
69
69
  return flagsMock;
70
70
  }),
71
71
  }); }, onReady: jest.fn().mockResolvedValue({ success: true }), close: jest.fn().mockResolvedValue({ success: true }) })); }, setLogLevel: jest.fn(), setLogger: jest.fn() })); });
72
72
  var flagsMock = {
73
- qualtrics_flag: {
73
+ test_flag_1: {
74
74
  variationKey: 'on',
75
75
  enabled: true,
76
76
  variables: {},
77
77
  ruleKey: 'default-rollout-216689-29200910123',
78
- flagKey: 'qualtrics_flag',
78
+ flagKey: 'test_flag_1',
79
79
  userContext: {
80
80
  _qualifiedSegments: null,
81
- // optimizely: [e],
82
81
  userId: 'user123',
83
82
  attributes: {},
84
83
  forcedDecisionsMap: {},
85
84
  },
86
85
  reasons: [],
87
86
  },
88
- testing_flag: {
87
+ test_flag_2: {
89
88
  variationKey: 'max_10',
90
89
  enabled: true,
91
90
  variables: { max_family_members: 10 },
92
91
  ruleKey: 'default-rollout-223709-29200910123',
93
- flagKey: 'testing_flag',
92
+ flagKey: 'test_flag_2',
94
93
  userContext: {
95
94
  _qualifiedSegments: null,
96
- // optimizely: [e],
97
95
  userId: 'user123',
98
96
  attributes: {},
99
97
  forcedDecisionsMap: {},
100
98
  },
101
99
  reasons: [],
102
100
  },
103
- another_test_flag_1: {
101
+ test_flag_3: {
104
102
  variationKey: 'off',
105
103
  enabled: false,
106
104
  variables: {},
107
105
  ruleKey: 'default-rollout-225089-29200910123',
108
- flagKey: 'another_test_flag_1',
106
+ flagKey: 'test_flag_3',
109
107
  userContext: {
110
108
  _qualifiedSegments: null,
111
- // optimizely: [e],
112
109
  userId: 'user123',
113
110
  attributes: {},
114
111
  forcedDecisionsMap: {},
@@ -138,51 +135,55 @@ var flagsMock = {
138
135
  reasons: [],
139
136
  },
140
137
  };
141
- // TO DO: Improve test coverage
142
138
  beforeEach(function () {
143
139
  jest.resetModules();
144
140
  process.env = __assign(__assign({}, originalEnv), { OPTIMIZELY_SDK_KEY: 'optimizely-sdk-key' });
145
141
  });
146
- afterEach(function () {
147
- (0, utils_1._resetInstance)();
148
- });
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 () {
142
+ var optionsWithIncludeFlagVariables = {
143
+ includeFlagVariables: true,
144
+ };
145
+ var optionsWithDefaultFlags = {
146
+ defaultFeatureFlags: {
147
+ default_flag: {
148
+ variationKey: 'off',
149
+ enabled: true,
150
+ variables: {},
151
+ },
152
+ },
153
+ };
154
+ describe('getAllFeatureFlags', function () {
155
+ it('should return all flags data in flat mode with default config', function () { return __awaiter(void 0, void 0, void 0, function () {
151
156
  var flagsAll;
152
157
  return __generator(this, function (_a) {
153
158
  switch (_a.label) {
154
- case 0: return [4 /*yield*/, (0, utils_1.initAndGetFeatureFlag)()];
159
+ case 0: return [4 /*yield*/, (0, utils_1.getAllFeatureFlags)()];
155
160
  case 1:
156
161
  flagsAll = _a.sent();
157
162
  expect(flagsAll).toEqual({
158
- another_test_flag_1: false,
159
- qualtrics_flag: true,
160
- testing_flag: true,
163
+ test_flag_3: false,
164
+ test_flag_1: true,
165
+ test_flag_2: true,
161
166
  testing_flag_with_variations_and_variables: true,
162
167
  });
163
168
  return [2 /*return*/];
164
169
  }
165
170
  });
166
171
  }); });
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;
172
+ it('should return all flags with included variable data when "includeFlagVariables: true" is added in the config', function () { return __awaiter(void 0, void 0, void 0, function () {
173
+ var flagsAll;
169
174
  return __generator(this, function (_a) {
170
175
  switch (_a.label) {
171
- case 0:
172
- options = {
173
- includeFlagVariables: true,
174
- };
175
- return [4 /*yield*/, (0, utils_1.initAndGetFeatureFlag)(options)];
176
+ case 0: return [4 /*yield*/, (0, utils_1.getAllFeatureFlags)(optionsWithIncludeFlagVariables)];
176
177
  case 1:
177
178
  flagsAll = _a.sent();
178
179
  expect(flagsAll).toEqual({
179
- qualtrics_flag: { variationKey: 'on', enabled: true, variables: {} },
180
- testing_flag: {
180
+ test_flag_1: { variationKey: 'on', enabled: true, variables: {} },
181
+ test_flag_2: {
181
182
  variationKey: 'max_10',
182
183
  enabled: true,
183
184
  variables: { max_family_members: 10 },
184
185
  },
185
- another_test_flag_1: {
186
+ test_flag_3: {
186
187
  variationKey: 'off',
187
188
  enabled: false,
188
189
  variables: {},
@@ -205,19 +206,19 @@ describe('initAndGetFeatureFlag', function () {
205
206
  });
206
207
  }); });
207
208
  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
+ var getAllFeatureFlags, flagsAll;
209
210
  return __generator(this, function (_a) {
210
211
  switch (_a.label) {
211
212
  case 0:
212
213
  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
214
  decideAll: jest
214
215
  .fn()
215
- .mockImplementation(function (options) {
216
+ .mockImplementation(function (config) {
216
217
  return undefined;
217
218
  }),
218
- }); }, onReady: jest.fn().mockResolvedValue({ success: true }), close: jest.fn().mockResolvedValue({ success: true }) })); } })); });
219
- initAndGetFeatureFlag = require('../utils').initAndGetFeatureFlag;
220
- return [4 /*yield*/, initAndGetFeatureFlag()];
219
+ }); }, onReady: jest.fn().mockResolvedValue({ success: true }) })); } })); });
220
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
221
+ return [4 /*yield*/, getAllFeatureFlags()];
221
222
  case 1:
222
223
  flagsAll = _a.sent();
223
224
  expect(flagsAll).toEqual({});
@@ -225,13 +226,34 @@ describe('initAndGetFeatureFlag', function () {
225
226
  }
226
227
  });
227
228
  }); });
228
- it('should return all flags with custom options', function () { return __awaiter(void 0, void 0, void 0, function () {
229
- var options, flagsAll;
229
+ it('should return the defaultFeatureFlags if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
230
+ var getAllFeatureFlags, flagsAll;
231
+ return __generator(this, function (_a) {
232
+ switch (_a.label) {
233
+ case 0:
234
+ 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 ({
235
+ decideAll: jest
236
+ .fn()
237
+ .mockImplementation(function (config) {
238
+ return undefined;
239
+ }),
240
+ }); }, onReady: jest.fn().mockResolvedValue({ success: true }) })); } })); });
241
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
242
+ return [4 /*yield*/, getAllFeatureFlags(optionsWithDefaultFlags)];
243
+ case 1:
244
+ flagsAll = _a.sent();
245
+ expect(flagsAll).toEqual(optionsWithDefaultFlags.defaultFeatureFlags);
246
+ return [2 /*return*/];
247
+ }
248
+ });
249
+ }); });
250
+ it('should return all flags with custom config', function () { return __awaiter(void 0, void 0, void 0, function () {
251
+ var config, flagsAll;
230
252
  return __generator(this, function (_a) {
231
253
  switch (_a.label) {
232
254
  case 0:
233
255
  process.env = __assign(__assign({}, originalEnv), { OPTIMIZELY_SDK_KEY: undefined });
234
- options = {
256
+ config = {
235
257
  sdkConfig: {
236
258
  sdkKey: 'custom-optimizely-sdk',
237
259
  },
@@ -241,17 +263,17 @@ describe('initAndGetFeatureFlag', function () {
241
263
  },
242
264
  includeFlagVariables: true,
243
265
  };
244
- return [4 /*yield*/, (0, utils_1.initAndGetFeatureFlag)(options)];
266
+ return [4 /*yield*/, (0, utils_1.getAllFeatureFlags)(config)];
245
267
  case 1:
246
268
  flagsAll = _a.sent();
247
269
  expect(flagsAll).toEqual({
248
- qualtrics_flag: { variationKey: 'on', enabled: true, variables: {} },
249
- testing_flag: {
270
+ test_flag_1: { variationKey: 'on', enabled: true, variables: {} },
271
+ test_flag_2: {
250
272
  variationKey: 'max_10',
251
273
  enabled: true,
252
274
  variables: { max_family_members: 10 },
253
275
  },
254
- another_test_flag_1: {
276
+ test_flag_3: {
255
277
  variationKey: 'off',
256
278
  enabled: false,
257
279
  variables: {},
@@ -279,7 +301,7 @@ describe('initAndGetFeatureFlag', function () {
279
301
  switch (_a.label) {
280
302
  case 0:
281
303
  process.env = __assign(__assign({}, originalEnv), { OPTIMIZELY_SDK_KEY: undefined });
282
- return [4 /*yield*/, (0, utils_1.initAndGetFeatureFlag)()];
304
+ return [4 /*yield*/, (0, utils_1.getAllFeatureFlags)()];
283
305
  case 1:
284
306
  flagsAll = _a.sent();
285
307
  expect(flagsAll).toEqual({});
@@ -288,15 +310,15 @@ describe('initAndGetFeatureFlag', function () {
288
310
  });
289
311
  }); });
290
312
  it('should return empty object when sdk not initialized', function () { return __awaiter(void 0, void 0, void 0, function () {
291
- var initAndGetFeatureFlag, flagsAll;
313
+ var getAllFeatureFlags, flagsAll;
292
314
  return __generator(this, function (_a) {
293
315
  switch (_a.label) {
294
316
  case 0:
295
317
  jest.doMock('@optimizely/optimizely-sdk', function () { return ({
296
318
  createInstance: jest.fn().mockReturnValue(null),
297
319
  }); });
298
- initAndGetFeatureFlag = require('../utils').initAndGetFeatureFlag;
299
- return [4 /*yield*/, initAndGetFeatureFlag()];
320
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
321
+ return [4 /*yield*/, getAllFeatureFlags()];
300
322
  case 1:
301
323
  flagsAll = _a.sent();
302
324
  expect(flagsAll).toEqual({});
@@ -305,15 +327,15 @@ describe('initAndGetFeatureFlag', function () {
305
327
  });
306
328
  }); });
307
329
  it('should return empty object when user context not initialized', function () { return __awaiter(void 0, void 0, void 0, function () {
308
- var initAndGetFeatureFlag, flagsAll;
330
+ var getAllFeatureFlags, flagsAll;
309
331
  return __generator(this, function (_a) {
310
332
  switch (_a.label) {
311
333
  case 0:
312
334
  jest.doMock('@optimizely/optimizely-sdk', function () { return ({
313
335
  createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: jest.fn().mockReturnValue(null), onReady: jest.fn().mockResolvedValue({ success: true }) })); },
314
336
  }); });
315
- initAndGetFeatureFlag = require('../utils').initAndGetFeatureFlag;
316
- return [4 /*yield*/, initAndGetFeatureFlag()];
337
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
338
+ return [4 /*yield*/, getAllFeatureFlags()];
317
339
  case 1:
318
340
  flagsAll = _a.sent();
319
341
  expect(flagsAll).toEqual({});
@@ -322,14 +344,14 @@ describe('initAndGetFeatureFlag', function () {
322
344
  });
323
345
  }); });
324
346
  it('should instantiate logger with log level', function () { return __awaiter(void 0, void 0, void 0, function () {
325
- var options;
347
+ var config;
326
348
  return __generator(this, function (_a) {
327
349
  switch (_a.label) {
328
350
  case 0:
329
- options = {
351
+ config = {
330
352
  logLevel: 'critical',
331
353
  };
332
- return [4 /*yield*/, (0, utils_1.initAndGetFeatureFlag)(options)];
354
+ return [4 /*yield*/, (0, utils_1.getAllFeatureFlags)(config)];
333
355
  case 1:
334
356
  _a.sent();
335
357
  expect(optimizely_sdk_1.setLogLevel).toBeCalledWith('critical');
@@ -339,7 +361,7 @@ describe('initAndGetFeatureFlag', function () {
339
361
  });
340
362
  }); });
341
363
  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 () {
342
- var initAndGetFeatureFlag, options, flagsAll;
364
+ var getAllFeatureFlags, flagsAll;
343
365
  return __generator(this, function (_a) {
344
366
  switch (_a.label) {
345
367
  case 0:
@@ -347,15 +369,102 @@ describe('initAndGetFeatureFlag', function () {
347
369
  createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
348
370
  decideAll: jest
349
371
  .fn()
350
- .mockImplementation(function (options) {
372
+ .mockImplementation(function (config) {
351
373
  return flagsMock;
352
374
  }),
353
375
  }); }, onReady: jest
354
376
  .fn()
355
377
  .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
356
378
  }); });
357
- initAndGetFeatureFlag = require('../utils').initAndGetFeatureFlag;
358
- options = {
379
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
380
+ return [4 /*yield*/, getAllFeatureFlags(optionsWithDefaultFlags)];
381
+ case 1:
382
+ flagsAll = _a.sent();
383
+ expect(flagsAll).toEqual(optionsWithDefaultFlags.defaultFeatureFlags);
384
+ return [2 /*return*/];
385
+ }
386
+ });
387
+ }); });
388
+ });
389
+ describe('getFeatureFlagsByKeys', function () {
390
+ it('should return only the requested feature flags included variable data when "includeFlagVariables: true" is added in the config', function () { return __awaiter(void 0, void 0, void 0, function () {
391
+ var flagsByKeys;
392
+ return __generator(this, function (_a) {
393
+ switch (_a.label) {
394
+ case 0: return [4 /*yield*/, (0, utils_1.getFeatureFlagsByKeys)(['test_flag_3', 'test_flag_1'], optionsWithIncludeFlagVariables)];
395
+ case 1:
396
+ flagsByKeys = _a.sent();
397
+ expect(flagsByKeys).toEqual({
398
+ test_flag_1: { variationKey: 'on', enabled: true, variables: {} },
399
+ test_flag_3: {
400
+ variationKey: 'off',
401
+ enabled: false,
402
+ variables: {},
403
+ },
404
+ });
405
+ return [2 /*return*/];
406
+ }
407
+ });
408
+ }); });
409
+ it('should return only the requested feature flags in flat mode with default config', function () { return __awaiter(void 0, void 0, void 0, function () {
410
+ var flagsByKeys;
411
+ return __generator(this, function (_a) {
412
+ switch (_a.label) {
413
+ case 0: return [4 /*yield*/, (0, utils_1.getFeatureFlagsByKeys)([
414
+ 'test_flag_3',
415
+ 'test_flag_1',
416
+ ])];
417
+ case 1:
418
+ flagsByKeys = _a.sent();
419
+ expect(flagsByKeys).toEqual({
420
+ test_flag_1: true,
421
+ test_flag_3: false,
422
+ });
423
+ return [2 /*return*/];
424
+ }
425
+ });
426
+ }); });
427
+ it('should return empty object if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
428
+ var getFeatureFlagsByKeys, flagsAll;
429
+ return __generator(this, function (_a) {
430
+ switch (_a.label) {
431
+ case 0:
432
+ 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 ({
433
+ decideForKeys: jest
434
+ .fn()
435
+ .mockImplementation(function (config) {
436
+ return undefined;
437
+ }),
438
+ }); }, onReady: jest.fn().mockResolvedValue({ success: true }) })); } })); });
439
+ getFeatureFlagsByKeys = require('../utils').getFeatureFlagsByKeys;
440
+ return [4 /*yield*/, getFeatureFlagsByKeys(['test_flag_3', 'test_flag_1'])];
441
+ case 1:
442
+ flagsAll = _a.sent();
443
+ expect(flagsAll).toEqual({});
444
+ return [2 /*return*/];
445
+ }
446
+ });
447
+ }); });
448
+ it('should return defaultFeatureFlags when they have been passed and optimizely client creation fails', function () { return __awaiter(void 0, void 0, void 0, function () {
449
+ var getFeatureFlagsByKeys, config, flagsByKeys;
450
+ return __generator(this, function (_a) {
451
+ switch (_a.label) {
452
+ case 0:
453
+ jest.doMock('@optimizely/optimizely-sdk', function () { return ({
454
+ createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
455
+ decideForKeys: jest
456
+ .fn()
457
+ .mockImplementation(function (keys, config) {
458
+ var filtered = {};
459
+ keys.forEach(function (k) { return (filtered[k] = flagsMock[k]); });
460
+ return filtered;
461
+ }),
462
+ }); }, onReady: jest
463
+ .fn()
464
+ .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
465
+ }); });
466
+ getFeatureFlagsByKeys = require('../utils').getFeatureFlagsByKeys;
467
+ config = {
359
468
  defaultFeatureFlags: {
360
469
  default_flag: {
361
470
  variationKey: 'off',
@@ -364,304 +473,43 @@ describe('initAndGetFeatureFlag', function () {
364
473
  },
365
474
  },
366
475
  };
367
- return [4 /*yield*/, initAndGetFeatureFlag(options)];
476
+ return [4 /*yield*/, getFeatureFlagsByKeys(['test_flag_3', 'test_flag_1'], config)];
368
477
  case 1:
369
- flagsAll = _a.sent();
370
- expect(flagsAll).toEqual(options.defaultFeatureFlags);
478
+ flagsByKeys = _a.sent();
479
+ expect(flagsByKeys).toEqual(config.defaultFeatureFlags);
480
+ return [2 /*return*/];
481
+ }
482
+ });
483
+ }); });
484
+ it('should return empty object when no default flag have been passed and optimizely client creation fails', function () { return __awaiter(void 0, void 0, void 0, function () {
485
+ var getFeatureFlagsByKeys, flagsByKeys;
486
+ return __generator(this, function (_a) {
487
+ switch (_a.label) {
488
+ case 0:
489
+ jest.doMock('@optimizely/optimizely-sdk', function () { return ({
490
+ createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
491
+ decideForKeys: jest
492
+ .fn()
493
+ .mockImplementation(function (keys, config) {
494
+ var filtered = {};
495
+ keys.forEach(function (k) { return (filtered[k] = flagsMock[k]); });
496
+ return filtered;
497
+ }),
498
+ }); }, onReady: jest
499
+ .fn()
500
+ .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
501
+ }); });
502
+ getFeatureFlagsByKeys = require('../utils').getFeatureFlagsByKeys;
503
+ return [4 /*yield*/, getFeatureFlagsByKeys([
504
+ 'test_flag_3',
505
+ 'test_flag_1',
506
+ ])];
507
+ case 1:
508
+ flagsByKeys = _a.sent();
509
+ expect(flagsByKeys).toEqual({});
371
510
  return [2 /*return*/];
372
511
  }
373
512
  });
374
513
  }); });
375
514
  });
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
- // })
667
515
  //# sourceMappingURL=utils.tests.js.map