4
4
import random
5
5
6
6
from optimizely import bucketer
7
+ from optimizely import entities
7
8
from optimizely import logger
8
9
from optimizely import optimizely
9
10
from optimizely .helpers import enums
@@ -24,15 +25,18 @@ def test_bucket(self):
24
25
# Variation 1
25
26
with mock .patch ('optimizely.bucketer.Bucketer._generate_bucket_value' ,
26
27
return_value = 42 ) as mock_generate_bucket_value :
27
- self .assertEqual ('111128' , self .bucketer .bucket (self .project_config .get_experiment_from_key ('test_experiment' ),
28
- 'test_user' ))
28
+ self .assertEqual (entities .Variation ('111128' , 'control' ),
29
+ self .bucketer .bucket (
30
+ self .project_config .get_experiment_from_key ('test_experiment' ), 'test_user'
31
+ ))
29
32
mock_generate_bucket_value .assert_called_once_with ('test_user111127' )
30
33
31
34
# Variation 2
32
35
with mock .patch ('optimizely.bucketer.Bucketer._generate_bucket_value' ,
33
36
return_value = 4242 ) as mock_generate_bucket_value :
34
- self .assertEqual ('111129' , self .bucketer .bucket (self .project_config .get_experiment_from_key ('test_experiment' ),
35
- 'test_user' ))
37
+ self .assertEqual (entities .Variation ('111129' , 'variation' ),
38
+ self .bucketer .bucket (self .project_config .get_experiment_from_key ('test_experiment' ),
39
+ 'test_user' ))
36
40
mock_generate_bucket_value .assert_called_once_with ('test_user111127' )
37
41
38
42
# No matching variation
@@ -52,8 +56,8 @@ def test_bucket__user_in_forced_variation(self):
52
56
""" Test that bucket returns variation ID for variation user is forced in. """
53
57
54
58
with mock .patch ('optimizely.bucketer.Bucketer._generate_bucket_value' ) as mock_generate_bucket_value :
55
- self .assertEqual ('111128' , self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'test_experiment ' ),
56
- 'user_1' ))
59
+ self .assertEqual (entities . Variation ( '111128' , 'control ' ),
60
+ self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'test_experiment' ), 'user_1' ))
57
61
58
62
# Confirm that bucket value generation did not happen
59
63
self .assertEqual (0 , mock_generate_bucket_value .call_count )
@@ -62,7 +66,7 @@ def test_bucket__user_in_forced_variation__invalid_variation_id(self):
62
66
""" Test that bucket returns None when variation user is forced in is invalid. """
63
67
64
68
with mock .patch ('optimizely.bucketer.Bucketer._generate_bucket_value' ) as mock_generate_bucket_value , \
65
- mock .patch ('optimizely.project_config.ProjectConfig.get_variation_id ' ,
69
+ mock .patch ('optimizely.project_config.ProjectConfig.get_variation_from_key ' ,
66
70
return_value = None ) as mock_get_variation_id :
67
71
self .assertIsNone (self .bucketer .bucket (self .project_config .get_experiment_from_key ('test_experiment' ),
68
72
'user_1' ))
@@ -77,8 +81,8 @@ def test_bucket__experiment_in_group(self):
77
81
# In group, matching experiment and variation
78
82
with mock .patch ('optimizely.bucketer.Bucketer._generate_bucket_value' ,
79
83
side_effect = [42 , 4242 ]) as mock_generate_bucket_value :
80
- self .assertEqual ('28902' , self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'group_exp_1 ' ),
81
- 'test_user' ))
84
+ self .assertEqual (entities . Variation ( '28902' , 'group_exp_1_variation ' ),
85
+ self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'group_exp_1' ), 'test_user' ))
82
86
83
87
self .assertEqual ([mock .call ('test_user19228' ), mock .call ('test_user32222' )],
84
88
mock_generate_bucket_value .call_args_list )
@@ -110,8 +114,8 @@ def test_bucket__experiment_in_group__user_in_forced_variation(self):
110
114
""" Test that bucket returns variation ID for variation user is forced in. """
111
115
112
116
with mock .patch ('optimizely.bucketer.Bucketer._generate_bucket_value' ) as mock_generate_bucket_value :
113
- self .assertEqual ('28905' , self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'group_exp_2 ' ),
114
- 'user_1' ))
117
+ self .assertEqual (entities . Variation ( '28905' , 'group_exp_2_control ' ),
118
+ self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'group_exp_2' ), 'user_1' ))
115
119
116
120
# Confirm that bucket value generation did not happen
117
121
self .assertEqual (0 , mock_generate_bucket_value .call_count )
@@ -151,8 +155,9 @@ def test_bucket(self):
151
155
# Variation 1
152
156
with mock .patch ('optimizely.bucketer.Bucketer._generate_bucket_value' , return_value = 42 ),\
153
157
mock .patch ('optimizely.logger.SimpleLogger.log' ) as mock_logging :
154
- self .assertEqual ('111128' , self .bucketer .bucket (self .project_config .get_experiment_from_key ('test_experiment' ),
155
- 'test_user' ))
158
+ self .assertEqual (entities .Variation ('111128' , 'control' ),
159
+ self .bucketer .bucket (self .project_config .get_experiment_from_key ('test_experiment' ),
160
+ 'test_user' ))
156
161
157
162
self .assertEqual (2 , mock_logging .call_count )
158
163
self .assertEqual (mock .call (enums .LogLevels .DEBUG , 'Assigned bucket 42 to user "test_user".' ),
@@ -165,8 +170,9 @@ def test_bucket(self):
165
170
# Variation 2
166
171
with mock .patch ('optimizely.bucketer.Bucketer._generate_bucket_value' , return_value = 4242 ),\
167
172
mock .patch ('optimizely.logger.SimpleLogger.log' ) as mock_logging :
168
- self .assertEqual ('111129' , self .bucketer .bucket (self .project_config .get_experiment_from_key ('test_experiment' ),
169
- 'test_user' ))
173
+ self .assertEqual (entities .Variation ('111129' , 'variation' ),
174
+ self .bucketer .bucket (self .project_config .get_experiment_from_key ('test_experiment' ),
175
+ 'test_user' ))
170
176
self .assertEqual (2 , mock_logging .call_count )
171
177
self .assertEqual (mock .call (enums .LogLevels .DEBUG , 'Assigned bucket 4242 to user "test_user".' ),
172
178
mock_logging .call_args_list [0 ])
@@ -191,8 +197,8 @@ def test_bucket__user_in_forced_variation(self):
191
197
192
198
with mock .patch ('optimizely.bucketer.Bucketer._generate_bucket_value' ),\
193
199
mock .patch ('optimizely.logger.SimpleLogger.log' ) as mock_logging :
194
- self .assertEqual ('111128' , self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'test_experiment ' ),
195
- 'user_1' ))
200
+ self .assertEqual (entities . Variation ( '111128' , 'control ' ),
201
+ self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'test_experiment' ), 'user_1' ))
196
202
197
203
mock_logging .assert_called_with (enums .LogLevels .INFO , 'User "user_1" is forced in variation "control".' )
198
204
@@ -203,8 +209,8 @@ def test_bucket__experiment_in_group(self):
203
209
with mock .patch ('optimizely.bucketer.Bucketer._generate_bucket_value' ,
204
210
side_effect = [42 , 4242 ]),\
205
211
mock .patch ('optimizely.logger.SimpleLogger.log' ) as mock_logging :
206
- self .assertEqual ('28902' , self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'group_exp_1 ' ),
207
- 'test_user' ))
212
+ self .assertEqual (entities . Variation ( '28902' , 'group_exp_1_variation ' ),
213
+ self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'group_exp_1' ), 'test_user' ))
208
214
self .assertEqual (4 , mock_logging .call_count )
209
215
self .assertEqual (mock .call (enums .LogLevels .DEBUG , 'Assigned bucket 42 to user "test_user".' ),
210
216
mock_logging .call_args_list [0 ])
@@ -277,8 +283,8 @@ def test_bucket__experiment_in_group__user_in_forced_variation(self):
277
283
278
284
with mock .patch ('optimizely.bucketer.Bucketer._generate_bucket_value' ),\
279
285
mock .patch ('optimizely.logger.SimpleLogger.log' ) as mock_logging :
280
- self .assertEqual ('28905' , self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'group_exp_2 ' ),
281
- 'user_1' ))
286
+ self .assertEqual (entities . Variation ( '28905' , 'group_exp_2_control ' ),
287
+ self . bucketer . bucket ( self . project_config . get_experiment_from_key ( 'group_exp_2' ), 'user_1' ))
282
288
283
289
# Confirm that bucket value generation did not happen
284
290
mock_logging .assert_called_with (enums .LogLevels .INFO , 'User "user_1" is forced in variation "group_exp_2_control".' )
0 commit comments