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