def test_check_declaration_answers_fails_for_bad_q14():
    declaration_content = mock.Mock()
    question_numbers = mock.PropertyMock(side_effect=[14, -1])
    type(declaration_content.get_question.return_value).number = question_numbers
    # Question 14 is the one with two long possible correct answers
    declaration = OrderedDict([("key1", "No - this is a really long explanation"), ("status", "complete")])
    assert check_declaration_answers(declaration_content, declaration) == 'Fail'
def test_check_declaration_answers_passes_good_declaration():
    declaration_content = mock.Mock()
    question_numbers = mock.PropertyMock(side_effect=[1, 17, 21, -1])
    type(declaration_content.get_question.return_value).number = question_numbers
    # Question 1 should be True; 17 and 21 False
    declaration = OrderedDict([("key1", True), ("key2", False), ("key3", False), ("status", "complete")])
    assert check_declaration_answers(declaration_content, declaration) == 'Pass'
def test_check_declaration_answers_returns_discretionary_for_false_is_true():
    declaration_content = mock.Mock()
    question_numbers = mock.PropertyMock(side_effect=[2, 18, 22, -1])
    type(declaration_content.get_question.return_value).number = question_numbers
    # Question 2 should be True; 18 and 22 False but 22 is a discretionary Fail
    # Question 22 is incorrectly True so should Fail
    declaration = OrderedDict([("key1", True), ("key2", False), ("key3", True), ("status", "complete")])
    assert check_declaration_answers(declaration_content, declaration) == 'Discretionary'
def test_check_declaration_answers_fails_bad_declaration_true_is_false():
    declaration_content = mock.Mock()
    question_numbers = mock.PropertyMock(side_effect=[1, 17, 21, -1])
    type(declaration_content.get_question.return_value).number = question_numbers
    # Question 1 should be True; 17 and 21 False
    # Question 1 is incorrectly False so should Fail
    declaration = OrderedDict([("key1", False), ("key2", False), ("key3", False), ("status", "complete")])
    assert check_declaration_answers(declaration_content, declaration) == 'Fail'
def test_check_declaration_answers_passes_good_q14():
    declaration_content = mock.Mock()
    question_numbers = mock.PropertyMock(side_effect=[14, -1])
    type(declaration_content.get_question.return_value).number = question_numbers
    # Question 14 is the one with two long possible correct answers
    declaration = OrderedDict([("key1", "Not applicable - your organisation does not need employer’s liability "
                                        "insurance because your organisation employs only the owner or close family "
                                        "members."), ("status", "complete")])
    assert check_declaration_answers(declaration_content, declaration) == 'Pass'
def test_check_declaration_fails_incomplete_declaration():
    declaration_content = mock.Mock()
    declaration = {"status": "started"}
    assert check_declaration_answers(declaration_content, declaration) == 'Fail'