Skip to content

Commit 8944a95

Browse files
committed
Add unit test for IGNORE_USER_PROFILE_SERVICE flag in decide options
1 parent 856dc90 commit 8944a95

File tree

1 file changed

+48
-4
lines changed

1 file changed

+48
-4
lines changed

packages/optimizely-sdk/lib/optimizely/index.tests.js

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5621,6 +5621,50 @@ describe('lib/optimizely', function() {
56215621
);
56225622
});
56235623
});
5624+
5625+
describe('with IGNORE_USER_PROFILE_SERVICE flag in decide options', function() {
5626+
it('should bypass user profile service', function() {
5627+
var flagKey = 'feature_2'; // embedding experiment: 'exp_no_audience'
5628+
var variationId1 = '10418551353';
5629+
var variationId2 = '10418510624';
5630+
var variationKey1 = 'variation_with_traffic';
5631+
var variationKey2 = 'variation_no_traffic';
5632+
var mockUserProfileServiceInstance = {
5633+
lookup: sinon.stub().returns({
5634+
user_id: userId,
5635+
experiment_bucket_map: {
5636+
'10420810910': { // 'exp_no_audience'
5637+
variation_id: variationId2,
5638+
},
5639+
},
5640+
}),
5641+
save: sinon.stub()
5642+
};
5643+
var optlyInstanceWithUserProfile = new Optimizely({
5644+
clientEngine: 'node-sdk',
5645+
datafile: testData.getTestDecideProjectConfig(),
5646+
errorHandler: errorHandler,
5647+
eventDispatcher: eventDispatcher,
5648+
jsonSchemaValidator: jsonSchemaValidator,
5649+
userProfileService: mockUserProfileServiceInstance,
5650+
logger: createdLogger,
5651+
isValidInstance: true,
5652+
eventBatchSize: 1,
5653+
});
5654+
var user = new OptimizelyUserContext({
5655+
optimizely: optlyInstanceWithUserProfile,
5656+
userId
5657+
});
5658+
var decision1 = optlyInstanceWithUserProfile.decide(user, flagKey);
5659+
// should return variationId2 set by UPS
5660+
assert.equal(variationKey2, decision1.variationKey);
5661+
var decision2 = optlyInstanceWithUserProfile.decide(user, flagKey, [ OptimizelyDecideOptions.IGNORE_USER_PROFILE_SERVICE ]);
5662+
// should ignore variationId2 set by UPS and return variationId1
5663+
assert.equal(variationKey1, decision2.variationKey);
5664+
// also should not save either
5665+
sinon.assert.notCalled(mockUserProfileServiceInstance.save);
5666+
});
5667+
});
56245668
});
56255669

56265670
describe('#decideForKeys', function() {
@@ -5704,7 +5748,7 @@ describe('lib/optimizely', function() {
57045748
it('should return decision results map with only enabled flags when ENABLED_FLAGS_ONLY flag is passed in and dispatch events', function() {
57055749
var flagKey1 = 'feature_2';
57065750
var flagKey2 = 'feature_3';
5707-
var user = optlyInstance.createUserContext(userId, {"gender": "female"});
5751+
var user = optlyInstance.createUserContext(userId, { gender: 'female' });
57085752
var expectedVariables = optlyInstance.getAllFeatureVariables(flagKey1, userId);
57095753
var decisionsMap = optlyInstance.decideForKeys(user, [ flagKey1, flagKey2 ], [ OptimizelyDecideOptions.ENABLED_FLAGS_ONLY ]);
57105754
var decision = decisionsMap[flagKey1];
@@ -5794,7 +5838,7 @@ describe('lib/optimizely', function() {
57945838
it('should return decision results map with only enabled flags when ENABLED_FLAGS_ONLY flag is passed in and dispatch events', function() {
57955839
var flagKey1 = 'feature_1';
57965840
var flagKey2 = 'feature_2';
5797-
var user = optlyInstance.createUserContext(userId, {"gender": "female"});
5841+
var user = optlyInstance.createUserContext(userId, { gender: 'female' });
57985842
var expectedVariables1 = optlyInstance.getAllFeatureVariables(flagKey1, userId);
57995843
var expectedVariables2 = optlyInstance.getAllFeatureVariables(flagKey2, userId);
58005844
var decisionsMap = optlyInstance.decideAll(user, [ OptimizelyDecideOptions.ENABLED_FLAGS_ONLY ]);
@@ -5849,7 +5893,7 @@ describe('lib/optimizely', function() {
58495893
it('should return decision results map with only enabled flags and dispatch events', function() {
58505894
var flagKey1 = 'feature_1';
58515895
var flagKey2 = 'feature_2';
5852-
var user = optlyInstance.createUserContext(userId, {"gender": "female"});
5896+
var user = optlyInstance.createUserContext(userId, { gender: 'female' });
58535897
var expectedVariables1 = optlyInstance.getAllFeatureVariables(flagKey1, userId);
58545898
var expectedVariables2 = optlyInstance.getAllFeatureVariables(flagKey2, userId);
58555899
var decisionsMap = optlyInstance.decideAll(user);
@@ -5882,7 +5926,7 @@ describe('lib/optimizely', function() {
58825926
it('should return decision results map with only enabled flags and excluded variables when EXCLUDE_VARIABLES_FLAG is passed in', function() {
58835927
var flagKey1 = 'feature_1';
58845928
var flagKey2 = 'feature_2';
5885-
var user = optlyInstance.createUserContext(userId, {"gender": "female"});
5929+
var user = optlyInstance.createUserContext(userId, { gender: 'female' });
58865930
var decisionsMap = optlyInstance.decideAll(user, [ OptimizelyDecideOptions.EXCLUDE_VARIABLES ]);
58875931
var decision1 = decisionsMap[flagKey1];
58885932
var decision2 = decisionsMap[flagKey2];

0 commit comments

Comments
 (0)