Skip to content

Commit dde426a

Browse files
committed
Revert "Moving around some code (#70)"
This reverts commit 02eca8a.
1 parent fcc840f commit dde426a

File tree

2 files changed

+25
-44
lines changed

2 files changed

+25
-44
lines changed

optimizely/optimizely.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,6 @@ def is_feature_enabled(self, feature_key, user_id, attributes=None):
291291
Returns:
292292
True if the feature is enabled for the user. False otherwise.
293293
"""
294-
295294
if not self.is_valid:
296295
self.logger.log(enums.LogLevels.ERROR, enums.Errors.INVALID_DATAFILE.format('is_feature_enabled'))
297296
return False
@@ -317,13 +316,13 @@ def get_enabled_features(self, user_id, attributes=None):
317316
318317
Returns:
319318
A list of the keys of the features that are enabled for the user.
320-
"""
321319
322-
enabled_features = []
320+
"""
323321
if not self.is_valid:
324322
self.logger.log(enums.LogLevels.ERROR, enums.Errors.INVALID_DATAFILE.format('get_enabled_features'))
325-
return enabled_features
323+
return False
326324

325+
enabled_features = []
327326
for feature in self.config.feature_key_map.values():
328327
if self.is_feature_enabled(feature.key, user_id, attributes):
329328
enabled_features.append(feature.key)

tests/test_optimizely.py

Lines changed: 22 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,7 @@ def test_activate__bucketer_returns_none(self):
701701
def test_activate__invalid_object(self):
702702
""" Test that activate logs error if Optimizely object is not created correctly. """
703703

704-
opt_obj = optimizely.Optimizely('invalid_datafile')
704+
opt_obj = optimizely.Optimizely('invalid_file')
705705

706706
with mock.patch('optimizely.logger.SimpleLogger.log') as mock_logging:
707707
self.assertIsNone(opt_obj.activate('test_experiment', 'test_user'))
@@ -1156,7 +1156,7 @@ def test_track__whitelisted_user_overrides_audience_check(self):
11561156
def test_track__invalid_object(self):
11571157
""" Test that track logs error if Optimizely object is not created correctly. """
11581158

1159-
opt_obj = optimizely.Optimizely('invalid_datafile')
1159+
opt_obj = optimizely.Optimizely('invalid_file')
11601160

11611161
with mock.patch('optimizely.logger.SimpleLogger.log') as mock_logging:
11621162
opt_obj.track('test_event', 'test_user')
@@ -1166,7 +1166,7 @@ def test_track__invalid_object(self):
11661166
def test_get_variation__invalid_object(self):
11671167
""" Test that get_variation logs error if Optimizely object is not created correctly. """
11681168

1169-
opt_obj = optimizely.Optimizely('invalid_datafile')
1169+
opt_obj = optimizely.Optimizely('invalid_file')
11701170

11711171
with mock.patch('optimizely.logger.SimpleLogger.log') as mock_logging:
11721172
self.assertIsNone(opt_obj.get_variation('test_experiment', 'test_user'))
@@ -1175,42 +1175,34 @@ def test_get_variation__invalid_object(self):
11751175

11761176
def test_is_feature_enabled__returns_false_for_invalid_feature(self):
11771177
""" Test that the feature is not enabled for the user if the provided feature key is invalid. """
1178+
optimizely_instance = optimizely.Optimizely(json.dumps(self.config_dict_with_features))
1179+
project_config = optimizely_instance.config
11781180

1179-
opt_obj = optimizely.Optimizely(json.dumps(self.config_dict_with_features))
1180-
1181-
with mock.patch('optimizely.decision_service.DecisionService.get_variation_for_feature') as mock_decision:
1182-
self.assertFalse(opt_obj.is_feature_enabled('invalid_feature', 'user1'))
1181+
with mock.patch(
1182+
'optimizely.decision_service.DecisionService.get_variation_for_feature'
1183+
) as mock_decision:
1184+
self.assertFalse(optimizely_instance.is_feature_enabled('invalid_feature', 'user1'))
11831185

11841186
self.assertFalse(mock_decision.called)
11851187

11861188
def test_is_feature_enabled__returns_true_if_user_is_bucketed_into_a_variation(self):
11871189
""" Test that the feature is not enabled for the user if the provided feature key is invalid. """
1188-
1189-
opt_obj = optimizely.Optimizely(json.dumps(self.config_dict_with_features))
1190-
project_config = opt_obj.config
1190+
optimizely_instance = optimizely.Optimizely(json.dumps(self.config_dict_with_features))
1191+
project_config = optimizely_instance.config
11911192
feature = project_config.get_feature_from_key('test_feature_1')
11921193

1193-
with mock.patch('optimizely.decision_service.DecisionService.get_variation_for_feature',
1194-
return_value=project_config.get_variation_from_id('test_experiment', '111129')) as mock_decision:
1195-
self.assertTrue(opt_obj.is_feature_enabled('test_feature_1', 'user1'))
1194+
with mock.patch(
1195+
'optimizely.decision_service.DecisionService.get_variation_for_feature',
1196+
return_value=project_config.get_variation_from_id('test_experiment', '111129')
1197+
) as mock_decision:
1198+
self.assertTrue(optimizely_instance.is_feature_enabled('test_feature_1', 'user1'))
11961199

11971200
mock_decision.assert_called_once_with(feature, 'user1', None)
11981201

1199-
def test_is_feature_enabled__invalid_object(self):
1200-
""" Test that is_feature_enabled returns False if Optimizely object is not valid. """
1201-
1202-
opt_obj = optimizely.Optimizely('invalid_file')
1203-
1204-
with mock.patch('optimizely.logger.SimpleLogger.log') as mock_logging:
1205-
self.assertFalse(opt_obj.is_feature_enabled('test_feature_1', 'user_1'))
1206-
1207-
mock_logging.assert_called_once_with(enums.LogLevels.ERROR,
1208-
'Datafile has invalid format. Failing "is_feature_enabled".')
1209-
12101202
def test_get_enabled_features(self):
12111203
""" Test that get_enabled_features only returns features that are enabled for the specified user. """
1212-
1213-
opt_obj = optimizely.Optimizely(json.dumps(self.config_dict_with_features))
1204+
optimizely_instance = optimizely.Optimizely(json.dumps(self.config_dict_with_features))
1205+
project_config = optimizely_instance.config
12141206

12151207
def side_effect(*args, **kwargs):
12161208
feature_key = args[0]
@@ -1219,9 +1211,10 @@ def side_effect(*args, **kwargs):
12191211

12201212
return False
12211213

1222-
with mock.patch('optimizely.optimizely.Optimizely.is_feature_enabled',
1223-
side_effect=side_effect) as mock_is_feature_enabled:
1224-
received_features = opt_obj.get_enabled_features('user_1')
1214+
with mock.patch(
1215+
'optimizely.optimizely.Optimizely.is_feature_enabled',
1216+
side_effect=side_effect) as mock_is_feature_enabled:
1217+
received_features = optimizely_instance.get_enabled_features('user_1')
12251218

12261219
expected_enabled_features = ['test_feature_1', 'test_feature_2']
12271220
self.assertEqual(sorted(expected_enabled_features), sorted(received_features))
@@ -1230,17 +1223,6 @@ def side_effect(*args, **kwargs):
12301223
mock_is_feature_enabled.assert_any_call('test_feature_in_group', 'user_1', None)
12311224
mock_is_feature_enabled.assert_any_call('test_feature_in_experiment_and_rollout', 'user_1', None)
12321225

1233-
def test_get_enabled_features__invalid_object(self):
1234-
""" Test that get_enabled_features returns empty list if Optimizely object is not valid. """
1235-
1236-
opt_obj = optimizely.Optimizely('invalid_file')
1237-
1238-
with mock.patch('optimizely.logger.SimpleLogger.log') as mock_logging:
1239-
self.assertEqual([], opt_obj.get_enabled_features('user_1'))
1240-
1241-
mock_logging.assert_called_once_with(enums.LogLevels.ERROR,
1242-
'Datafile has invalid format. Failing "get_enabled_features".')
1243-
12441226

12451227
class OptimizelyWithExceptionTest(base.BaseTest):
12461228
def setUp(self):

0 commit comments

Comments
 (0)