@@ -1156,12 +1156,12 @@ public void TestGetFeatureVariableBooleanReturnTypecastedValue()
11561156 OptimizelyMock . Setup ( om => om . GetFeatureVariableValueForType ( It . IsAny < string > ( ) , variableKeyNonBoolean , It . IsAny < string > ( ) ,
11571157 It . IsAny < UserAttributes > ( ) , featureVariableType ) ) . Returns ( "non_boolean_value" ) ;
11581158
1159- Assert . AreEqual ( null , OptimizelyMock . Object . GetFeatureVariableBoolean ( featureKey , variableKeyNonBoolean , TestUserId , null ) ) ;
1159+ Assert . Null ( OptimizelyMock . Object . GetFeatureVariableBoolean ( featureKey , variableKeyNonBoolean , TestUserId , null ) ) ;
11601160 LoggerMock . Verify ( l => l . Log ( LogLevel . ERROR , $@ "Unable to cast variable value ""non_boolean_value"" to type ""{ featureVariableType } "".") ) ;
11611161
11621162 OptimizelyMock . Setup ( om => om . GetFeatureVariableValueForType ( It . IsAny < string > ( ) , variableKeyNull , It . IsAny < string > ( ) ,
11631163 It . IsAny < UserAttributes > ( ) , featureVariableType ) ) . Returns < string > ( null ) ;
1164- Assert . AreEqual ( null , OptimizelyMock . Object . GetFeatureVariableBoolean ( featureKey , variableKeyNull , TestUserId , null ) ) ;
1164+ Assert . Null ( OptimizelyMock . Object . GetFeatureVariableBoolean ( featureKey , variableKeyNull , TestUserId , null ) ) ;
11651165 }
11661166
11671167 [ Test ]
@@ -1185,12 +1185,12 @@ public void TestGetFeatureVariableDoubleReturnTypecastedValue()
11851185 OptimizelyMock . Setup ( om => om . GetFeatureVariableValueForType ( It . IsAny < string > ( ) , variableKeyNonDouble , It . IsAny < string > ( ) ,
11861186 It . IsAny < UserAttributes > ( ) , featureVariableType ) ) . Returns ( "non_double_value" ) ;
11871187
1188- Assert . AreEqual ( null , OptimizelyMock . Object . GetFeatureVariableDouble ( featureKey , variableKeyNonDouble , TestUserId , null ) ) ;
1188+ Assert . Null ( OptimizelyMock . Object . GetFeatureVariableDouble ( featureKey , variableKeyNonDouble , TestUserId , null ) ) ;
11891189 LoggerMock . Verify ( l => l . Log ( LogLevel . ERROR , $@ "Unable to cast variable value ""non_double_value"" to type ""{ featureVariableType } "".") ) ;
11901190
11911191 OptimizelyMock . Setup ( om => om . GetFeatureVariableValueForType ( It . IsAny < string > ( ) , variableKeyNull , It . IsAny < string > ( ) ,
11921192 It . IsAny < UserAttributes > ( ) , featureVariableType ) ) . Returns < string > ( null ) ;
1193- Assert . AreEqual ( null , OptimizelyMock . Object . GetFeatureVariableDouble ( featureKey , variableKeyNull , TestUserId , null ) ) ;
1193+ Assert . Null ( OptimizelyMock . Object . GetFeatureVariableDouble ( featureKey , variableKeyNull , TestUserId , null ) ) ;
11941194 }
11951195
11961196 [ Test ]
@@ -1210,18 +1210,18 @@ public void TestGetFeatureVariableIntegerReturnTypecastedValue()
12101210 OptimizelyMock . Setup ( om => om . GetFeatureVariableValueForType ( It . IsAny < string > ( ) , variableKeyDouble , It . IsAny < string > ( ) ,
12111211 It . IsAny < UserAttributes > ( ) , featureVariableType ) ) . Returns ( "100.45" ) ;
12121212
1213- Assert . AreEqual ( null , OptimizelyMock . Object . GetFeatureVariableInteger ( featureKey , variableKeyDouble , TestUserId , null ) ) ;
1213+ Assert . Null ( OptimizelyMock . Object . GetFeatureVariableInteger ( featureKey , variableKeyDouble , TestUserId , null ) ) ;
12141214 LoggerMock . Verify ( l => l . Log ( LogLevel . ERROR , $@ "Unable to cast variable value ""100.45"" to type ""{ featureVariableType } "".") ) ;
12151215
12161216 OptimizelyMock . Setup ( om => om . GetFeatureVariableValueForType ( It . IsAny < string > ( ) , variableNonInt , It . IsAny < string > ( ) ,
12171217 It . IsAny < UserAttributes > ( ) , featureVariableType ) ) . Returns ( "non_integer_value" ) ;
12181218
1219- Assert . AreEqual ( null , OptimizelyMock . Object . GetFeatureVariableInteger ( featureKey , variableNonInt , TestUserId , null ) ) ;
1219+ Assert . Null ( OptimizelyMock . Object . GetFeatureVariableInteger ( featureKey , variableNonInt , TestUserId , null ) ) ;
12201220 LoggerMock . Verify ( l => l . Log ( LogLevel . ERROR , $@ "Unable to cast variable value ""non_integer_value"" to type ""{ featureVariableType } "".") ) ;
12211221
12221222 OptimizelyMock . Setup ( om => om . GetFeatureVariableValueForType ( It . IsAny < string > ( ) , variableKeyNull , It . IsAny < string > ( ) ,
12231223 It . IsAny < UserAttributes > ( ) , featureVariableType ) ) . Returns < string > ( null ) ;
1224- Assert . AreEqual ( null , OptimizelyMock . Object . GetFeatureVariableInteger ( featureKey , variableKeyNull , TestUserId , null ) ) ;
1224+ Assert . Null ( OptimizelyMock . Object . GetFeatureVariableInteger ( featureKey , variableKeyNull , TestUserId , null ) ) ;
12251225 }
12261226
12271227 [ Test ]
@@ -1243,7 +1243,7 @@ public void TestGetFeatureVariableStringReturnTypecastedValue()
12431243
12441244 OptimizelyMock . Setup ( om => om . GetFeatureVariableValueForType ( It . IsAny < string > ( ) , variableKeyNull , It . IsAny < string > ( ) ,
12451245 It . IsAny < UserAttributes > ( ) , featureVariableType ) ) . Returns < string > ( null ) ;
1246- Assert . AreEqual ( null , OptimizelyMock . Object . GetFeatureVariableString ( featureKey , variableKeyNull , TestUserId , null ) ) ;
1246+ Assert . Null ( OptimizelyMock . Object . GetFeatureVariableString ( featureKey , variableKeyNull , TestUserId , null ) ) ;
12471247 }
12481248
12491249 #endregion // Test GetFeatureVariable<Type> TypeCasting
@@ -1325,7 +1325,7 @@ public void TestGetFeatureVariableValueForTypeGivenFeatureFlagIsNotEnabledForUse
13251325 var variableType = FeatureVariable . VariableType . DOUBLE ;
13261326 var expectedValue = "14.99" ;
13271327
1328- DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns < Variation > ( null ) ;
1328+ DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns < FeatureDecision > ( null ) ;
13291329
13301330 var optly = Helper . CreatePrivateOptimizely ( ) ;
13311331 optly . SetFieldOrProperty ( "DecisionService" , DecisionServiceMock . Object ) ;
@@ -1344,13 +1344,15 @@ public void TestGetFeatureVariableValueForTypeGivenFeatureFlagIsEnabledForUserAn
13441344 {
13451345 var featureKey = "double_single_variable_feature" ;
13461346 var featureFlag = Config . GetFeatureFlagFromKey ( "double_single_variable_feature" ) ;
1347+ var experiment = Config . GetExperimentFromKey ( "test_experiment_integer_feature" ) ;
13471348 var differentVariation = Config . GetVariationFromKey ( "test_experiment_integer_feature" , "control" ) ;
1349+ var expectedDecision = new FeatureDecision ( experiment . Id , differentVariation . Id , FeatureDecision . DECISION_SOURCE_EXPERIMENT ) ;
13481350 var variableKey = "double_variable" ;
13491351 var variableType = FeatureVariable . VariableType . DOUBLE ;
13501352 var expectedValue = "14.99" ;
13511353
13521354 // Mock GetVariationForFeature method to return variation of different feature.
1353- DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns ( differentVariation ) ;
1355+ DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns ( expectedDecision ) ;
13541356
13551357 var optly = Helper . CreatePrivateOptimizely ( ) ;
13561358 optly . SetFieldOrProperty ( "DecisionService" , DecisionServiceMock . Object ) ;
@@ -1372,9 +1374,11 @@ public void TestGetFeatureVariableValueForTypeGivenFeatureFlagIsEnabledForUserAn
13721374 var variableKey = "double_variable" ;
13731375 var variableType = FeatureVariable . VariableType . DOUBLE ;
13741376 var expectedValue = "42.42" ;
1375-
1377+ var experiment = Config . GetExperimentFromKey ( "test_experiment_double_feature" ) ;
13761378 var variation = Config . GetVariationFromKey ( "test_experiment_double_feature" , "control" ) ;
1377- DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns ( variation ) ;
1379+ var decision = new FeatureDecision ( experiment . Id , variation . Id , FeatureDecision . DECISION_SOURCE_EXPERIMENT ) ;
1380+
1381+ DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns ( decision ) ;
13781382
13791383 var optly = Helper . CreatePrivateOptimizely ( ) ;
13801384 optly . SetFieldOrProperty ( "DecisionService" , DecisionServiceMock . Object ) ;
@@ -1442,7 +1446,7 @@ public void TestIsFeatureEnabledGivenFeatureFlagIsNotEnabledForUser()
14421446 var featureKey = "double_single_variable_feature" ;
14431447 var featureFlag = Config . GetFeatureFlagFromKey ( "double_single_variable_feature" ) ;
14441448
1445- DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns < Variation > ( null ) ;
1449+ DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns < FeatureDecision > ( null ) ;
14461450
14471451 var optly = Helper . CreatePrivateOptimizely ( ) ;
14481452 optly . SetFieldOrProperty ( "DecisionService" , DecisionServiceMock . Object ) ;
@@ -1464,8 +1468,9 @@ public void TestIsFeatureEnabledGivenFeatureFlagIsEnabledAndUserIsNotBeingExperi
14641468 var experiment = rollout . Experiments [ 0 ] ;
14651469 var variation = experiment . Variations [ 0 ] ;
14661470 var featureFlag = Config . GetFeatureFlagFromKey ( featureKey ) ;
1471+ var decision = new FeatureDecision ( experiment . Id , variation . Id , FeatureDecision . DECISION_SOURCE_ROLLOUT ) ;
14671472
1468- DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns ( variation ) ;
1473+ DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns ( decision ) ;
14691474
14701475 var optly = Helper . CreatePrivateOptimizely ( ) ;
14711476 optly . SetFieldOrProperty ( "DecisionService" , DecisionServiceMock . Object ) ;
@@ -1487,10 +1492,12 @@ public void TestIsFeatureEnabledGivenFeatureFlagIsEnabledAndUserIsNotBeingExperi
14871492 public void TestIsFeatureEnabledGivenFeatureFlagIsEnabledAndUserIsBeingExperimented ( )
14881493 {
14891494 var featureKey = "double_single_variable_feature" ;
1495+ var experiment = Config . GetExperimentFromKey ( "test_experiment_double_feature" ) ;
14901496 var variation = Config . GetVariationFromKey ( "test_experiment_double_feature" , "control" ) ;
14911497 var featureFlag = Config . GetFeatureFlagFromKey ( featureKey ) ;
1498+ var decision = new FeatureDecision ( experiment . Id , variation . Id , FeatureDecision . DECISION_SOURCE_EXPERIMENT ) ;
14921499
1493- DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns ( variation ) ;
1500+ DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , null ) ) . Returns ( decision ) ;
14941501
14951502 var optly = Helper . CreatePrivateOptimizely ( ) ;
14961503 optly . SetFieldOrProperty ( "DecisionService" , DecisionServiceMock . Object ) ;
@@ -1537,6 +1544,7 @@ public void TestActivateListener(UserAttributes userAttributes)
15371544 var experiment = Config . GetExperimentFromKey ( experimentKey ) ;
15381545 var variation = Config . GetVariationFromKey ( experimentKey , variationKey ) ;
15391546 var featureFlag = Config . GetFeatureFlagFromKey ( featureKey ) ;
1547+ var decision = new FeatureDecision ( experiment . Id , variation . Id , FeatureDecision . DECISION_SOURCE_EXPERIMENT ) ;
15401548 var logEvent = new LogEvent ( "https://logx.optimizely.com/v1/events" , OptimizelyHelper . SingleParameter ,
15411549 "POST" , new Dictionary < string , string > { } ) ;
15421550
@@ -1550,7 +1558,7 @@ public void TestActivateListener(UserAttributes userAttributes)
15501558 EventBuilderMock . Setup ( ebm => ebm . CreateImpressionEvent ( It . IsAny < ProjectConfig > ( ) , It . IsAny < Experiment > ( ) ,
15511559 It . IsAny < string > ( ) , It . IsAny < string > ( ) , It . IsAny < UserAttributes > ( ) ) ) . Returns ( logEvent ) ;
15521560 DecisionServiceMock . Setup ( ds => ds . GetVariation ( experiment , TestUserId , userAttributes ) ) . Returns ( variation ) ;
1553- DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , userAttributes ) ) . Returns ( variation ) ;
1561+ DecisionServiceMock . Setup ( ds => ds . GetVariationForFeature ( featureFlag , TestUserId , userAttributes ) ) . Returns ( decision ) ;
15541562
15551563 var optly = Helper . CreatePrivateOptimizely ( ) ;
15561564 var optStronglyTyped = optly . GetObject ( ) as Optimizely ;
0 commit comments