1
1
/**
2
2
*
3
- * Copyright 2017-2021, Optimizely and contributors
3
+ * Copyright 2017-2021, 2024 Optimizely and contributors
4
4
*
5
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
6
* you may not use this file except in compliance with the License.
@@ -65,8 +65,8 @@ public void SetUp()
65
65
DecisionService = new DecisionService ( new Bucketer ( LoggerMock . Object ) ,
66
66
ErrorHandlerMock . Object , null , LoggerMock . Object ) ;
67
67
DecisionServiceMock = new Mock < DecisionService > ( BucketerMock . Object ,
68
- ErrorHandlerMock . Object , null , LoggerMock . Object )
69
- { CallBase = true } ;
68
+ ErrorHandlerMock . Object , null , LoggerMock . Object )
69
+ { CallBase = true } ;
70
70
DecisionReasons = new DecisionReasons ( ) ;
71
71
72
72
VariationWithKeyControl =
@@ -294,6 +294,9 @@ public void TestBucketReturnsVariationStoredInUserProfile()
294
294
{
295
295
var experiment = ProjectConfig . Experiments [ 6 ] ;
296
296
var variation = experiment . Variations [ 0 ] ;
297
+ var variationResult = Result < Variation > . NewResult (
298
+ experiment . Variations [ 0 ] ,
299
+ DecisionReasons ) ;
297
300
var decision = new Decision ( variation . Id ) ;
298
301
299
302
var userProfile = new UserProfile ( UserProfileId , new Dictionary < string , Decision >
@@ -303,8 +306,10 @@ public void TestBucketReturnsVariationStoredInUserProfile()
303
306
304
307
UserProfileServiceMock . Setup ( _ => _ . Lookup ( UserProfileId ) ) . Returns ( userProfile . ToMap ( ) ) ;
305
308
306
- var decisionService = new DecisionService ( BucketerMock . Object , ErrorHandlerMock . Object ,
307
- UserProfileServiceMock . Object , LoggerMock . Object ) ;
309
+ BucketerMock .
310
+ Setup ( bm => bm . Bucket ( ProjectConfig , experiment , It . IsAny < string > ( ) ,
311
+ It . IsAny < string > ( ) ) ) .
312
+ Returns ( variationResult ) ;
308
313
309
314
var optlyObject = new Optimizely ( TestData . Datafile , new ValidEventDispatcher ( ) ,
310
315
LoggerMock . Object ) ;
@@ -313,6 +318,8 @@ public void TestBucketReturnsVariationStoredInUserProfile()
313
318
LoggerMock . Object ) ;
314
319
OptimizelyUserContextMock . Setup ( ouc => ouc . GetUserId ( ) ) . Returns ( UserProfileId ) ;
315
320
321
+ var decisionService = new DecisionService ( BucketerMock . Object , ErrorHandlerMock . Object ,
322
+ UserProfileServiceMock . Object , LoggerMock . Object ) ;
316
323
var actualVariation = decisionService . GetVariation ( experiment ,
317
324
OptimizelyUserContextMock . Object , ProjectConfig ) ;
318
325
@@ -739,7 +746,8 @@ public void TestGetVariationForFeatureExperimentGivenNonMutexGroupAndUserIsBucke
739
746
DecisionServiceMock . Setup ( ds => ds . GetVariation (
740
747
ProjectConfig . GetExperimentFromKey ( "test_experiment_multivariate" ) ,
741
748
OptimizelyUserContextMock . Object , ProjectConfig ,
742
- It . IsAny < OptimizelyDecideOption [ ] > ( ) ) ) .
749
+ It . IsAny < OptimizelyDecideOption [ ] > ( ) , It . IsAny < UserProfileTracker > ( ) ,
750
+ It . IsAny < DecisionReasons > ( ) ) ) .
743
751
Returns ( variation ) ;
744
752
745
753
var featureFlag = ProjectConfig . GetFeatureFlagFromKey ( "multi_variate_feature" ) ;
@@ -792,13 +800,18 @@ public void TestGetVariationForFeatureExperimentGivenMutexGroupAndUserIsBucketed
792
800
[ Test ]
793
801
public void TestGetVariationForFeatureExperimentGivenMutexGroupAndUserNotBucketed ( )
794
802
{
795
- var mutexExperiment = ProjectConfig . GetExperimentFromKey ( "group_experiment_1" ) ;
803
+ var optlyObject = new Optimizely ( TestData . Datafile , new ValidEventDispatcher ( ) ,
804
+ LoggerMock . Object ) ;
805
+ OptimizelyUserContextMock = new Mock < OptimizelyUserContext > ( optlyObject ,
806
+ WhitelistedUserId , new UserAttributes ( ) , ErrorHandlerMock . Object ,
807
+ LoggerMock . Object ) ;
796
808
OptimizelyUserContextMock . Setup ( ouc => ouc . GetUserId ( ) ) . Returns ( "user1" ) ;
797
809
798
810
DecisionServiceMock .
799
811
Setup ( ds => ds . GetVariation ( It . IsAny < Experiment > ( ) ,
800
812
It . IsAny < OptimizelyUserContext > ( ) , ProjectConfig ,
801
- It . IsAny < OptimizelyDecideOption [ ] > ( ) ) ) .
813
+ It . IsAny < OptimizelyDecideOption [ ] > ( ) , It . IsAny < UserProfileTracker > ( ) ,
814
+ It . IsAny < DecisionReasons > ( ) ) ) .
802
815
Returns ( Result < Variation > . NullResult ( null ) ) ;
803
816
804
817
var featureFlag = ProjectConfig . GetFeatureFlagFromKey ( "boolean_feature" ) ;
@@ -1312,6 +1325,11 @@ public void TestGetVariationForFeatureWhenTheUserIsBuckedtedInBothExperimentAndR
1312
1325
WhitelistedUserId , userAttributes , ErrorHandlerMock . Object , LoggerMock . Object ) ;
1313
1326
OptimizelyUserContextMock . Setup ( ouc => ouc . GetUserId ( ) ) . Returns ( UserProfileId ) ;
1314
1327
1328
+ BucketerMock .
1329
+ Setup ( bm => bm . Bucket ( ProjectConfig , experiment , It . IsAny < string > ( ) ,
1330
+ It . IsAny < string > ( ) ) ) .
1331
+ Returns ( variation ) ;
1332
+
1315
1333
DecisionServiceMock . Setup ( ds => ds . GetVariation ( experiment ,
1316
1334
OptimizelyUserContextMock . Object , ProjectConfig ,
1317
1335
It . IsAny < OptimizelyDecideOption [ ] > ( ) ) ) .
0 commit comments