14
14
import json
15
15
import mock
16
16
17
- from optimizely import decision_service
18
17
from optimizely import entities
19
18
from optimizely import optimizely
20
19
from optimizely import user_profile
@@ -377,8 +376,7 @@ def test_get_variation_for_rollout__returns_none_if_no_experiments(self, mock_lo
377
376
""" Test that get_variation_for_rollout returns None if there are no experiments (targeting rules). """
378
377
379
378
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' ))
382
380
383
381
# Assert no log messages were generated
384
382
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
438
436
439
437
with mock .patch ('optimizely.helpers.audience.is_user_in_experiment' , return_value = True ) as mock_audience_check ,\
440
438
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' ))
443
440
444
441
# Check that after first experiment, it skips to the last experiment to check
445
442
self .assertEqual (
@@ -461,8 +458,7 @@ def test_get_variation_for_rollout__returns_none_for_user_not_in_rollout(self, m
461
458
rollout = self .project_config .get_rollout_from_id ('211111' )
462
459
463
460
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' ))
466
462
467
463
# Check that all experiments in rollout layer were checked
468
464
self .assertEqual (
@@ -483,12 +479,11 @@ def test_get_variation_for_feature__returns_variation_for_feature_in_experiment(
483
479
484
480
feature = self .project_config .get_feature_from_key ('test_feature_in_experiment' )
485
481
486
- expected_experiment = self .project_config .get_experiment_from_key ('test_experiment' )
487
482
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' ))
492
487
493
488
mock_decision .assert_called_once_with (
494
489
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_
521
516
522
517
feature = self .project_config .get_feature_from_key ('test_feature_in_experiment_and_rollout' )
523
518
524
- expected_experiment = self .project_config .get_experiment_from_key ('211127' )
525
519
expected_variation = self .project_config .get_variation_from_id ('211127' , '211129' )
526
520
with mock .patch (
527
521
'optimizely.helpers.audience.is_user_in_experiment' ,
528
522
side_effect = [False , True ]) as mock_audience_check , \
529
523
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' ))
532
525
533
526
self .assertEqual (2 , mock_audience_check .call_count )
534
527
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,
540
533
""" Test that get_variation_for_feature returns the variation of
541
534
the experiment the user is bucketed in the feature's group. """
542
535
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' )
544
540
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' )
547
542
with mock .patch (
548
543
'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 , \
550
545
mock .patch ('optimizely.decision_service.DecisionService.get_variation' ,
551
546
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' ))
554
548
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 )
557
551
558
552
def test_get_variation_for_feature__returns_none_for_user_not_in_group (self , _ ):
559
553
""" 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, _):
564
558
with mock .patch ('optimizely.decision_service.DecisionService.get_experiment_in_group' ,
565
559
return_value = None ) as mock_get_experiment_in_group , \
566
560
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' ))
569
562
570
563
mock_get_experiment_in_group .assert_called_once_with (self .project_config .get_group ('19228' ), 'test_user' )
571
564
self .assertFalse (mock_decision .called )
@@ -574,11 +567,9 @@ def test_get_variation_for_feature__returns_none_for_user_not_in_experiment(self
574
567
""" Test that get_variation_for_feature returns None for user not in the associated experiment. """
575
568
576
569
feature = self .project_config .get_feature_from_key ('test_feature_in_experiment' )
577
- expected_experiment = self .project_config .get_experiment_from_key ('test_experiment' )
578
570
579
571
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' ))
582
573
583
574
mock_decision .assert_called_once_with (
584
575
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
589
580
not targeting a feature, then None is returned. """
590
581
591
582
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' )
593
583
594
584
with mock .patch ('optimizely.decision_service.DecisionService.get_experiment_in_group' ,
595
585
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' ))
598
587
599
588
mock_decision .assert_called_once_with (self .project_config .get_group ('19228' ), 'test_user' )
600
589
0 commit comments