def test_evaluate_rule_less_than_or_equals_with_number(self): when = {"value": 4, "condition": "less than or equal to"} self.assertTrue(evaluate_rule(when, 4)) self.assertTrue(evaluate_rule(when, 3)) self.assertFalse(evaluate_rule(when, 5)) self.assertFalse(evaluate_rule(when, None))
def test_evaluate_rule_checkbox_not_contains_any(self): when = {'values': ['aaa', 'bbb'], 'condition': 'not contains any'} self.assertTrue(evaluate_rule(when, ['ccc'])) self.assertFalse(evaluate_rule(when, ['bbb', 'ccc'])) self.assertFalse(evaluate_rule(when, ['aaa', 'bbb'])) self.assertFalse(evaluate_rule(when, ['aaa', 'bbb', 'ccc']))
def test_evaluate_rule_not_set_should_be_false(self): when = { 'condition': 'not set' } self.assertFalse(evaluate_rule(when, '')) self.assertFalse(evaluate_rule(when, 'some text'))
def test_evaluate_rule_radio_not_contains_any(self): when = {'values': ['a', 'b'], 'condition': 'not contains any'} self.assertTrue(evaluate_rule(when, 'c')) self.assertTrue(evaluate_rule(when, '')) self.assertFalse(evaluate_rule(when, 'b')) self.assertFalse(evaluate_rule(when, 'a'))
def test_evaluate_rule_less_than_or_equals_with_number(self): when = {'value': 4, 'condition': 'less than or equal to'} self.assertTrue(evaluate_rule(when, 4)) self.assertTrue(evaluate_rule(when, 3)) self.assertFalse(evaluate_rule(when, 5)) self.assertFalse(evaluate_rule(when, None))
def test_evaluate_rule_uses_boolean_value(self): when = {"value": False, "condition": "equals"} self.assertTrue(evaluate_rule(when, False)) when = {"value": True, "condition": "not equals"} self.assertTrue(evaluate_rule(when, False))
def test_evaluate_rule_uses_boolean_value(self): when = {'value': False, 'condition': 'equals'} self.assertTrue(evaluate_rule(when, False)) when = {'value': True, 'condition': 'not equals'} self.assertTrue(evaluate_rule(when, False))
def test_evaluate_rule_not_equals_with_number(self): when = { 'value': 0, 'condition': 'not equals' } self.assertTrue(evaluate_rule(when, 2)) self.assertFalse(evaluate_rule(when, 0))
def test_evaluate_rule_not_equals_any_with_string_case_insensitive(self): when = { "value": ["answerValue", "notAnswerValue"], "condition": "not equals any", } self.assertFalse(evaluate_rule(when, "answervalue")) self.assertFalse(evaluate_rule(when, "answerValue")) self.assertTrue(evaluate_rule(when, "answer-value"))
def test_evaluate_rule_less_than_with_number(self): when = { 'value': 5, 'condition': 'less than' } self.assertTrue(evaluate_rule(when, 3)) self.assertFalse(evaluate_rule(when, 5)) self.assertFalse(evaluate_rule(when, 7))
def test_evaluate_rule_uses_single_value_from_list(self): when = { 'value': 'singleAnswer', 'condition': 'contains' } list_of_answers = ['singleAnswer'] self.assertTrue(evaluate_rule(when, list_of_answers))
def test_evaluate_rule_uses_multiple_values_in_list_returns_false(self): when = { 'value': 'firstAnswer', 'condition': 'equals' } list_of_answers = ['firstAnswer', 'secondAnswer'] self.assertFalse(evaluate_rule(when, list_of_answers))
def is_skipped(self, all_answers): if self.skip_condition is not None: for when_rule in self.skip_condition['when']: answer = all_answers.get(when_rule['id']) if not evaluate_rule(when_rule, answer): return False return True return False
def test_skip_condition_false(self): answer = "Bothans" # find the question with the 'not equals' skip condition question = self.question_map["048e40da-bca4-48e5-9885-0bb6413bef62"] # check the skip condition exists self.assertIsNotNone(question['skip_condition']) # the condition will fire now as we have answer the question correctly, so we won't skip the question self.assertFalse( evaluate_rule(question['skip_condition']['when'][0], answer))
def test_skip_condition_blank(self): answer = "" # find the question with the 'not equals' skip condition question = self.question_map["048e40da-bca4-48e5-9885-0bb6413bef62"] # check the skip condition exists self.assertIsNotNone(question['skip_condition']) # the condition won't fire as we haven't answered any questions, so we will skip the question self.assertTrue( evaluate_rule(question['skip_condition']['when'][0], answer))
def test_skip_condition_false(self): answer = "Bothans" # find the question with the 'not equals' skip condition question = self.questionnaire.get_item_by_id( "048e40da-bca4-48e5-9885-0bb6413bef62") # check the parse has set up the skip condition self.assertIsNotNone(question.skip_condition) # the condition will fire now as we have answer the question correctly, so we won't skip the question self.assertFalse( evaluate_rule(question.skip_condition['when'][0], answer))
def test_skip_condition_blank(self): answer = "" # find the question with the 'not equals' skip condition question = self.questionnaire.get_item_by_id( "048e40da-bca4-48e5-9885-0bb6413bef62") # check the parse has set up the skip condition self.assertIsNotNone(question.skip_condition) # the condition won't fire as we haven't answered any questions, so we will skip the question self.assertTrue( evaluate_rule(question.skip_condition['when'][0], answer))
def test_evaluate_rule_set_should_be_true(self): when = {'condition': 'set'} self.assertTrue(evaluate_rule(when, '')) self.assertTrue(evaluate_rule(when, '0')) self.assertTrue(evaluate_rule(when, 'Yes')) self.assertTrue(evaluate_rule(when, 'No')) self.assertTrue(evaluate_rule(when, 0)) self.assertTrue(evaluate_rule(when, 1))
def test_evaluate_rule_set_should_be_true(self): when = {"condition": "set"} self.assertTrue(evaluate_rule(when, "")) self.assertTrue(evaluate_rule(when, "0")) self.assertTrue(evaluate_rule(when, "Yes")) self.assertTrue(evaluate_rule(when, "No")) self.assertTrue(evaluate_rule(when, 0)) self.assertTrue(evaluate_rule(when, 1))
def test_evaluate_rule_set_should_be_false(self): when = {"condition": "set"} self.assertFalse(evaluate_rule(when, None))
def test_evaluate_rule_not_set_should_be_true(self): when = { 'condition': 'not set' } self.assertTrue(evaluate_rule(when, None))
def test_evaluate_rule_set_should_be_false(self): when = { 'condition': 'set' } self.assertFalse(evaluate_rule(when, None))
def test_evaluate_rule_uses_multiple_values_in_list_returns_false(self): when = {"value": "firstAnswer", "condition": "equals"} list_of_answers = ["firstAnswer", "secondAnswer"] self.assertFalse(evaluate_rule(when, list_of_answers))
def test_evaluate_rule_set_on_empty_list_should_be_false(self): when = {"condition": "set"} self.assertFalse(evaluate_rule(when, []))
def test_evaluate_rule_not_equals_with_number(self): when = {"value": 0, "condition": "not equals"} self.assertTrue(evaluate_rule(when, 2)) self.assertFalse(evaluate_rule(when, 0))
def test_evaluate_rule_set_on_list_with_data_should_be_true(self): when = {"condition": "set"} self.assertTrue(evaluate_rule(when, ["123"]))
def test_evaluate_rule_not_set_on_list_with_data_should_be_false(self): when = {"condition": "not set"} self.assertFalse(evaluate_rule(when, ["123"]))
def test_evaluate_rule_not_set_on_empty_list_should_be_true(self): when = {"condition": "not set"} self.assertTrue(evaluate_rule(when, []))
def test_evaluate_rule_not_set_should_be_false(self): when = {"condition": "not set"} self.assertFalse(evaluate_rule(when, "")) self.assertFalse(evaluate_rule(when, "some text"))
def test_evaluate_rule_not_set_should_be_true(self): when = {"condition": "not set"} self.assertTrue(evaluate_rule(when, None))