コード例 #1
0
ファイル: test_models.py プロジェクト: xhijack/relate
    def test_clean_access_success(self):
        rule = {"if_before": now()}
        fre = models.FlowRuleException(flow_id=factories.DEFAULT_FLOW_ID,
                                       participation=self.participation,
                                       kind=constants.flow_rule_kind.access,
                                       rule=rule,
                                       expiration=now())

        fre.clean()
        self.assertEqual(self.mock_get_course_repo.call_count, 1)
        self.assertEqual(self.mock_get_flow_desc.call_count, 1)
        self.assertEqual(self.mock_validate_session_access_rule.call_count, 1)
コード例 #2
0
ファイル: test_models.py プロジェクト: xhijack/relate
    def test_clean_grading_success(self):
        rule = {"if_completed_before": now(), "credit_percent": 100}
        fre = models.FlowRuleException(flow_id=factories.DEFAULT_FLOW_ID,
                                       participation=self.participation,
                                       kind=constants.flow_rule_kind.grading,
                                       rule=rule,
                                       expiration=None)

        fre.clean()
        self.assertEqual(self.mock_get_course_repo.call_count, 1)
        self.assertEqual(self.mock_get_flow_desc.call_count, 1)
        self.assertEqual(self.mock_validate_session_grading_rule.call_count, 1)
コード例 #3
0
ファイル: test_models.py プロジェクト: xhijack/relate
    def test_clean_success_null_exception_rule(self):
        rule = dict()
        fre = models.FlowRuleException(flow_id=factories.DEFAULT_FLOW_ID,
                                       participation=self.participation,
                                       kind=constants.flow_rule_kind.start,
                                       rule=rule,
                                       expiration=None)

        fre.clean()
        self.assertEqual(self.mock_get_course_repo.call_count, 1)
        self.assertEqual(self.mock_get_flow_desc.call_count, 1)
        self.assertEqual(self.mock_validate_session_start_rule.call_count, 1)
コード例 #4
0
ファイル: test_models.py プロジェクト: xhijack/relate
    def test_clean_success_no_existing_rules(self):
        self.mock_get_flow_desc.return_value = dict_to_struct(
            {"id": "no_existing_flow"})
        rule = dict()
        fre = models.FlowRuleException(flow_id=factories.DEFAULT_FLOW_ID,
                                       participation=self.participation,
                                       kind=constants.flow_rule_kind.start,
                                       rule=rule,
                                       expiration=None)

        fre.clean()
        self.assertEqual(self.mock_get_course_repo.call_count, 1)
        self.assertEqual(self.mock_get_flow_desc.call_count, 1)
        self.assertEqual(self.mock_validate_session_start_rule.call_count, 1)
コード例 #5
0
ファイル: test_models.py プロジェクト: xhijack/relate
    def test_clean_failure_with_invalid_existing_session_rules(self):
        rule = dict()
        fre = models.FlowRuleException(flow_id=factories.DEFAULT_FLOW_ID,
                                       participation=self.participation,
                                       kind=constants.flow_rule_kind.start,
                                       rule=rule,
                                       expiration=None)
        from course import validation
        my_custom_error = "my custom error"
        self.mock_validate_session_start_rule.side_effect = (
            validation.ValidationError(my_custom_error))

        with self.assertRaises(ValidationError) as cm:
            fre.clean()

        expected_error_msg = "invalid existing_session_rules: %s" % my_custom_error
        self.assertIn(expected_error_msg, str(cm.exception))
        self.assertEqual(self.mock_get_course_repo.call_count, 1)
        self.assertEqual(self.mock_get_flow_desc.call_count, 1)
        self.assertEqual(self.mock_validate_session_start_rule.call_count, 1)
コード例 #6
0
ファイル: test_models.py プロジェクト: xhijack/relate
    def test_clean_unknown_exception_rule(self):
        unknown_flow_rule_kind = "unknown_kind"
        rule = {"if_before": now()}
        fre = models.FlowRuleException(flow_id=factories.DEFAULT_FLOW_ID,
                                       participation=self.participation,
                                       kind=unknown_flow_rule_kind,
                                       rule=rule,
                                       expiration=now())

        with self.assertRaises(ValidationError) as cm:
            fre.clean()
        expected_error_msg = "invalid exception rule kind"
        self.assertIn(expected_error_msg, str(cm.exception))

        for call in (self.mock_get_course_repo, self.mock_get_flow_desc,
                     self.mock_validate_session_access_rule,
                     self.mock_validate_session_access_rule,
                     self.mock_validate_session_access_rule,
                     self.mock_validate_session_access_rule):
            self.assertEqual(
                call.call_count, 0,
                "The expensive operation should be skipped in this case")
コード例 #7
0
ファイル: test_models.py プロジェクト: xhijack/relate
    def test_clean_grading_no_expire_failure(self):
        rule = {"if_completed_before": now(), "credit_percent": 100}
        expected_error_msg = "grading rules may not expire"
        with self.assertRaises(ValidationError) as cm:
            fre = models.FlowRuleException(
                flow_id=factories.DEFAULT_FLOW_ID,
                participation=self.participation,
                kind=constants.flow_rule_kind.grading,
                rule=rule,
                expiration=now())

            fre.clean()
        self.assertIn(expected_error_msg, str(cm.exception))

        self.assertEqual(
            self.mock_get_course_repo.call_count, 0,
            "The expensive operation should be skipped in this case")
        self.assertEqual(
            self.mock_get_flow_desc.call_count, 0,
            "The expensive operation should be skipped in this case")
        self.assertEqual(
            self.mock_validate_session_grading_rule.call_count, 0,
            "The expensive operation should be skipped in this case")