Skip to content

Commit b4e11a8

Browse files
committed
Add enabled to metadata
1 parent e0158e5 commit b4e11a8

File tree

8 files changed

+44
-5
lines changed

8 files changed

+44
-5
lines changed

packages/optimizely-sdk/lib/core/event_builder/event_helpers.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ interface ImpressionConfig {
2121
decisionObj: DecisionObj;
2222
userId: string;
2323
flagKey: string;
24+
enabled: boolean;
2425
userAttributes?: UserAttributes;
2526
clientEngine: string;
2627
clientVersion: string;
@@ -65,6 +66,7 @@ interface ImpressionEvent {
6566
ruleKey: string,
6667
flagKey: string,
6768
ruleType: string,
69+
enabled: boolean,
6870
}
6971

7072
interface ConversionConfig {

packages/optimizely-sdk/lib/core/event_builder/event_helpers.js

+4
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ var logger = getLogger('EVENT_BUILDER');
2828
* @param {Object} config
2929
* @param {Object} config.decisionObj
3030
* @param {String} config.userId
31+
* @param {String} config.flagKey
32+
* @param {boolean} config.enabled
3133
* @param {Object} config.userAttributes
3234
* @param {String} config.clientEngine
3335
* @param {String} config.clientVersion
@@ -38,6 +40,7 @@ export var buildImpressionEvent = function(config) {
3840
var decisionObj = config.decisionObj;
3941
var userId = config.userId;
4042
var flagKey = config.flagKey;
43+
var enabled = config.enabled;
4144
var userAttributes = config.userAttributes;
4245
var clientEngine = config.clientEngine;
4346
var clientVersion = config.clientVersion;
@@ -95,6 +98,7 @@ export var buildImpressionEvent = function(config) {
9598
ruleKey: experimentKey,
9699
flagKey: flagKey,
97100
ruleType: ruleType,
101+
enabled: enabled,
98102
};
99103
};
100104

packages/optimizely-sdk/lib/core/event_builder/event_helpers.tests.js

+4
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ describe('lib/event_builder/event_helpers', function() {
9090
var result = buildImpressionEvent({
9191
configObj: configObj,
9292
decisionObj: decision,
93+
enabled: true,
9394
flagKey: 'flagkey1',
9495
userId: 'user1',
9596
userAttributes: {
@@ -140,6 +141,7 @@ describe('lib/event_builder/event_helpers', function() {
140141
ruleKey: "exp1",
141142
flagKey: 'flagkey1',
142143
ruleType: 'experiment',
144+
enabled: true,
143145
});
144146
});
145147
});
@@ -184,6 +186,7 @@ describe('lib/event_builder/event_helpers', function() {
184186
configObj: configObj,
185187
decisionObj: decision,
186188
flagKey: 'flagkey1',
189+
enabled: false,
187190
userId: 'user1',
188191
userAttributes: {
189192
plan_type: 'bronze',
@@ -233,6 +236,7 @@ describe('lib/event_builder/event_helpers', function() {
233236
ruleKey: "exp1",
234237
flagKey: 'flagkey1',
235238
ruleType: 'experiment',
239+
enabled: false,
236240
});
237241
});
238242
});

packages/optimizely-sdk/lib/core/event_builder/index.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ interface ImpressionOptions {
2525
experimentId: string | null;
2626
ruleKey: string;
2727
flagKey: string;
28+
enabled: boolean;
2829
ruleType: string;
2930
eventKey?: string;
3031
variationId: string | null;

packages/optimizely-sdk/lib/core/event_builder/index.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ function getCommonEventParams(options) {
9898
* @param {string} flagKey Key for a feature flag
9999
* @return {Object} Impression event params
100100
*/
101-
function getImpressionEventParams(configObj, experimentId, variationId, ruleKey, ruleType, flagKey) {
101+
function getImpressionEventParams(configObj, experimentId, variationId, ruleKey, ruleType, flagKey, enabled) {
102102
let campaignId = null;
103103
if (experimentId !== null) {
104104
campaignId = projectConfig.getLayerId(configObj, experimentId);
@@ -120,6 +120,7 @@ function getImpressionEventParams(configObj, experimentId, variationId, ruleKey,
120120
rule_key: ruleKey,
121121
rule_type: ruleType,
122122
variation_key: variationKey,
123+
enabled: enabled,
123124
}
124125
},
125126
],
@@ -187,6 +188,7 @@ function getVisitorSnapshot(configObj, eventKey, eventTags, logger) {
187188
* @param {string} options.ruleKey Key of an experiment for which impression needs to be recorded
188189
* @param {string} options.ruleType Type for the decision source
189190
* @param {string} options.flagKey Key for a feature flag
191+
* @param {string} options.enabled Boolean enabled for a feature
190192
* @return {Object} Params to be used in impression event logging endpoint call
191193
*/
192194
export var getImpressionEvent = function(options) {
@@ -203,7 +205,8 @@ export var getImpressionEvent = function(options) {
203205
options.variationId,
204206
options.ruleKey,
205207
options.ruleType,
206-
options.flagKey
208+
options.flagKey,
209+
options.enabled,
207210
);
208211
// combine Event params into visitor obj
209212
commonParams.visitors[0].snapshots.push(impressionEventParams);

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

+18
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ describe('lib/core/event_builder', function() {
6666
rule_key: 'exp1',
6767
rule_type: 'experiment',
6868
variation_key: 'control',
69+
enabled: true,
6970
},
7071
},
7172
],
@@ -96,6 +97,7 @@ describe('lib/core/event_builder', function() {
9697
experimentId: '111127',
9798
ruleKey: 'exp1',
9899
flagKey: 'flagKey1',
100+
enabled: true,
99101
ruleType: 'experiment',
100102
variationId: '111128',
101103
userId: 'testUser',
@@ -136,6 +138,7 @@ describe('lib/core/event_builder', function() {
136138
rule_key: 'exp1',
137139
rule_type: 'experiment',
138140
variation_key: 'control',
141+
enabled: false,
139142
},
140143
},
141144
],
@@ -167,6 +170,7 @@ describe('lib/core/event_builder', function() {
167170
variationId: '111128',
168171
ruleKey: 'exp1',
169172
flagKey: 'flagKey1',
173+
enabled: false,
170174
ruleType: 'experiment',
171175
userId: 'testUser',
172176
};
@@ -206,6 +210,7 @@ describe('lib/core/event_builder', function() {
206210
rule_key: 'exp1',
207211
rule_type: 'experiment',
208212
variation_key: 'control',
213+
enabled: true,
209214
},
210215
},
211216
],
@@ -238,6 +243,7 @@ describe('lib/core/event_builder', function() {
238243
ruleKey: 'exp1',
239244
flagKey: 'flagKey1',
240245
ruleType: 'experiment',
246+
enabled: true,
241247
variationId: '111128',
242248
userId: 'testUser',
243249
};
@@ -277,6 +283,7 @@ describe('lib/core/event_builder', function() {
277283
rule_key: 'exp1',
278284
rule_type: 'experiment',
279285
variation_key: 'control',
286+
enabled: true,
280287
},
281288
},
282289
],
@@ -309,6 +316,7 @@ describe('lib/core/event_builder', function() {
309316
ruleKey: 'exp1',
310317
flagKey: 'flagKey1',
311318
ruleType: 'experiment',
319+
enabled: true,
312320
variationId: '111128',
313321
userId: 'testUser',
314322
};
@@ -341,6 +349,7 @@ describe('lib/core/event_builder', function() {
341349
rule_key: 'exp1',
342350
rule_type: 'experiment',
343351
variation_key: 'control',
352+
enabled: false,
344353
},
345354
},
346355
],
@@ -373,6 +382,7 @@ describe('lib/core/event_builder', function() {
373382
ruleKey: 'exp1',
374383
flagKey: 'flagKey1',
375384
ruleType: 'experiment',
385+
enabled: false,
376386
variationId: '111128',
377387
userId: 'testUser',
378388
logger: mockLogger,
@@ -420,6 +430,7 @@ describe('lib/core/event_builder', function() {
420430
rule_key: 'exp2',
421431
rule_type: 'experiment',
422432
variation_key: 'var',
433+
enabled: false,
423434
},
424435
},
425436
],
@@ -452,6 +463,7 @@ describe('lib/core/event_builder', function() {
452463
ruleKey: 'exp2',
453464
flagKey: 'flagKey2',
454465
ruleType: 'experiment',
466+
enabled: false,
455467
variationId: '595008',
456468
userId: 'testUser',
457469
};
@@ -499,6 +511,7 @@ describe('lib/core/event_builder', function() {
499511
rule_key: 'exp2',
500512
rule_type: 'experiment',
501513
variation_key: 'var',
514+
enabled: false,
502515
},
503516
},
504517
],
@@ -531,6 +544,7 @@ describe('lib/core/event_builder', function() {
531544
ruleKey: 'exp2',
532545
flagKey: 'flagKey2',
533546
ruleType: 'experiment',
547+
enabled: false,
534548
variationId: '595008',
535549
userId: 'testUser',
536550
};
@@ -588,6 +602,7 @@ describe('lib/core/event_builder', function() {
588602
rule_key: 'exp1',
589603
rule_type: 'experiment',
590604
variation_key: 'control',
605+
enabled: false,
591606
},
592607
},
593608
],
@@ -625,6 +640,7 @@ describe('lib/core/event_builder', function() {
625640
ruleKey: 'exp1',
626641
flagKey: 'flagKey1',
627642
ruleType: 'experiment',
643+
enabled: false,
628644
variationId: '111128',
629645
userId: 'testUser',
630646
};
@@ -676,6 +692,7 @@ describe('lib/core/event_builder', function() {
676692
rule_key: 'exp1',
677693
rule_type: 'experiment',
678694
variation_key: 'control',
695+
enabled: true,
679696
},
680697
},
681698
],
@@ -714,6 +731,7 @@ describe('lib/core/event_builder', function() {
714731
ruleKey: 'exp1',
715732
flagKey: 'flagKey1',
716733
ruleType: 'experiment',
734+
enabled: true,
717735
variationId: '111128',
718736
userId: 'testUser',
719737
};

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

+2
Original file line numberDiff line numberDiff line change
@@ -2340,6 +2340,7 @@ describe('lib/optimizely', function() {
23402340
rule_key: "testExperiment",
23412341
rule_type: "experiment",
23422342
variation_key: "variation",
2343+
enabled: true,
23432344
},
23442345
},
23452346
],
@@ -2401,6 +2402,7 @@ describe('lib/optimizely', function() {
24012402
rule_key: "testExperiment",
24022403
rule_type: "experiment",
24032404
variation_key: "variation",
2405+
enabled: true,
24042406
},
24052407
},
24062408
],

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

+8-3
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,9 @@ export default class Optimizely {
249249
decisionObj,
250250
'',
251251
userId,
252+
true,
252253
attributes
253254
);
254-
255255
return variationKey;
256256
} catch (ex) {
257257
this.logger.log(LOG_LEVEL.ERROR, ex.message);
@@ -285,7 +285,8 @@ export default class Optimizely {
285285
decisionObj: DecisionObj,
286286
flagKey: string,
287287
userId: string,
288-
attributes?: UserAttributes
288+
enabled: boolean,
289+
attributes?: UserAttributes,
289290
): void {
290291
const configObj = this.projectConfigManager.getConfig();
291292
if (!configObj) {
@@ -295,6 +296,7 @@ export default class Optimizely {
295296
const impressionEvent = buildImpressionEvent({
296297
decisionObj: decisionObj,
297298
flagKey: flagKey,
299+
enabled: enabled,
298300
userId: userId,
299301
userAttributes: attributes,
300302
clientEngine: this.clientEngine,
@@ -303,7 +305,7 @@ export default class Optimizely {
303305
});
304306
// TODO is it okay to not pass a projectConfig as second argument
305307
this.eventProcessor.process(impressionEvent);
306-
this.emitNotificationCenterActivate(decisionObj, flagKey, userId, attributes);
308+
this.emitNotificationCenterActivate(decisionObj, flagKey, userId, enabled, attributes);
307309
}
308310

309311
/**
@@ -317,6 +319,7 @@ export default class Optimizely {
317319
decisionObj: DecisionObj,
318320
flagKey: string,
319321
userId: string,
322+
enabled: boolean,
320323
attributes?: UserAttributes
321324
): void {
322325
const configObj = this.projectConfigManager.getConfig();
@@ -346,6 +349,7 @@ export default class Optimizely {
346349
flagKey: flagKey,
347350
ruleType: ruleType,
348351
userId: userId,
352+
enabled: enabled,
349353
variationId: variationId,
350354
logger: this.logger,
351355
};
@@ -699,6 +703,7 @@ export default class Optimizely {
699703
decisionObj,
700704
feature.key,
701705
userId,
706+
featureEnabled,
702707
attributes
703708
);
704709
}

0 commit comments

Comments
 (0)