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