@newskit-render/feature-flags 0.0.0-d55b7d88 → 0.0.0-d8b00dcd5

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.
@@ -19,8 +19,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
19
19
  });
20
20
  };
21
21
  var __generator = (this && this.__generator) || function (thisArg, body) {
22
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
22
+ 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);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
24
  function verb(n) { return function (v) { return step([n, v]); }; }
25
25
  function step(op) {
26
26
  if (f) throw new TypeError("Generator is already executing.");
@@ -45,71 +45,65 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
45
45
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
46
  }
47
47
  };
48
- import { setLogLevel, setLogger,
49
- // createInstance
50
- } from '@optimizely/optimizely-sdk';
51
- import { _resetInstance, closeFlagsInstance, getFlag, getFlagsAll, getFlagsByKeys, } from '../utils';
52
- import { MissingConfigurationError, MissingInstanceError, MissingUserContextError, } from '../types';
48
+ import { setLogLevel, setLogger, } from '@optimizely/optimizely-sdk';
49
+ import { getAllFeatureFlags, getFeatureFlagsByKeys } from '../utils';
53
50
  var originalEnv = process.env;
54
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 ({
55
52
  decide: jest
56
53
  .fn()
57
- .mockImplementation(function (key, options) {
54
+ .mockImplementation(function (key, config) {
58
55
  return flagsMock[key];
59
56
  }),
60
57
  decideForKeys: jest
61
58
  .fn()
62
- .mockImplementation(function (keys, options) {
59
+ .mockImplementation(function (keys, config) {
63
60
  var filtered = {};
64
61
  keys.forEach(function (k) { return (filtered[k] = flagsMock[k]); });
65
62
  return filtered;
66
63
  }),
67
64
  decideAll: jest
68
65
  .fn()
69
- .mockImplementation(function (options) {
66
+ .mockImplementation(function (config) {
70
67
  return flagsMock;
71
68
  }),
72
69
  }); }, onReady: jest.fn().mockResolvedValue({ success: true }), close: jest.fn().mockResolvedValue({ success: true }) })); }, setLogLevel: jest.fn(), setLogger: jest.fn() })); });
73
70
  var flagsMock = {
74
- qualtrics_flag: {
71
+ test_flag_1: {
75
72
  variationKey: 'on',
76
73
  enabled: true,
77
74
  variables: {},
78
75
  ruleKey: 'default-rollout-216689-29200910123',
79
- flagKey: 'qualtrics_flag',
76
+ flagKey: 'test_flag_1',
80
77
  userContext: {
81
78
  _qualifiedSegments: null,
82
- // optimizely: [e],
83
79
  userId: 'user123',
84
80
  attributes: {},
85
81
  forcedDecisionsMap: {},
86
82
  },
87
83
  reasons: [],
88
84
  },
89
- testing_flag: {
85
+ test_flag_2: {
90
86
  variationKey: 'max_10',
91
87
  enabled: true,
92
88
  variables: { max_family_members: 10 },
93
89
  ruleKey: 'default-rollout-223709-29200910123',
94
- flagKey: 'testing_flag',
90
+ flagKey: 'test_flag_2',
95
91
  userContext: {
96
92
  _qualifiedSegments: null,
97
- // optimizely: [e],
98
93
  userId: 'user123',
99
94
  attributes: {},
100
95
  forcedDecisionsMap: {},
101
96
  },
102
97
  reasons: [],
103
98
  },
104
- another_test_flag_1: {
99
+ test_flag_3: {
105
100
  variationKey: 'off',
106
101
  enabled: false,
107
102
  variables: {},
108
103
  ruleKey: 'default-rollout-225089-29200910123',
109
- flagKey: 'another_test_flag_1',
104
+ flagKey: 'test_flag_3',
110
105
  userContext: {
111
106
  _qualifiedSegments: null,
112
- // optimizely: [e],
113
107
  userId: 'user123',
114
108
  attributes: {},
115
109
  forcedDecisionsMap: {},
@@ -143,25 +137,51 @@ beforeEach(function () {
143
137
  jest.resetModules();
144
138
  process.env = __assign(__assign({}, originalEnv), { OPTIMIZELY_SDK_KEY: 'optimizely-sdk-key' });
145
139
  });
146
- afterEach(function () {
147
- _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 () {
140
+ var optionsWithIncludeFlagVariables = {
141
+ includeFlagVariables: true,
142
+ };
143
+ var optionsWithDefaultFlags = {
144
+ defaultFeatureFlags: {
145
+ default_flag: {
146
+ variationKey: 'off',
147
+ enabled: true,
148
+ variables: {},
149
+ },
150
+ },
151
+ };
152
+ describe('getAllFeatureFlags', function () {
153
+ it('should return all flags data in flat mode with default config', function () { return __awaiter(void 0, void 0, void 0, function () {
151
154
  var flagsAll;
152
155
  return __generator(this, function (_a) {
153
156
  switch (_a.label) {
154
- case 0: return [4 /*yield*/, getFlagsAll()];
157
+ case 0: return [4 /*yield*/, getAllFeatureFlags()];
155
158
  case 1:
156
159
  flagsAll = _a.sent();
157
160
  expect(flagsAll).toEqual({
158
- qualtrics_flag: { variationKey: 'on', enabled: true, variables: {} },
159
- testing_flag: {
161
+ test_flag_3: false,
162
+ test_flag_1: true,
163
+ test_flag_2: true,
164
+ testing_flag_with_variations_and_variables: true,
165
+ });
166
+ return [2 /*return*/];
167
+ }
168
+ });
169
+ }); });
170
+ 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 () {
171
+ var flagsAll;
172
+ return __generator(this, function (_a) {
173
+ switch (_a.label) {
174
+ case 0: return [4 /*yield*/, getAllFeatureFlags(optionsWithIncludeFlagVariables)];
175
+ case 1:
176
+ flagsAll = _a.sent();
177
+ expect(flagsAll).toEqual({
178
+ test_flag_1: { variationKey: 'on', enabled: true, variables: {} },
179
+ test_flag_2: {
160
180
  variationKey: 'max_10',
161
181
  enabled: true,
162
182
  variables: { max_family_members: 10 },
163
183
  },
164
- another_test_flag_1: {
184
+ test_flag_3: {
165
185
  variationKey: 'off',
166
186
  enabled: false,
167
187
  variables: {},
@@ -183,13 +203,55 @@ describe('getFlagsAll', function () {
183
203
  }
184
204
  });
185
205
  }); });
186
- it('should return all flags with custom options', function () { return __awaiter(void 0, void 0, void 0, function () {
187
- var options, flagsAll;
206
+ it('should return empty object if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
207
+ var getAllFeatureFlags, flagsAll;
208
+ return __generator(this, function (_a) {
209
+ switch (_a.label) {
210
+ case 0:
211
+ 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 ({
212
+ decideAll: jest
213
+ .fn()
214
+ .mockImplementation(function (config) {
215
+ return undefined;
216
+ }),
217
+ }); }, onReady: jest.fn().mockResolvedValue({ success: true }) })); } })); });
218
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
219
+ return [4 /*yield*/, getAllFeatureFlags()];
220
+ case 1:
221
+ flagsAll = _a.sent();
222
+ expect(flagsAll).toEqual({});
223
+ return [2 /*return*/];
224
+ }
225
+ });
226
+ }); });
227
+ it('should return the defaultFeatureFlags if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
228
+ var getAllFeatureFlags, flagsAll;
229
+ return __generator(this, function (_a) {
230
+ switch (_a.label) {
231
+ case 0:
232
+ 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 ({
233
+ decideAll: jest
234
+ .fn()
235
+ .mockImplementation(function (config) {
236
+ return undefined;
237
+ }),
238
+ }); }, onReady: jest.fn().mockResolvedValue({ success: true }) })); } })); });
239
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
240
+ return [4 /*yield*/, getAllFeatureFlags(optionsWithDefaultFlags)];
241
+ case 1:
242
+ flagsAll = _a.sent();
243
+ expect(flagsAll).toEqual(optionsWithDefaultFlags.defaultFeatureFlags);
244
+ return [2 /*return*/];
245
+ }
246
+ });
247
+ }); });
248
+ it('should return all flags with custom config', function () { return __awaiter(void 0, void 0, void 0, function () {
249
+ var config, flagsAll;
188
250
  return __generator(this, function (_a) {
189
251
  switch (_a.label) {
190
252
  case 0:
191
253
  process.env = __assign(__assign({}, originalEnv), { OPTIMIZELY_SDK_KEY: undefined });
192
- options = {
254
+ config = {
193
255
  sdkConfig: {
194
256
  sdkKey: 'custom-optimizely-sdk',
195
257
  },
@@ -197,18 +259,19 @@ describe('getFlagsAll', function () {
197
259
  userId: 'user456',
198
260
  attributes: { logged_in: true, cpn: 'AAA123', subs_type: 'digi-print' },
199
261
  },
262
+ includeFlagVariables: true,
200
263
  };
201
- return [4 /*yield*/, getFlagsAll(options)];
264
+ return [4 /*yield*/, getAllFeatureFlags(config)];
202
265
  case 1:
203
266
  flagsAll = _a.sent();
204
267
  expect(flagsAll).toEqual({
205
- qualtrics_flag: { variationKey: 'on', enabled: true, variables: {} },
206
- testing_flag: {
268
+ test_flag_1: { variationKey: 'on', enabled: true, variables: {} },
269
+ test_flag_2: {
207
270
  variationKey: 'max_10',
208
271
  enabled: true,
209
272
  variables: { max_family_members: 10 },
210
273
  },
211
- another_test_flag_1: {
274
+ test_flag_3: {
212
275
  variationKey: 'off',
213
276
  enabled: false,
214
277
  variables: {},
@@ -230,20 +293,13 @@ describe('getFlagsAll', function () {
230
293
  }
231
294
  });
232
295
  }); });
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;
296
+ it('should return empty object when called without sdk key', function () { return __awaiter(void 0, void 0, void 0, function () {
297
+ var flagsAll;
235
298
  return __generator(this, function (_a) {
236
299
  switch (_a.label) {
237
300
  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()];
301
+ process.env = __assign(__assign({}, originalEnv), { OPTIMIZELY_SDK_KEY: undefined });
302
+ return [4 /*yield*/, getAllFeatureFlags()];
247
303
  case 1:
248
304
  flagsAll = _a.sent();
249
305
  expect(flagsAll).toEqual({});
@@ -251,119 +307,33 @@ describe('getFlagsAll', function () {
251
307
  }
252
308
  });
253
309
  }); });
254
- it('should throw error when called without sdk key', function () { return __awaiter(void 0, void 0, void 0, function () {
255
- return __generator(this, function (_a) {
256
- process.env = __assign(__assign({}, originalEnv), { OPTIMIZELY_SDK_KEY: undefined });
257
- expect(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
258
- switch (_a.label) {
259
- case 0: return [4 /*yield*/, getFlagsAll()];
260
- case 1: return [2 /*return*/, _a.sent()];
261
- }
262
- }); }); }).rejects.toThrow(new MissingConfigurationError());
263
- return [2 /*return*/];
264
- });
265
- }); });
266
- it('should throw error when sdk not initialized', function () { return __awaiter(void 0, void 0, void 0, function () {
267
- var getFlagsAll;
268
- return __generator(this, function (_a) {
269
- jest.doMock('@optimizely/optimizely-sdk', function () { return ({
270
- createInstance: jest.fn().mockReturnValue(null),
271
- }); });
272
- getFlagsAll = require('../utils').getFlagsAll;
273
- expect(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
274
- switch (_a.label) {
275
- case 0: return [4 /*yield*/, getFlagsAll()];
276
- case 1: return [2 /*return*/, _a.sent()];
277
- }
278
- }); }); }).rejects.toThrow(new MissingInstanceError());
279
- return [2 /*return*/];
280
- });
281
- }); });
282
- it('should throw error when user context not initialized', function () { return __awaiter(void 0, void 0, void 0, function () {
283
- var getFlagsAll;
284
- return __generator(this, function (_a) {
285
- jest.doMock('@optimizely/optimizely-sdk', function () { return ({
286
- createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: jest.fn().mockReturnValue(null), onReady: jest.fn().mockResolvedValue({ success: true }) })); },
287
- }); });
288
- getFlagsAll = require('../utils').getFlagsAll;
289
- expect(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
290
- switch (_a.label) {
291
- case 0: return [4 /*yield*/, getFlagsAll()];
292
- case 1: return [2 /*return*/, _a.sent()];
293
- }
294
- }); }); }).rejects.toThrow(new MissingUserContextError());
295
- return [2 /*return*/];
296
- });
297
- }); });
298
- it('should instantiate logger with log level', function () { return __awaiter(void 0, void 0, void 0, function () {
299
- var options;
300
- return __generator(this, function (_a) {
301
- switch (_a.label) {
302
- case 0:
303
- options = {
304
- logLevel: 'critical',
305
- };
306
- return [4 /*yield*/, getFlagsAll(options)];
307
- case 1:
308
- _a.sent();
309
- expect(setLogLevel).toBeCalledWith('critical');
310
- expect(setLogger).toHaveBeenCalled();
311
- return [2 /*return*/];
312
- }
313
- });
314
- }); });
315
- 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 () {
316
- var getFlagsAll, options, flagsAll;
310
+ it('should return empty object when sdk not initialized', function () { return __awaiter(void 0, void 0, void 0, function () {
311
+ var getAllFeatureFlags, flagsAll;
317
312
  return __generator(this, function (_a) {
318
313
  switch (_a.label) {
319
314
  case 0:
320
315
  jest.doMock('@optimizely/optimizely-sdk', function () { return ({
321
- createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
322
- decideAll: jest
323
- .fn()
324
- .mockImplementation(function (options) {
325
- return flagsMock;
326
- }),
327
- }); }, onReady: jest
328
- .fn()
329
- .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
316
+ createInstance: jest.fn().mockReturnValue(null),
330
317
  }); });
331
- getFlagsAll = require('../utils').getFlagsAll;
332
- options = {
333
- defaultFeatureFlags: {
334
- default_flag: {
335
- variationKey: 'off',
336
- enabled: true,
337
- variables: {},
338
- },
339
- },
340
- };
341
- return [4 /*yield*/, getFlagsAll(options)];
318
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
319
+ return [4 /*yield*/, getAllFeatureFlags()];
342
320
  case 1:
343
321
  flagsAll = _a.sent();
344
- expect(flagsAll).toEqual(options.defaultFeatureFlags);
322
+ expect(flagsAll).toEqual({});
345
323
  return [2 /*return*/];
346
324
  }
347
325
  });
348
326
  }); });
349
- 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 () {
350
- var getFlagsAll, flagsAll;
327
+ it('should return empty object when user context not initialized', function () { return __awaiter(void 0, void 0, void 0, function () {
328
+ var getAllFeatureFlags, flagsAll;
351
329
  return __generator(this, function (_a) {
352
330
  switch (_a.label) {
353
331
  case 0:
354
332
  jest.doMock('@optimizely/optimizely-sdk', function () { return ({
355
- createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
356
- decideAll: jest
357
- .fn()
358
- .mockImplementation(function (options) {
359
- return flagsMock;
360
- }),
361
- }); }, onReady: jest
362
- .fn()
363
- .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
333
+ createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: jest.fn().mockReturnValue(null), onReady: jest.fn().mockResolvedValue({ success: true }) })); },
364
334
  }); });
365
- getFlagsAll = require('../utils').getFlagsAll;
366
- return [4 /*yield*/, getFlagsAll()];
335
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
336
+ return [4 /*yield*/, getAllFeatureFlags()];
367
337
  case 1:
368
338
  flagsAll = _a.sent();
369
339
  expect(flagsAll).toEqual({});
@@ -371,154 +341,101 @@ describe('getFlagsAll', function () {
371
341
  }
372
342
  });
373
343
  }); });
374
- });
375
- describe('getFlag', function () {
376
- it('should return a flag with default options', function () { return __awaiter(void 0, void 0, void 0, function () {
377
- var flag;
378
- return __generator(this, function (_a) {
379
- switch (_a.label) {
380
- case 0: return [4 /*yield*/, getFlag('testing_flag_with_variations_and_variables')];
381
- case 1:
382
- flag = _a.sent();
383
- expect(flag).toEqual({
384
- testing_flag_with_variations_and_variables: {
385
- variationKey: 'primary_with_new_weclome_message_and_max_accounts',
386
- enabled: true,
387
- variables: {
388
- family_primary_welcome_message: 'This is the new message',
389
- family_primary_enable_secondary_accounts: true,
390
- family_primary_max_secondary_accounts: 10,
391
- family_primary_metadata_json: {
392
- metadata1: 'a',
393
- },
394
- },
395
- },
396
- });
397
- return [2 /*return*/];
398
- }
399
- });
400
- }); });
401
- it('should return empty object if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
402
- var getFlag, flagsAll;
344
+ it('should instantiate logger with log level', function () { return __awaiter(void 0, void 0, void 0, function () {
345
+ var config;
403
346
  return __generator(this, function (_a) {
404
347
  switch (_a.label) {
405
348
  case 0:
406
- 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 ({
407
- decide: jest
408
- .fn()
409
- .mockImplementation(function (options) {
410
- return undefined;
411
- }),
412
- }); }, onReady: jest.fn().mockResolvedValue({ success: true }), close: jest.fn().mockResolvedValue({ success: true }) })); } })); });
413
- getFlag = require('../utils').getFlag;
414
- return [4 /*yield*/, getFlag('testing_flag_with_variations_and_variables')];
349
+ config = {
350
+ logLevel: 'critical',
351
+ };
352
+ return [4 /*yield*/, getAllFeatureFlags(config)];
415
353
  case 1:
416
- flagsAll = _a.sent();
417
- expect(flagsAll).toEqual({});
354
+ _a.sent();
355
+ expect(setLogLevel).toBeCalledWith('critical');
356
+ expect(setLogger).toHaveBeenCalled();
418
357
  return [2 /*return*/];
419
358
  }
420
359
  });
421
360
  }); });
422
361
  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 () {
423
- var getFlag, options, flag;
362
+ var getAllFeatureFlags, flagsAll;
424
363
  return __generator(this, function (_a) {
425
364
  switch (_a.label) {
426
365
  case 0:
427
366
  jest.doMock('@optimizely/optimizely-sdk', function () { return ({
428
367
  createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
429
- decide: jest
368
+ decideAll: jest
430
369
  .fn()
431
- .mockImplementation(function (key, options) {
432
- return flagsMock[key];
370
+ .mockImplementation(function (config) {
371
+ return flagsMock;
433
372
  }),
434
373
  }); }, onReady: jest
435
374
  .fn()
436
375
  .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
437
376
  }); });
438
- getFlag = require('../utils').getFlag;
439
- options = {
440
- defaultFeatureFlags: {
441
- default_flag: {
442
- variationKey: 'off',
443
- enabled: true,
444
- variables: {},
445
- },
446
- },
447
- };
448
- return [4 /*yield*/, getFlag('testing_flag_with_variations_and_variables', options)];
377
+ getAllFeatureFlags = require('../utils').getAllFeatureFlags;
378
+ return [4 /*yield*/, getAllFeatureFlags(optionsWithDefaultFlags)];
449
379
  case 1:
450
- flag = _a.sent();
451
- expect(flag).toEqual(options.defaultFeatureFlags);
380
+ flagsAll = _a.sent();
381
+ expect(flagsAll).toEqual(optionsWithDefaultFlags.defaultFeatureFlags);
452
382
  return [2 /*return*/];
453
383
  }
454
384
  });
455
385
  }); });
456
- 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 () {
457
- var getFlag, flag;
386
+ });
387
+ describe('getFeatureFlagsByKeys', function () {
388
+ 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 () {
389
+ var flagsByKeys;
458
390
  return __generator(this, function (_a) {
459
391
  switch (_a.label) {
460
- case 0:
461
- jest.doMock('@optimizely/optimizely-sdk', function () { return ({
462
- createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
463
- decide: jest
464
- .fn()
465
- .mockImplementation(function (key, options) {
466
- return flagsMock[key];
467
- }),
468
- }); }, onReady: jest
469
- .fn()
470
- .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
471
- }); });
472
- getFlag = require('../utils').getFlag;
473
- return [4 /*yield*/, getFlag('testing_flag_with_variations_and_variables')];
392
+ case 0: return [4 /*yield*/, getFeatureFlagsByKeys(['test_flag_3', 'test_flag_1'], optionsWithIncludeFlagVariables)];
474
393
  case 1:
475
- flag = _a.sent();
476
- expect(flag).toEqual({});
394
+ flagsByKeys = _a.sent();
395
+ expect(flagsByKeys).toEqual({
396
+ test_flag_1: { variationKey: 'on', enabled: true, variables: {} },
397
+ test_flag_3: {
398
+ variationKey: 'off',
399
+ enabled: false,
400
+ variables: {},
401
+ },
402
+ });
477
403
  return [2 /*return*/];
478
404
  }
479
405
  });
480
406
  }); });
481
- });
482
- describe('getFlagsByKeys', function () {
483
- it('should return flags by keys with default options', function () { return __awaiter(void 0, void 0, void 0, function () {
407
+ it('should return only the requested feature flags in flat mode with default config', function () { return __awaiter(void 0, void 0, void 0, function () {
484
408
  var flagsByKeys;
485
409
  return __generator(this, function (_a) {
486
410
  switch (_a.label) {
487
- case 0: return [4 /*yield*/, getFlagsByKeys([
488
- 'another_test_flag_1',
489
- 'qualtrics_flag',
411
+ case 0: return [4 /*yield*/, getFeatureFlagsByKeys([
412
+ 'test_flag_3',
413
+ 'test_flag_1',
490
414
  ])];
491
415
  case 1:
492
416
  flagsByKeys = _a.sent();
493
417
  expect(flagsByKeys).toEqual({
494
- qualtrics_flag: { variationKey: 'on', enabled: true, variables: {} },
495
- another_test_flag_1: {
496
- variationKey: 'off',
497
- enabled: false,
498
- variables: {},
499
- },
418
+ test_flag_1: true,
419
+ test_flag_3: false,
500
420
  });
501
421
  return [2 /*return*/];
502
422
  }
503
423
  });
504
424
  }); });
505
425
  it('should return empty object if no flags are fetched', function () { return __awaiter(void 0, void 0, void 0, function () {
506
- var getFlagsByKeys, flagsAll;
426
+ var getFeatureFlagsByKeys, flagsAll;
507
427
  return __generator(this, function (_a) {
508
428
  switch (_a.label) {
509
429
  case 0:
510
430
  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 ({
511
431
  decideForKeys: jest
512
432
  .fn()
513
- .mockImplementation(function (options) {
433
+ .mockImplementation(function (config) {
514
434
  return undefined;
515
435
  }),
516
- }); }, onReady: jest.fn().mockResolvedValue({ success: true }), close: jest.fn().mockResolvedValue({ success: true }) })); } })); });
517
- getFlagsByKeys = require('../utils').getFlagsByKeys;
518
- return [4 /*yield*/, getFlagsByKeys([
519
- 'another_test_flag_1',
520
- 'qualtrics_flag',
521
- ])];
436
+ }); }, onReady: jest.fn().mockResolvedValue({ success: true }) })); } })); });
437
+ getFeatureFlagsByKeys = require('../utils').getFeatureFlagsByKeys;
438
+ return [4 /*yield*/, getFeatureFlagsByKeys(['test_flag_3', 'test_flag_1'])];
522
439
  case 1:
523
440
  flagsAll = _a.sent();
524
441
  expect(flagsAll).toEqual({});
@@ -526,8 +443,8 @@ describe('getFlagsByKeys', function () {
526
443
  }
527
444
  });
528
445
  }); });
529
- 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 () {
530
- var getFlagsByKeys, options, flagsByKeys;
446
+ it('should return defaultFeatureFlags when they have been passed and optimizely client creation fails', function () { return __awaiter(void 0, void 0, void 0, function () {
447
+ var getFeatureFlagsByKeys, config, flagsByKeys;
531
448
  return __generator(this, function (_a) {
532
449
  switch (_a.label) {
533
450
  case 0:
@@ -535,7 +452,7 @@ describe('getFlagsByKeys', function () {
535
452
  createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
536
453
  decideForKeys: jest
537
454
  .fn()
538
- .mockImplementation(function (keys, options) {
455
+ .mockImplementation(function (keys, config) {
539
456
  var filtered = {};
540
457
  keys.forEach(function (k) { return (filtered[k] = flagsMock[k]); });
541
458
  return filtered;
@@ -544,8 +461,8 @@ describe('getFlagsByKeys', function () {
544
461
  .fn()
545
462
  .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
546
463
  }); });
547
- getFlagsByKeys = require('../utils').getFlagsByKeys;
548
- options = {
464
+ getFeatureFlagsByKeys = require('../utils').getFeatureFlagsByKeys;
465
+ config = {
549
466
  defaultFeatureFlags: {
550
467
  default_flag: {
551
468
  variationKey: 'off',
@@ -554,16 +471,16 @@ describe('getFlagsByKeys', function () {
554
471
  },
555
472
  },
556
473
  };
557
- return [4 /*yield*/, getFlagsByKeys(['another_test_flag_1', 'qualtrics_flag'], options)];
474
+ return [4 /*yield*/, getFeatureFlagsByKeys(['test_flag_3', 'test_flag_1'], config)];
558
475
  case 1:
559
476
  flagsByKeys = _a.sent();
560
- expect(flagsByKeys).toEqual(options.defaultFeatureFlags);
477
+ expect(flagsByKeys).toEqual(config.defaultFeatureFlags);
561
478
  return [2 /*return*/];
562
479
  }
563
480
  });
564
481
  }); });
565
- 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 () {
566
- var getFlagsByKeys, flagsByKeys;
482
+ 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 () {
483
+ var getFeatureFlagsByKeys, flagsByKeys;
567
484
  return __generator(this, function (_a) {
568
485
  switch (_a.label) {
569
486
  case 0:
@@ -571,7 +488,7 @@ describe('getFlagsByKeys', function () {
571
488
  createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
572
489
  decideForKeys: jest
573
490
  .fn()
574
- .mockImplementation(function (keys, options) {
491
+ .mockImplementation(function (keys, config) {
575
492
  var filtered = {};
576
493
  keys.forEach(function (k) { return (filtered[k] = flagsMock[k]); });
577
494
  return filtered;
@@ -580,10 +497,10 @@ describe('getFlagsByKeys', function () {
580
497
  .fn()
581
498
  .mockResolvedValue({ success: false, reason: 'Promise rejected' }) })); },
582
499
  }); });
583
- getFlagsByKeys = require('../utils').getFlagsByKeys;
584
- return [4 /*yield*/, getFlagsByKeys([
585
- 'another_test_flag_1',
586
- 'qualtrics_flag',
500
+ getFeatureFlagsByKeys = require('../utils').getFeatureFlagsByKeys;
501
+ return [4 /*yield*/, getFeatureFlagsByKeys([
502
+ 'test_flag_3',
503
+ 'test_flag_1',
587
504
  ])];
588
505
  case 1:
589
506
  flagsByKeys = _a.sent();
@@ -593,52 +510,4 @@ describe('getFlagsByKeys', function () {
593
510
  });
594
511
  }); });
595
512
  });
596
- describe('closeFlagsInstance', function () {
597
- it('should close sdk instance sucessfully', function () { return __awaiter(void 0, void 0, void 0, function () {
598
- var spy;
599
- return __generator(this, function (_a) {
600
- switch (_a.label) {
601
- case 0:
602
- spy = jest.spyOn(console, 'log');
603
- return [4 /*yield*/, getFlag('testing_flag_with_variations_and_variables')];
604
- case 1:
605
- _a.sent();
606
- return [4 /*yield*/, closeFlagsInstance()];
607
- case 2:
608
- _a.sent();
609
- expect(spy).toHaveBeenCalledWith('optimizely instance closed successfully');
610
- return [2 /*return*/];
611
- }
612
- });
613
- }); });
614
- it('should not close sdk instance sucessfully', function () { return __awaiter(void 0, void 0, void 0, function () {
615
- var spy, _a, getFlag, closeFlagsInstance;
616
- return __generator(this, function (_b) {
617
- switch (_b.label) {
618
- case 0:
619
- spy = jest.spyOn(console, 'log');
620
- jest.doMock('@optimizely/optimizely-sdk', function () { return ({
621
- createInstance: function () { return (__assign(__assign({}, jest.requireActual('@optimizely/optimizely-sdk').createInstance), { createUserContext: function () { return ({
622
- decide: jest
623
- .fn()
624
- .mockImplementation(function (key, options) {
625
- return flagsMock[key];
626
- }),
627
- }); }, onReady: jest.fn().mockResolvedValue({ success: true }), close: jest
628
- .fn()
629
- .mockResolvedValue({ success: false, reason: 'Closing rejected' }) })); },
630
- }); });
631
- _a = require('../utils'), getFlag = _a.getFlag, closeFlagsInstance = _a.closeFlagsInstance;
632
- return [4 /*yield*/, getFlag('testing_flag_with_variations_and_variables')];
633
- case 1:
634
- _b.sent();
635
- return [4 /*yield*/, closeFlagsInstance()];
636
- case 2:
637
- _b.sent();
638
- expect(spy).toHaveBeenCalledWith('closing Optimizely instance failed, reason: Closing rejected');
639
- return [2 /*return*/];
640
- }
641
- });
642
- }); });
643
- });
644
513
  //# sourceMappingURL=utils.tests.js.map