1414import json
1515import mock
1616
17- from optimizely import decision_service
1817from optimizely import entities
1918from optimizely import optimizely
2019from optimizely import user_profile
@@ -377,8 +376,7 @@ def test_get_variation_for_rollout__returns_none_if_no_experiments(self, mock_lo
377376 """ Test that get_variation_for_rollout returns None if there are no experiments (targeting rules). """
378377
379378 no_experiment_rollout = self .project_config .get_rollout_from_id ('201111' )
380- self .assertEqual (decision_service .Decision (None , None ),
381- self .decision_service .get_variation_for_rollout (no_experiment_rollout , 'test_user' ))
379+ self .assertIsNone (self .decision_service .get_variation_for_rollout (no_experiment_rollout , 'test_user' ))
382380
383381 # Assert no log messages were generated
384382 self .assertEqual (0 , mock_logging .call_count )
@@ -438,8 +436,7 @@ def test_get_variation_for_rollout__skips_to_everyone_else_rule(self, mock_loggi
438436
439437 with mock .patch ('optimizely.helpers.audience.is_user_in_experiment' , return_value = True ) as mock_audience_check ,\
440438 mock .patch ('optimizely.bucketer.Bucketer.bucket' , return_value = None ):
441- self .assertEqual (decision_service .Decision (None , None ),
442- self .decision_service .get_variation_for_rollout (rollout , 'test_user' ))
439+ self .assertIsNone (self .decision_service .get_variation_for_rollout (rollout , 'test_user' ))
443440
444441 # Check that after first experiment, it skips to the last experiment to check
445442 self .assertEqual (
@@ -461,8 +458,7 @@ def test_get_variation_for_rollout__returns_none_for_user_not_in_rollout(self, m
461458 rollout = self .project_config .get_rollout_from_id ('211111' )
462459
463460 with mock .patch ('optimizely.helpers.audience.is_user_in_experiment' , return_value = False ) as mock_audience_check :
464- self .assertEqual (decision_service .Decision (None , None ),
465- self .decision_service .get_variation_for_rollout (rollout , 'test_user' ))
461+ self .assertIsNone (self .decision_service .get_variation_for_rollout (rollout , 'test_user' ))
466462
467463 # Check that all experiments in rollout layer were checked
468464 self .assertEqual (
@@ -483,12 +479,11 @@ def test_get_variation_for_feature__returns_variation_for_feature_in_experiment(
483479
484480 feature = self .project_config .get_feature_from_key ('test_feature_in_experiment' )
485481
486- expected_experiment = self .project_config .get_experiment_from_key ('test_experiment' )
487482 expected_variation = self .project_config .get_variation_from_id ('test_experiment' , '111129' )
488- with mock .patch ('optimizely.decision_service.DecisionService.get_variation' ,
489- return_value = expected_variation ) as mock_decision :
490- self . assertEqual ( decision_service . Decision ( expected_experiment , expected_variation ),
491- self .decision_service .get_variation_for_feature (feature , 'user1' ))
483+ with mock .patch (
484+ 'optimizely.decision_service.DecisionService.get_variation' ,
485+ return_value = expected_variation ) as mock_decision :
486+ self . assertEqual ( expected_variation , self .decision_service .get_variation_for_feature (feature , 'user1' ))
492487
493488 mock_decision .assert_called_once_with (
494489 self .project_config .get_experiment_from_key ('test_experiment' ), 'test_user' , None
@@ -521,14 +516,12 @@ def test_get_variation_for_feature__returns_variation_if_user_not_in_experiment_
521516
522517 feature = self .project_config .get_feature_from_key ('test_feature_in_experiment_and_rollout' )
523518
524- expected_experiment = self .project_config .get_experiment_from_key ('211127' )
525519 expected_variation = self .project_config .get_variation_from_id ('211127' , '211129' )
526520 with mock .patch (
527521 'optimizely.helpers.audience.is_user_in_experiment' ,
528522 side_effect = [False , True ]) as mock_audience_check , \
529523 mock .patch ('optimizely.bucketer.Bucketer.bucket' , return_value = expected_variation ):
530- self .assertEqual (decision_service .Decision (expected_experiment , expected_variation ),
531- self .decision_service .get_variation_for_feature (feature , 'user1' ))
524+ self .assertEqual (expected_variation , self .decision_service .get_variation_for_feature (feature , 'user1' ))
532525
533526 self .assertEqual (2 , mock_audience_check .call_count )
534527 mock_audience_check .assert_any_call (self .project_config ,
@@ -540,20 +533,21 @@ def test_get_variation_for_feature__returns_variation_for_feature_in_group(self,
540533 """ Test that get_variation_for_feature returns the variation of
541534 the experiment the user is bucketed in the feature's group. """
542535
543- feature = self .project_config .get_feature_from_key ('test_feature_in_group' )
536+ opt_obj = optimizely .Optimizely (json .dumps (self .config_dict_with_features ))
537+ project_config = opt_obj .config
538+ decision_service = opt_obj .decision_service
539+ feature = project_config .get_feature_from_key ('test_feature_in_group' )
544540
545- expected_experiment = self .project_config .get_experiment_from_key ('group_exp_1' )
546- expected_variation = self .project_config .get_variation_from_id ('group_exp_1' , '28901' )
541+ expected_variation = project_config .get_variation_from_id ('group_exp_1' , '28901' )
547542 with mock .patch (
548543 'optimizely.decision_service.DecisionService.get_experiment_in_group' ,
549- return_value = self . project_config .get_experiment_from_key ('group_exp_1' )) as mock_get_experiment_in_group , \
544+ return_value = project_config .get_experiment_from_key ('group_exp_1' )) as mock_get_experiment_in_group , \
550545 mock .patch ('optimizely.decision_service.DecisionService.get_variation' ,
551546 return_value = expected_variation ) as mock_decision :
552- self .assertEqual (decision_service .Decision (expected_experiment , expected_variation ),
553- self .decision_service .get_variation_for_feature (feature , 'user1' ))
547+ self .assertEqual (expected_variation , decision_service .get_variation_for_feature (feature , 'user1' ))
554548
555- mock_get_experiment_in_group .assert_called_once_with (self . project_config .get_group ('19228' ), 'test_user ' )
556- mock_decision .assert_called_once_with (self . project_config .get_experiment_from_key ('group_exp_1' ), 'test_user ' , None )
549+ mock_get_experiment_in_group .assert_called_once_with (project_config .get_group ('19228' ), 'user1 ' )
550+ mock_decision .assert_called_once_with (project_config .get_experiment_from_key ('group_exp_1' ), 'user1 ' , None )
557551
558552 def test_get_variation_for_feature__returns_none_for_user_not_in_group (self , _ ):
559553 """ Test that get_variation_for_feature returns None for
@@ -564,8 +558,7 @@ def test_get_variation_for_feature__returns_none_for_user_not_in_group(self, _):
564558 with mock .patch ('optimizely.decision_service.DecisionService.get_experiment_in_group' ,
565559 return_value = None ) as mock_get_experiment_in_group , \
566560 mock .patch ('optimizely.decision_service.DecisionService.get_variation' ) as mock_decision :
567- self .assertEqual (decision_service .Decision (None , None ),
568- self .decision_service .get_variation_for_feature (feature , 'user1' ))
561+ self .assertIsNone (self .decision_service .get_variation_for_feature (feature , 'user1' ))
569562
570563 mock_get_experiment_in_group .assert_called_once_with (self .project_config .get_group ('19228' ), 'test_user' )
571564 self .assertFalse (mock_decision .called )
@@ -574,11 +567,9 @@ def test_get_variation_for_feature__returns_none_for_user_not_in_experiment(self
574567 """ Test that get_variation_for_feature returns None for user not in the associated experiment. """
575568
576569 feature = self .project_config .get_feature_from_key ('test_feature_in_experiment' )
577- expected_experiment = self .project_config .get_experiment_from_key ('test_experiment' )
578570
579571 with mock .patch ('optimizely.decision_service.DecisionService.get_variation' , return_value = None ) as mock_decision :
580- self .assertEqual (decision_service .Decision (expected_experiment , None ),
581- self .decision_service .get_variation_for_feature (feature , 'user1' ))
572+ self .assertIsNone (self .decision_service .get_variation_for_feature (feature , 'user1' ))
582573
583574 mock_decision .assert_called_once_with (
584575 self .project_config .get_experiment_from_key ('test_experiment' ), 'test_user' , None
@@ -589,12 +580,10 @@ def test_get_variation_for_feature__returns_none_for_user_in_group_experiment_no
589580 not targeting a feature, then None is returned. """
590581
591582 feature = self .project_config .get_feature_from_key ('test_feature_in_group' )
592- expected_experiment = self .project_config .get_experiment_from_key ('group_exp_2' )
593583
594584 with mock .patch ('optimizely.decision_service.DecisionService.get_experiment_in_group' ,
595585 return_value = self .project_config .get_experiment_from_key ('group_exp_2' )) as mock_decision :
596- self .assertEqual (decision_service .Decision (expected_experiment , None ),
597- self .decision_service .get_variation_for_feature (feature , 'user_1' ))
586+ self .assertIsNone (self .decision_service .get_variation_for_feature (feature , 'user_1' ))
598587
599588 mock_decision .assert_called_once_with (self .project_config .get_group ('19228' ), 'test_user' )
600589
0 commit comments