Skip to content

Commit 1caa63d

Browse files
yasirfolio3aliabbasrizvi
authored andcommitted
feat(api): Feature variable APIs now return default variable value when featureEnabled property is false. (#390)
1 parent 7df00f4 commit 1caa63d

File tree

14 files changed

+537
-10
lines changed

14 files changed

+537
-10
lines changed

OptimizelySDKCore/OptimizelySDKCore/OPTLYLoggerMessages.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ extern NSString *const OPTLYLoggerMessagesFeatureVariableValueVariableTypeInvali
4949
extern NSString *const OPTLYLoggerMessagesFeatureVariableValueVariableType;
5050
extern NSString *const OPTLYLoggerMessagesFeatureVariableValueNotUsed;
5151
extern NSString *const OPTLYLoggerMessagesFeatureVariableValueNotBucketed;
52+
extern NSString *const OPTLYLoggerMessagesFeatureDisabledReturnDefault;
5253

5354
// ---- Bucketer ----
5455
// debug

OptimizelySDKCore/OptimizelySDKCore/OPTLYLoggerMessages.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
NSString *const OPTLYLoggerMessagesFeatureVariableValueVariableType = @"[OPTIMIZELY] Returning variable value %@ for variation %@ of feature flag %@";
4646
NSString *const OPTLYLoggerMessagesFeatureVariableValueNotUsed = @"[OPTIMIZELY] Variable %@ is not used in variation %@, returning default value %@.";
4747
NSString *const OPTLYLoggerMessagesFeatureVariableValueNotBucketed = @"[OPTIMIZELY] User %@ is not in any variation for feature flag %@, returning default value %@.";
48+
NSString *const OPTLYLoggerMessagesFeatureDisabledReturnDefault = @"[OPTIMIZELY] Feature %@ is not enabled for user %@, returning default value %@.";
4849

4950
// ---- Bucketer ----
5051
// debug

OptimizelySDKCore/OptimizelySDKCore/Optimizely.m

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -317,9 +317,14 @@ - (NSString *)getFeatureVariableValueForType:(NSString *)variableType
317317
OPTLYVariableUsage *featureVariableUsage = [variation getVariableUsageForVariableId:featureVariable.variableId];
318318

319319
if (featureVariableUsage) {
320-
variableValue = featureVariableUsage.value;
321-
NSString *logMessage = [NSString stringWithFormat:OPTLYLoggerMessagesFeatureVariableValueVariableType, variableValue, variation.variationKey, featureFlag.key];
322-
[self.logger logMessage:logMessage withLevel:OptimizelyLogLevelInfo];
320+
if (variation.featureEnabled) {
321+
variableValue = featureVariableUsage.value;
322+
NSString *logMessage = [NSString stringWithFormat:OPTLYLoggerMessagesFeatureVariableValueVariableType, variableValue, variation.variationKey, featureFlag.key];
323+
[self.logger logMessage:logMessage withLevel:OptimizelyLogLevelInfo];
324+
} else {
325+
NSString *logMessage = [NSString stringWithFormat:OPTLYLoggerMessagesFeatureDisabledReturnDefault, featureFlag.key, userId, variableValue];
326+
[self.logger logMessage:logMessage withLevel:OptimizelyLogLevelInfo];
327+
}
323328
} else {
324329
NSString *logMessage = [NSString stringWithFormat:OPTLYLoggerMessagesFeatureVariableValueNotUsed, variableKey, variation.variationKey, variableValue];
325330
[self.logger logMessage:logMessage withLevel:OptimizelyLogLevelInfo];

OptimizelySDKCore/OptimizelySDKCoreTests/OPTLYNotificationCenterTest.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ - (void) testSendGetEnabledFeaturesNotification {
289289
XCTAssertEqual(_attributes, attributes);
290290
}];
291291

292-
NSArray<NSString *> *enabledFeatures = @[@"booleanFeature", @"booleanSingleVariableFeature", @"multiVariateFeature"];
292+
NSArray<NSString *> *enabledFeatures = @[@"booleanFeature", @"booleanSingleVariableFeature", @"multiVariateFeature", @"featureEnabledFalse"];
293293
NSArray<NSString *> *features = [self.optimizely getEnabledFeatures:kUserId attributes:_attributes];
294294
XCTAssertEqualObjects(features, enabledFeatures);
295295
[self.optimizely.notificationCenter clearAllNotificationListeners];

OptimizelySDKCore/OptimizelySDKCoreTests/OptimizelyTest.m

Lines changed: 420 additions & 5 deletions
Large diffs are not rendered by default.

OptimizelySDKCore/OptimizelySDKCoreTests/TestData/test_data_10_experiments.json

Lines changed: 104 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,52 @@
4646
"value": "eorge"
4747
}
4848
]
49+
},
50+
{
51+
"id": "6373141149",
52+
"key": "featureEnabledFalse",
53+
"variables": [
54+
{
55+
"id": "155556",
56+
"value": "true"
57+
},
58+
{
59+
"id": "155557",
60+
"value": "42.42"
61+
},
62+
{
63+
"id": "155558",
64+
"value": "wing"
65+
},
66+
{
67+
"id": "155559",
68+
"value": "2"
69+
}
70+
],
71+
"featureEnabled": false
72+
},
73+
{
74+
"id": "6373141149",
75+
"key": "featureEnabledTrue",
76+
"variables": [
77+
{
78+
"id": "155556",
79+
"value": "true"
80+
},
81+
{
82+
"id": "155557",
83+
"value": "42.42"
84+
},
85+
{
86+
"id": "155558",
87+
"value": "wing"
88+
},
89+
{
90+
"id": "155559",
91+
"value": "2"
92+
}
93+
],
94+
"featureEnabled": true
4995
}
5096
]
5197
},
@@ -874,6 +920,39 @@
874920
"defaultValue": "wingardium leviosa"
875921
}
876922
]
923+
},
924+
{
925+
"id": "155669",
926+
"key": "featureEnabledFalse",
927+
"groupId": "",
928+
"rolloutId": "166660",
929+
"experimentIds": [],
930+
"variables": [
931+
{
932+
"id": "155556",
933+
"key": "booleanVariable",
934+
"type": "boolean",
935+
"defaultValue": "false"
936+
},
937+
{
938+
"id": "155557",
939+
"key": "doubleVariable",
940+
"type": "double",
941+
"defaultValue": "14.99"
942+
},
943+
{
944+
"id": "155558",
945+
"key": "stringVariable",
946+
"type": "string",
947+
"defaultValue": "wingardium leviosa"
948+
},
949+
{
950+
"id": "155559",
951+
"key": "someInteger",
952+
"type": "integer",
953+
"defaultValue": "1"
954+
}
955+
]
877956
}
878957
],
879958
"rollouts": [
@@ -896,6 +975,18 @@
896975
{
897976
"id": "155556",
898977
"value": "true"
978+
},
979+
{
980+
"id": "155557",
981+
"value": "42.42"
982+
},
983+
{
984+
"id": "155558",
985+
"value": "wing"
986+
},
987+
{
988+
"id": "155559",
989+
"value": "2"
899990
}
900991
],
901992
"featureEnabled": true
@@ -924,7 +1015,19 @@
9241015
"variables": [
9251016
{
9261017
"id": "155556",
927-
"value": "false"
1018+
"value": "true"
1019+
},
1020+
{
1021+
"id": "155557",
1022+
"value": "42.42"
1023+
},
1024+
{
1025+
"id": "155558",
1026+
"value": "wing"
1027+
},
1028+
{
1029+
"id": "155559",
1030+
"value": "2"
9281031
}
9291032
],
9301033
"featureEnabled": false

OptimizelySDKUniversal/generated-frameworks/Release-iOS-universal-SDK/OptimizelySDKiOS.framework/Headers/OPTLYLoggerMessages.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ extern NSString *const OPTLYLoggerMessagesFeatureVariableValueVariableTypeInvali
4949
extern NSString *const OPTLYLoggerMessagesFeatureVariableValueVariableType;
5050
extern NSString *const OPTLYLoggerMessagesFeatureVariableValueNotUsed;
5151
extern NSString *const OPTLYLoggerMessagesFeatureVariableValueNotBucketed;
52+
extern NSString *const OPTLYLoggerMessagesFeatureDisabledReturnDefault;
5253

5354
// ---- Bucketer ----
5455
// debug

0 commit comments

Comments
 (0)