Skip to content

Commit

Permalink
docstrings/namings
Browse files Browse the repository at this point in the history
  • Loading branch information
oakbani committed Dec 24, 2018
1 parent da583c8 commit 24a6350
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 16 deletions.
3 changes: 2 additions & 1 deletion optimizely/helpers/validator.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,8 @@ def is_finite_number(value):
value: Value to be validated.
Returns:
Boolean: True if value is a number and not NAN, INF, -INF or greater than 2^53 else False.
Boolean: True if value is a number and not NAN, INF, -INF or
greater than absolute limit of 2^53 else False.
"""
if not isinstance(value, (numbers.Integral, float)):
# numbers.Integral instead of int to accomodate long integer in python 2
Expand Down
33 changes: 18 additions & 15 deletions tests/helpers_tests/test_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,25 +283,26 @@ def test_exact_float__returns_null__when_no_user_provided_value(self):
self.assertIsNone(evaluator.evaluate(0))

def test_exact__given_number_values__calls_is_finite_number(self):
""" Returns True if is_finite_number returns True. Returns None if is_finite_number returns False. """
""" Test that CustomAttributeConditionEvaluator.evaluate returns True
if is_finite_number returns True. Returns None if is_finite_number returns False. """

evaluator = condition_helper.CustomAttributeConditionEvaluator(
exact_int_condition_list, {'lasers_count': 9000}
)

with mock.patch('optimizely.helpers.validator.is_finite_number',
return_value=True) as is_finite:
return_value=True) as mock_is_finite:
self.assertTrue(evaluator.evaluate(0))
is_finite.assert_called_with(9000)
mock_is_finite.assert_called_with(9000)

evaluator = condition_helper.CustomAttributeConditionEvaluator(
exact_int_condition_list, {'lasers_count': 9000.0}
)

with mock.patch('optimizely.helpers.validator.is_finite_number',
return_value=False) as is_finite:
return_value=False) as mock_is_finite:
self.assertIsNone(evaluator.evaluate(0))
is_finite.assert_called_with(9000.0)
mock_is_finite.assert_called_with(9000.0)

def test_exact_bool__returns_true__when_user_provided_value_is_equal_to_condition_value(self):

Expand Down Expand Up @@ -612,7 +613,8 @@ def test_less_than_float__returns_null__when_no_user_provided_value(self):
self.assertIsNone(evaluator.evaluate(0))

def test_greater_than__calls_is_finite_number(self):
""" Returns True if is_finite_number returns True. Returns None if is_finite_number returns False. """
""" Test that CustomAttributeConditionEvaluator.evaluate returns True
if is_finite_number returns True. Returns None if is_finite_number returns False. """

evaluator = condition_helper.CustomAttributeConditionEvaluator(
gt_int_condition_list, {'meters_travelled': 48.1}
Expand All @@ -624,23 +626,23 @@ def is_finite_number__rejecting_condition_value(value):
return True

with mock.patch('optimizely.helpers.validator.is_finite_number',
side_effect=is_finite_number__rejecting_condition_value) as is_finite_mock:
side_effect=is_finite_number__rejecting_condition_value) as mock_is_finite:
self.assertIsNone(evaluator.evaluate(0))

# assert that isFiniteNumber only needs to reject condition value to stop evaluation.
is_finite_mock.assert_called_once_with(48)
mock_is_finite.assert_called_once_with(48)

def is_finite_number__rejecting_user_attribute_value(value):
if value == 48.1:
return False
return True

with mock.patch('optimizely.helpers.validator.is_finite_number',
side_effect=is_finite_number__rejecting_user_attribute_value) as is_finite_mock:
side_effect=is_finite_number__rejecting_user_attribute_value) as mock_is_finite:
self.assertIsNone(evaluator.evaluate(0))

# assert that isFiniteNumber evaluates user value only if it has accepted condition value.
is_finite_mock.assert_has_calls([mock.call(48), mock.call(48.1)])
mock_is_finite.assert_has_calls([mock.call(48), mock.call(48.1)])

def is_finite_number__accepting_both_values(value):
return True
Expand All @@ -650,7 +652,8 @@ def is_finite_number__accepting_both_values(value):
self.assertTrue(evaluator.evaluate(0))

def test_less_than__calls_is_finite_number(self):
""" Returns True if is_finite_number returns True. Returns None if is_finite_number returns False. """
""" Test that CustomAttributeConditionEvaluator.evaluate returns True
if is_finite_number returns True. Returns None if is_finite_number returns False. """

evaluator = condition_helper.CustomAttributeConditionEvaluator(
lt_int_condition_list, {'meters_travelled': 47}
Expand All @@ -662,23 +665,23 @@ def is_finite_number__rejecting_condition_value(value):
return True

with mock.patch('optimizely.helpers.validator.is_finite_number',
side_effect=is_finite_number__rejecting_condition_value) as is_finite_mock:
side_effect=is_finite_number__rejecting_condition_value) as mock_is_finite:
self.assertIsNone(evaluator.evaluate(0))

# assert that isFiniteNumber only needs to reject condition value to stop evaluation.
is_finite_mock.assert_called_once_with(48)
mock_is_finite.assert_called_once_with(48)

def is_finite_number__rejecting_user_attribute_value(value):
if value == 47:
return False
return True

with mock.patch('optimizely.helpers.validator.is_finite_number',
side_effect=is_finite_number__rejecting_user_attribute_value) as is_finite_mock:
side_effect=is_finite_number__rejecting_user_attribute_value) as mock_is_finite:
self.assertIsNone(evaluator.evaluate(0))

# assert that isFiniteNumber evaluates user value only if it has accepted condition value.
is_finite_mock.assert_has_calls([mock.call(48), mock.call(47)])
mock_is_finite.assert_has_calls([mock.call(48), mock.call(47)])

def is_finite_number__accepting_both_values(value):
return True
Expand Down

0 comments on commit 24a6350

Please sign in to comment.