Skip to content

Commit 94794ee

Browse files
authored
feat(ForcedDecisions): Add forced-decisions APIs to OptimizelyUserContext (#705)
Add a set of new APIs for forced-decisions to OptimizelyUserContext: setForcedDecision getForcedDecision removeForcedDecision removeAllForcedDecisions
1 parent 6e1f6d6 commit 94794ee

File tree

15 files changed

+1609
-413
lines changed

15 files changed

+1609
-413
lines changed

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,23 @@ describe('lib/core/decision', function() {
6969
});
7070
});
7171

72+
describe('getVariationId method', function() {
73+
it('should return null when variation is null', function() {
74+
var variationId = decision.getVariationId(rolloutDecisionObj);
75+
assert.strictEqual(variationId, null);
76+
});
77+
78+
it('should return null when variation is not defined', function() {
79+
var variationId = decision.getVariationId({});
80+
assert.strictEqual(variationId, null);
81+
});
82+
83+
it('should return variation id when variation is defined', function() {
84+
var variationId = decision.getVariationId(featureTestDecisionObj);
85+
assert.strictEqual(variationId, '594096');
86+
});
87+
});
88+
7289
describe('getFeatureEnabledFromVariation method', function() {
7390
it('should return false when variation is null', function() {
7491
var featureEnabled = decision.getFeatureEnabledFromVariation(rolloutDecisionObj);

packages/optimizely-sdk/lib/core/decision/index.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { DecisionObj } from '../decision_service';
2222
* @returns {string} Experiment key or empty string if experiment is null
2323
*/
2424
export function getExperimentKey(decisionObj: DecisionObj): string {
25-
return decisionObj.experiment?.key ?? '';
25+
return decisionObj.experiment?.key ?? '';
2626
}
2727

2828
/**
@@ -31,7 +31,7 @@ export function getExperimentKey(decisionObj: DecisionObj): string {
3131
* @returns {string} Variation key or empty string if variation is null
3232
*/
3333
export function getVariationKey(decisionObj: DecisionObj): string {
34-
return decisionObj.variation?.key ?? '';
34+
return decisionObj.variation?.key ?? '';
3535
}
3636

3737
/**
@@ -40,7 +40,7 @@ export function getVariationKey(decisionObj: DecisionObj): string {
4040
* @returns {boolean} featureEnabled boolean or false if variation is null
4141
*/
4242
export function getFeatureEnabledFromVariation(decisionObj: DecisionObj): boolean {
43-
return decisionObj.variation?.featureEnabled ?? false;
43+
return decisionObj.variation?.featureEnabled ?? false;
4444
}
4545

4646
/**
@@ -49,5 +49,14 @@ export function getFeatureEnabledFromVariation(decisionObj: DecisionObj): boolea
4949
* @returns {string} Experiment id or null if experiment is null
5050
*/
5151
export function getExperimentId(decisionObj: DecisionObj): string | null {
52-
return decisionObj.experiment?.id ?? null;
52+
return decisionObj.experiment?.id ?? null;
53+
}
54+
55+
/**
56+
* Get variation id from the provided decision object
57+
* @param {DecisionObj} decisionObj Object representing decision
58+
* @returns {string} Variation id or null if variation is null
59+
*/
60+
export function getVariationId(decisionObj: DecisionObj): string | null {
61+
return decisionObj.variation?.id ?? null;
5362
}

0 commit comments

Comments
 (0)