Skip to content

Commit bd0acf4

Browse files
committed
Patching tests
1 parent b4e75b4 commit bd0acf4

File tree

4 files changed

+11
-101
lines changed

4 files changed

+11
-101
lines changed

optimizely/entities.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ def __init__(self, id, policy, experiments, trafficAllocation, **kwargs):
7070

7171
class Variation(BaseEntity):
7272

73-
def __init__(self, id, key, variables=None, featureFlagMap=None, **kwargs):
73+
def __init__(self, id, key, **kwargs):
7474
self.id = id
7575
self.key = key
76-
self.variables = variables or []
77-
self.featureFlagMap = featureFlagMap or {}

optimizely/optimizely.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,8 @@ def activate(self, experiment_key, user_id, attributes=None):
191191
error = sys.exc_info()[1]
192192
self.logger.log(enums.LogLevels.ERROR, 'Unable to dispatch impression event. Error: %s' % str(error))
193193

194+
self.notification_center.send_notifications(enums.NotificationTypes.ACTIVATE,
195+
experiment, user_id, attributes, variation, impression_event)
194196
return variation.key
195197

196198
def track(self, event_key, user_id, attributes=None, event_tags=None):

tests/test_config.py

Lines changed: 8 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -456,24 +456,12 @@ def test_init__with_v3_datafile(self):
456456
}
457457
expected_variation_key_map = {
458458
'test_experiment': {
459-
'control': entities.Variation('111128', 'control', [{'id': '127', 'value': 'false'}], {'is_working': False}),
460-
'variation': entities.Variation('111129', 'variation', [{'id': '127', 'value': 'true'}], {'is_working': True})
459+
'control': entities.Variation('111128', 'control'),
460+
'variation': entities.Variation('111129', 'variation')
461461
},
462462
'group_exp_1': {
463-
'group_exp_1_control': entities.Variation(
464-
'28901', 'group_exp_1_control', [
465-
{'id': '128', 'value': 'prod'}, {'id': '129', 'value': '1772'}, {'id': '130', 'value': '1.22992'}], {
466-
'environment': 'prod',
467-
'number_of_days': 1772,
468-
'significance_value': 1.22992
469-
}),
470-
'group_exp_1_variation': entities.Variation(
471-
'28902', 'group_exp_1_variation', [
472-
{'id': '128', 'value': 'stage'}, {'id': '129', 'value': '112'}, {'id': '130', 'value': '1.211'}], {
473-
'environment': 'stage',
474-
'number_of_days': 112,
475-
'significance_value': 1.211
476-
})
463+
'group_exp_1_control': entities.Variation('28901', 'group_exp_1_control'),
464+
'group_exp_1_variation': entities.Variation('28902', 'group_exp_1_variation')
477465
},
478466
'group_exp_2': {
479467
'group_exp_2_control': entities.Variation('28905', 'group_exp_2_control'),
@@ -482,22 +470,12 @@ def test_init__with_v3_datafile(self):
482470
}
483471
expected_variation_id_map = {
484472
'test_experiment': {
485-
'111128': entities.Variation('111128', 'control', [{'id': '127', 'value': 'false'}], {'is_working': False}),
486-
'111129': entities.Variation('111129', 'variation', [{'id': '127', 'value': 'true'}], {'is_working': True})
473+
'111128': entities.Variation('111128', 'control'),
474+
'111129': entities.Variation('111129', 'variation')
487475
},
488476
'group_exp_1': {
489-
'28901': entities.Variation('28901', 'group_exp_1_control', [
490-
{'id': '128', 'value': 'prod'}, {'id': '129', 'value': '1772'}, {'id': '130', 'value': '1.22992'}], {
491-
'environment': 'prod',
492-
'number_of_days': 1772,
493-
'significance_value': 1.22992
494-
}),
495-
'28902': entities.Variation('28902', 'group_exp_1_variation', [
496-
{'id': '128', 'value': 'stage'}, {'id': '129', 'value': '112'}, {'id': '130', 'value': '1.211'}], {
497-
'environment': 'stage',
498-
'number_of_days': 112,
499-
'significance_value': 1.211
500-
})
477+
'28901': entities.Variation('28901', 'group_exp_1_control'),
478+
'28902': entities.Variation('28902', 'group_exp_1_variation')
501479
},
502480
'group_exp_2': {
503481
'28905': entities.Variation('28905', 'group_exp_2_control'),
@@ -513,7 +491,6 @@ def test_init__with_v3_datafile(self):
513491
self.assertEqual(expected_audience_id_map, project_config.audience_id_map)
514492
self.assertEqual(expected_variation_key_map, project_config.variation_key_map)
515493
self.assertEqual(expected_variation_id_map, project_config.variation_id_map)
516-
self.assertEqual(expected_feature_flag_id_map, project_config.feature_flag_id_map)
517494

518495
def test_get_version(self):
519496
""" Test that JSON version is retrieved correctly when using get_version. """

tests/test_optimizely.py

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
from optimizely import logger
2222
from optimizely import optimizely
2323
from optimizely import project_config
24-
from optimizely import user_profile
2524
from optimizely import version
2625
from optimizely.logger import SimpleLogger
2726
from optimizely.notification_center import NotificationCenter
@@ -429,72 +428,6 @@ def test_track_listener_with_attr_with_event_tags(self):
429428
{'value': 1.234, 'non-revenue': 'abc'},
430429
mock_dispatch.call_args[0][0])
431430

432-
def test_is_feature_enabled__callback_listener(self):
433-
""" Test that the feature is enabled for the user if bucketed into variation of an experiment.
434-
Also confirm that impression event is dispatched. """
435-
436-
opt_obj = optimizely.Optimizely(json.dumps(self.config_dict_with_features))
437-
project_config = opt_obj.config
438-
feature = project_config.get_feature_from_key('test_feature_in_experiment')
439-
440-
access_callback = [False]
441-
442-
def on_activate(experiment, user_id, attributes, variation, event):
443-
access_callback[0] = True
444-
445-
opt_obj.notification_center.add_notification_listener(enums.NotificationTypes.ACTIVATE, on_activate)
446-
447-
mock_experiment = project_config.get_experiment_from_key('test_experiment')
448-
mock_variation = project_config.get_variation_from_id('test_experiment', '111129')
449-
450-
with mock.patch('optimizely.decision_service.DecisionService.get_variation_for_feature',
451-
return_value=decision_service.Decision(
452-
mock_experiment,
453-
mock_variation,
454-
decision_service.DECISION_SOURCE_EXPERIMENT
455-
)) as mock_decision, \
456-
mock.patch('optimizely.event_dispatcher.EventDispatcher.dispatch_event') as mock_dispatch_event, \
457-
mock.patch('uuid.uuid4', return_value='a68cf1ad-0393-4e18-af87-efe8f01a7c9c'), \
458-
mock.patch('time.time', return_value=42):
459-
self.assertTrue(opt_obj.is_feature_enabled('test_feature_in_experiment', 'test_user'))
460-
461-
mock_decision.assert_called_once_with(feature, 'test_user', None)
462-
self.assertTrue(access_callback[0])
463-
464-
def test_is_feature_enabled_rollout_callback_listener(self):
465-
""" Test that the feature is enabled for the user if bucketed into variation of a rollout.
466-
Also confirm that no impression event is dispatched. """
467-
468-
opt_obj = optimizely.Optimizely(json.dumps(self.config_dict_with_features))
469-
project_config = opt_obj.config
470-
feature = project_config.get_feature_from_key('test_feature_in_experiment')
471-
472-
access_callback = [False]
473-
474-
def on_activate(experiment, user_id, attributes, variation, event):
475-
access_callback[0] = True
476-
477-
opt_obj.notification_center.add_notification_listener(enums.NotificationTypes.ACTIVATE, on_activate)
478-
479-
mock_experiment = project_config.get_experiment_from_key('test_experiment')
480-
mock_variation = project_config.get_variation_from_id('test_experiment', '111129')
481-
with mock.patch('optimizely.decision_service.DecisionService.get_variation_for_feature',
482-
return_value=decision_service.Decision(
483-
mock_experiment,
484-
mock_variation,
485-
decision_service.DECISION_SOURCE_ROLLOUT
486-
)) as mock_decision, \
487-
mock.patch('optimizely.event_dispatcher.EventDispatcher.dispatch_event') as mock_dispatch_event, \
488-
mock.patch('uuid.uuid4', return_value='a68cf1ad-0393-4e18-af87-efe8f01a7c9c'), \
489-
mock.patch('time.time', return_value=42):
490-
self.assertTrue(opt_obj.is_feature_enabled('test_feature_in_experiment', 'test_user'))
491-
492-
mock_decision.assert_called_once_with(feature, 'test_user', None)
493-
494-
# Check that impression event is not sent
495-
self.assertEqual(0, mock_dispatch_event.call_count)
496-
self.assertEqual(False, access_callback[0])
497-
498431
def test_activate__with_attributes__audience_match(self):
499432
""" Test that activate calls dispatch_event with right params and returns expected
500433
variation when attributes are provided and audience conditions are met. """

0 commit comments

Comments
 (0)