@newskit-render/feature-flags 0.0.0-767f0ff7 → 0.0.0-79f66bf49

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.
@@ -20,8 +20,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
20
20
  });
21
21
  };
22
22
  var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
25
  function verb(n) { return function (v) { return step([n, v]); }; }
26
26
  function step(op) {
27
27
  if (f) throw new TypeError("Generator is already executing.");
@@ -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,30 +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('getFlagsAll', function () {
150
- it('should return all flags 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.getFlagsAll)()];
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
- qualtrics_flag: { variationKey: 'on', enabled: true, variables: {} },
159
- testing_flag: {
163
+ test_flag_3: false,
164
+ test_flag_1: true,
165
+ test_flag_2: true,
166
+ testing_flag_with_variations_and_variables: true,
167
+ });
168
+ return [2 /*return*/];
169
+ }
170
+ });
171
+ }); });
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;
174
+ return __generator(this, function (_a) {
175
+ switch (_a.label) {
176
+ case 0: return [4 /*yield*/, (0, utils_1.getAllFeatureFlags)(optionsWithIncludeFlagVariables)];
177
+ case 1:
178
+ flagsAll = _a.sent();
179
+ expect(flagsAll).toEqual({
180
+ test_flag_1: { variationKey: 'on', enabled: true, variables: {} },
181
+ test_flag_2: {
160
182
  variationKey: 'max_10',
161
183
  enabled: true,
162
184
  variables: { max_family_members: 10 },
163
185
  },
164
- another_test_flag_1: {
186
+ test_flag_3: {
165
187
  variationKey: 'off',
166
188
  enabled: false,
167
189
  variables: {},
@@ -183,13 +205,55 @@ describe('getFlagsAll', function () {
183
205
  }
184
206
  });
185
207
  }); });
186
- it('should return all flags with custom options', function () { return __awaiter(void 0, void 0, void 0, function () {
187
- var options, flagsAll;
208
+ it('should return empty object if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
209
+ var getAllFeatureFlags, flagsAll;
210
+ return __generator(this, function (_a) {
211
+ switch (_a.label) {
212
+ case 0:
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 ({
214
+ decideAll: jest
215
+ .fn()
216
+ .mockImplementation(function (config) {
217
+ return undefined;
218
+ }),
219
+ }); }, onReady: jest.fn().mockResolvedValue({ success: true }) })); } })); });
220
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
221
+ return [4 /*yield*/, getAllFeatureFlags()];
222
+ case 1:
223
+ flagsAll = _a.sent();
224
+ expect(flagsAll).toEqual({});
225
+ return [2 /*return*/];
226
+ }
227
+ });
228
+ }); });
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;
188
252
  return __generator(this, function (_a) {
189
253
  switch (_a.label) {
190
254
  case 0:
191
255
  process.env = __assign(__assign({}, originalEnv), { OPTIMIZELY_SDK_KEY: undefined });
192
- options = {
256
+ config = {
193
257
  sdkConfig: {
194
258
  sdkKey: 'custom-optimizely-sdk',
195
259
  },
@@ -197,18 +261,19 @@ describe('getFlagsAll', function () {
197
261
  userId: 'user456',
198
262
  attributes: { logged_in: true, cpn: 'AAA123', subs_type: 'digi-print' },
199
263
  },
264
+ includeFlagVariables: true,
200
265
  };
201
- return [4 /*yield*/, (0, utils_1.getFlagsAll)(options)];
266
+ return [4 /*yield*/, (0, utils_1.getAllFeatureFlags)(config)];
202
267
  case 1:
203
268
  flagsAll = _a.sent();
204
269
  expect(flagsAll).toEqual({
205
- qualtrics_flag: { variationKey: 'on', enabled: true, variables: {} },
206
- testing_flag: {
270
+ test_flag_1: { variationKey: 'on', enabled: true, variables: {} },
271
+ test_flag_2: {
207
272
  variationKey: 'max_10',
208
273
  enabled: true,
209
274
  variables: { max_family_members: 10 },
210
275
  },
211
- another_test_flag_1: {
276
+ test_flag_3: {
212
277
  variationKey: 'off',
213
278
  enabled: false,
214
279
  variables: {},
@@ -230,34 +295,13 @@ describe('getFlagsAll', function () {
230
295
  }
231
296
  });
232
297
  }); });
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
298
  it('should return empty object when called without sdk key', function () { return __awaiter(void 0, void 0, void 0, function () {
255
299
  var flagsAll;
256
300
  return __generator(this, function (_a) {
257
301
  switch (_a.label) {
258
302
  case 0:
259
303
  process.env = __assign(__assign({}, originalEnv), { OPTIMIZELY_SDK_KEY: undefined });
260
- return [4 /*yield*/, (0, utils_1.getFlagsAll)()];
304
+ return [4 /*yield*/, (0, utils_1.getAllFeatureFlags)()];
261
305
  case 1:
262
306
  flagsAll = _a.sent();
263
307
  expect(flagsAll).toEqual({});
@@ -266,15 +310,15 @@ describe('getFlagsAll', function () {
266
310
  });
267
311
  }); });
268
312
  it('should return empty object when sdk not initialized', function () { return __awaiter(void 0, void 0, void 0, function () {
269
- var getFlagsAll, flagsAll;
313
+ var getAllFeatureFlags, flagsAll;
270
314
  return __generator(this, function (_a) {
271
315
  switch (_a.label) {
272
316
  case 0:
273
317
  jest.doMock('@optimizely/optimizely-sdk', function () { return ({
274
318
  createInstance: jest.fn().mockReturnValue(null),
275
319
  }); });
276
- getFlagsAll = require('../utils').getFlagsAll;
277
- return [4 /*yield*/, getFlagsAll()];
320
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
321
+ return [4 /*yield*/, getAllFeatureFlags()];
278
322
  case 1:
279
323
  flagsAll = _a.sent();
280
324
  expect(flagsAll).toEqual({});
@@ -283,15 +327,15 @@ describe('getFlagsAll', function () {
283
327
  });
284
328
  }); });
285
329
  it('should return empty object when user context not initialized', function () { return __awaiter(void 0, void 0, void 0, function () {
286
- var getFlagsAll, flagsAll;
330
+ var getAllFeatureFlags, flagsAll;
287
331
  return __generator(this, function (_a) {
288
332
  switch (_a.label) {
289
333
  case 0:
290
334
  jest.doMock('@optimizely/optimizely-sdk', function () { return ({
291
335
  createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: jest.fn().mockReturnValue(null), onReady: jest.fn().mockResolvedValue({ success: true }) })); },
292
336
  }); });
293
- getFlagsAll = require('../utils').getFlagsAll;
294
- return [4 /*yield*/, getFlagsAll()];
337
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
338
+ return [4 /*yield*/, getAllFeatureFlags()];
295
339
  case 1:
296
340
  flagsAll = _a.sent();
297
341
  expect(flagsAll).toEqual({});
@@ -300,14 +344,14 @@ describe('getFlagsAll', function () {
300
344
  });
301
345
  }); });
302
346
  it('should instantiate logger with log level', function () { return __awaiter(void 0, void 0, void 0, function () {
303
- var options;
347
+ var config;
304
348
  return __generator(this, function (_a) {
305
349
  switch (_a.label) {
306
350
  case 0:
307
- options = {
351
+ config = {
308
352
  logLevel: 'critical',
309
353
  };
310
- return [4 /*yield*/, (0, utils_1.getFlagsAll)(options)];
354
+ return [4 /*yield*/, (0, utils_1.getAllFeatureFlags)(config)];
311
355
  case 1:
312
356
  _a.sent();
313
357
  expect(optimizely_sdk_1.setLogLevel).toBeCalledWith('critical');
@@ -317,7 +361,7 @@ describe('getFlagsAll', function () {
317
361
  });
318
362
  }); });
319
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 () {
320
- var getFlagsAll, options, flagsAll;
364
+ var getAllFeatureFlags, flagsAll;
321
365
  return __generator(this, function (_a) {
322
366
  switch (_a.label) {
323
367
  case 0:
@@ -325,204 +369,75 @@ describe('getFlagsAll', function () {
325
369
  createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
326
370
  decideAll: jest
327
371
  .fn()
328
- .mockImplementation(function (options) {
372
+ .mockImplementation(function (config) {
329
373
  return flagsMock;
330
374
  }),
331
375
  }); }, onReady: jest
332
376
  .fn()
333
377
  .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
334
378
  }); });
335
- getFlagsAll = require('../utils').getFlagsAll;
336
- options = {
337
- defaultFeatureFlags: {
338
- default_flag: {
339
- variationKey: 'off',
340
- enabled: true,
341
- variables: {},
342
- },
343
- },
344
- };
345
- return [4 /*yield*/, getFlagsAll(options)];
379
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
380
+ return [4 /*yield*/, getAllFeatureFlags(optionsWithDefaultFlags)];
346
381
  case 1:
347
382
  flagsAll = _a.sent();
348
- expect(flagsAll).toEqual(options.defaultFeatureFlags);
349
- return [2 /*return*/];
350
- }
351
- });
352
- }); });
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({});
383
+ expect(flagsAll).toEqual(optionsWithDefaultFlags.defaultFeatureFlags);
374
384
  return [2 /*return*/];
375
385
  }
376
386
  });
377
387
  }); });
378
388
  });
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;
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;
382
392
  return __generator(this, function (_a) {
383
393
  switch (_a.label) {
384
- case 0: return [4 /*yield*/, (0, utils_1.getFlag)('testing_flag_with_variations_and_variables')];
394
+ case 0: return [4 /*yield*/, (0, utils_1.getFeatureFlagsByKeys)(['test_flag_3', 'test_flag_1'], optionsWithIncludeFlagVariables)];
385
395
  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
- },
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: {},
399
403
  },
400
404
  });
401
405
  return [2 /*return*/];
402
406
  }
403
407
  });
404
408
  }); });
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 () {
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 () {
488
410
  var flagsByKeys;
489
411
  return __generator(this, function (_a) {
490
412
  switch (_a.label) {
491
- case 0: return [4 /*yield*/, (0, utils_1.getFlagsByKeys)([
492
- 'another_test_flag_1',
493
- 'qualtrics_flag',
413
+ case 0: return [4 /*yield*/, (0, utils_1.getFeatureFlagsByKeys)([
414
+ 'test_flag_3',
415
+ 'test_flag_1',
494
416
  ])];
495
417
  case 1:
496
418
  flagsByKeys = _a.sent();
497
419
  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
- },
420
+ test_flag_1: true,
421
+ test_flag_3: false,
504
422
  });
505
423
  return [2 /*return*/];
506
424
  }
507
425
  });
508
426
  }); });
509
427
  it('should return empty object if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
510
- var getFlagsByKeys, flagsAll;
428
+ var getFeatureFlagsByKeys, flagsAll;
511
429
  return __generator(this, function (_a) {
512
430
  switch (_a.label) {
513
431
  case 0:
514
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 ({
515
433
  decideForKeys: jest
516
434
  .fn()
517
- .mockImplementation(function (options) {
435
+ .mockImplementation(function (config) {
518
436
  return undefined;
519
437
  }),
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
- ])];
438
+ }); }, onReady: jest.fn().mockResolvedValue({ success: true }) })); } })); });
439
+ getFeatureFlagsByKeys = require('../utils').getFeatureFlagsByKeys;
440
+ return [4 /*yield*/, getFeatureFlagsByKeys(['test_flag_3', 'test_flag_1'])];
526
441
  case 1:
527
442
  flagsAll = _a.sent();
528
443
  expect(flagsAll).toEqual({});
@@ -530,8 +445,8 @@ describe('getFlagsByKeys', function () {
530
445
  }
531
446
  });
532
447
  }); });
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;
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;
535
450
  return __generator(this, function (_a) {
536
451
  switch (_a.label) {
537
452
  case 0:
@@ -539,7 +454,7 @@ describe('getFlagsByKeys', function () {
539
454
  createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
540
455
  decideForKeys: jest
541
456
  .fn()
542
- .mockImplementation(function (keys, options) {
457
+ .mockImplementation(function (keys, config) {
543
458
  var filtered = {};
544
459
  keys.forEach(function (k) { return (filtered[k] = flagsMock[k]); });
545
460
  return filtered;
@@ -548,8 +463,8 @@ describe('getFlagsByKeys', function () {
548
463
  .fn()
549
464
  .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
550
465
  }); });
551
- getFlagsByKeys = require('../utils').getFlagsByKeys;
552
- options = {
466
+ getFeatureFlagsByKeys = require('../utils').getFeatureFlagsByKeys;
467
+ config = {
553
468
  defaultFeatureFlags: {
554
469
  default_flag: {
555
470
  variationKey: 'off',
@@ -558,16 +473,16 @@ describe('getFlagsByKeys', function () {
558
473
  },
559
474
  },
560
475
  };
561
- return [4 /*yield*/, getFlagsByKeys(['another_test_flag_1', 'qualtrics_flag'], options)];
476
+ return [4 /*yield*/, getFeatureFlagsByKeys(['test_flag_3', 'test_flag_1'], config)];
562
477
  case 1:
563
478
  flagsByKeys = _a.sent();
564
- expect(flagsByKeys).toEqual(options.defaultFeatureFlags);
479
+ expect(flagsByKeys).toEqual(config.defaultFeatureFlags);
565
480
  return [2 /*return*/];
566
481
  }
567
482
  });
568
483
  }); });
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;
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;
571
486
  return __generator(this, function (_a) {
572
487
  switch (_a.label) {
573
488
  case 0:
@@ -575,7 +490,7 @@ describe('getFlagsByKeys', function () {
575
490
  createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
576
491
  decideForKeys: jest
577
492
  .fn()
578
- .mockImplementation(function (keys, options) {
493
+ .mockImplementation(function (keys, config) {
579
494
  var filtered = {};
580
495
  keys.forEach(function (k) { return (filtered[k] = flagsMock[k]); });
581
496
  return filtered;
@@ -584,10 +499,10 @@ describe('getFlagsByKeys', function () {
584
499
  .fn()
585
500
  .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
586
501
  }); });
587
- getFlagsByKeys = require('../utils').getFlagsByKeys;
588
- return [4 /*yield*/, getFlagsByKeys([
589
- 'another_test_flag_1',
590
- 'qualtrics_flag',
502
+ getFeatureFlagsByKeys = require('../utils').getFeatureFlagsByKeys;
503
+ return [4 /*yield*/, getFeatureFlagsByKeys([
504
+ 'test_flag_3',
505
+ 'test_flag_1',
591
506
  ])];
592
507
  case 1:
593
508
  flagsByKeys = _a.sent();
@@ -597,52 +512,4 @@ describe('getFlagsByKeys', function () {
597
512
  });
598
513
  }); });
599
514
  });
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
- });
648
515
  //# sourceMappingURL=utils.tests.js.map