11/*
2- * Copyright 2017, 2019, Optimizely
2+ * Copyright 2017, 2019-2021 , Optimizely
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
@@ -61,7 +61,7 @@ public override string ToString()
6161 public void Initialize ( )
6262 {
6363 LoggerMock = new Mock < ILogger > ( ) ;
64- DecisionReasons = DefaultDecisionReasons . NewInstance ( ) ;
64+ DecisionReasons = DefaultDecisionReasons . NewInstance ( new OptimizelyDecideOption [ ] { OptimizelyDecideOption . INCLUDE_REASONS } ) ;
6565 Config = DatafileProjectConfig . Create ( TestData . Datafile , LoggerMock . Object , new ErrorHandler . NoOpErrorHandler ( ) ) ;
6666 }
6767
@@ -105,13 +105,16 @@ public void TestBucketValidExperimentNotInGroup()
105105 LoggerMock . Verify ( l => l . Log ( It . IsAny < LogLevel > ( ) , It . IsAny < string > ( ) ) , Times . Exactly ( 2 ) ) ;
106106 LoggerMock . Verify ( l => l . Log ( LogLevel . DEBUG , "Assigned bucket [3000] to user [testUserId] with bucketing ID [testBucketingIdControl!]." ) ) ;
107107 LoggerMock . Verify ( l => l . Log ( LogLevel . INFO , "User [testUserId] is in variation [control] of experiment [test_experiment]." ) ) ;
108+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 0 ] , "User [testUserId] is in variation [control] of experiment [test_experiment]." ) ;
109+
108110 // variation
109111 Assert . AreEqual ( new Variation { Id = "7721010009" , Key = "variation" } ,
110112 bucketer . Bucket ( Config , Config . GetExperimentFromKey ( "test_experiment" ) , TestBucketingIdControl , TestUserId , DecisionReasons ) ) ;
111113
112114 LoggerMock . Verify ( l => l . Log ( It . IsAny < LogLevel > ( ) , It . IsAny < string > ( ) ) , Times . Exactly ( 4 ) ) ;
113115 LoggerMock . Verify ( l => l . Log ( LogLevel . DEBUG , "Assigned bucket [7000] to user [testUserId] with bucketing ID [testBucketingIdControl!]." ) ) ;
114116 LoggerMock . Verify ( l => l . Log ( LogLevel . INFO , "User [testUserId] is in variation [variation] of experiment [test_experiment]." ) ) ;
117+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 1 ] , "User [testUserId] is in variation [variation] of experiment [test_experiment]." ) ;
115118
116119 // no variation
117120 Assert . AreEqual ( new Variation { } ,
@@ -120,7 +123,9 @@ public void TestBucketValidExperimentNotInGroup()
120123 LoggerMock . Verify ( l => l . Log ( It . IsAny < LogLevel > ( ) , It . IsAny < string > ( ) ) , Times . Exactly ( 6 ) ) ;
121124 LoggerMock . Verify ( l => l . Log ( LogLevel . DEBUG , "Assigned bucket [9000] to user [testUserId] with bucketing ID [testBucketingIdControl!]." ) ) ;
122125 LoggerMock . Verify ( l => l . Log ( LogLevel . INFO , "User [testUserId] is in no variation." ) ) ;
123- Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 0 ) ;
126+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 2 ] , "User [testUserId] is in no variation." ) ;
127+
128+ Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 3 ) ;
124129 }
125130
126131 [ Test ]
@@ -155,7 +160,12 @@ public void TestBucketValidExperimentInGroup()
155160 LoggerMock . Verify ( l => l . Log ( LogLevel . INFO , "User [testUserId] is not in experiment [group_experiment_1] of group [7722400015]." ) ) ;
156161
157162 LoggerMock . Verify ( l => l . Log ( It . IsAny < LogLevel > ( ) , It . IsAny < string > ( ) ) , Times . Exactly ( 10 ) ) ;
158- Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 0 ) ;
163+ Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 5 ) ;
164+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 0 ] , "User [testUserId] is in experiment [group_experiment_1] of group [7722400015]." ) ;
165+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 1 ] , "User [testUserId] is in variation [group_exp_1_var_1] of experiment [group_experiment_1]." ) ;
166+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 2 ] , "User [testUserId] is in experiment [group_experiment_1] of group [7722400015]." ) ;
167+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 3 ] , "User [testUserId] is in variation [group_exp_1_var_2] of experiment [group_experiment_1]." ) ;
168+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 4 ] , "User [testUserId] is not in experiment [group_experiment_1] of group [7722400015]." ) ;
159169 }
160170
161171 [ Test ]
@@ -180,7 +190,8 @@ public void TestBucketWithBucketingId()
180190 // make sure that the bucketing ID is used for the variation bucketing and not the user ID
181191 Assert . AreEqual ( expectedVariation ,
182192 bucketer . Bucket ( Config , experiment , TestBucketingIdControl , TestUserIdBucketsToVariation , DecisionReasons ) ) ;
183- Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 0 ) ;
193+ Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 1 ) ;
194+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 0 ] , "User [bucketsToVariation!] is in variation [control] of experiment [test_experiment]." ) ;
184195 }
185196
186197 // Test for invalid experiment keys, null variation should be returned
@@ -206,7 +217,9 @@ public void TestBucketVariationGroupedExperimentsWithBucketingId()
206217 Assert . AreEqual ( expectedGroupVariation ,
207218 bucketer . Bucket ( Config , Config . GetExperimentFromKey ( "group_experiment_2" ) ,
208219 TestBucketingIdGroupExp2Var2 , TestUserIdBucketsToNoGroup , DecisionReasons ) ) ;
209- Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 0 ) ;
220+ Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 2 ) ;
221+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 0 ] , "User [testUserId] is in experiment [group_experiment_2] of group [7722400015]." ) ;
222+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 1 ] , "User [testUserId] is in variation [group_exp_2_var_2] of experiment [group_experiment_2]." ) ;
210223 }
211224
212225 // Make sure that user gets bucketed into the rollout rule.
@@ -220,7 +233,8 @@ public void TestBucketRolloutRule()
220233
221234 Assert . True ( TestData . CompareObjects ( expectedVariation ,
222235 bucketer . Bucket ( Config , rolloutRule , "testBucketingId" , TestUserId , DecisionReasons ) ) ) ;
223- Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 0 ) ;
236+ Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 1 ) ;
237+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 0 ] , "User [testUserId] is in variation [177773] of experiment [177772]." ) ;
224238 }
225239 }
226240}
0 commit comments