Exemple #1
0
    def test_regrade_with_access_rules_tag(self):
        with mock.patch("course.flow.regrade_session") as mock_regrade:
            regrade_flow_sessions(self.gopp.course_id,
                                  self.gopp.flow_id,
                                  access_rules_tag="None exist tag",
                                  inprog_value=None
                                  )

            mock_regrade.return_value = None

            # no regrade happened
            self.assertEqual(mock_regrade.call_count, 0)

            first_session = models.FlowSession.objects.first()
            first_session.access_rules_tag = "some tag"
            first_session.save()

            regrade_flow_sessions(self.gopp.course_id,
                                  self.gopp.flow_id,
                                  access_rules_tag="some tag",
                                  inprog_value=None
                                  )

            self.assertEqual(mock_regrade.call_count, 1)
            self.assertIn(first_session, mock_regrade.call_args[0])

            self.assertEqual(self.mock_update_state.call_count, 1)
Exemple #2
0
    def test_regrade_with_access_rules_tag(self):
        with mock.patch("course.flow.regrade_session") as mock_regrade:
            regrade_flow_sessions(self.gopp.course_id,
                                  self.gopp.flow_id,
                                  access_rules_tag="None exist tag",
                                  inprog_value=None)

            mock_regrade.return_value = None

            # no regrade happened
            self.assertEqual(mock_regrade.call_count, 0)

            first_session = models.FlowSession.objects.first()
            first_session.access_rules_tag = "some tag"
            first_session.save()

            regrade_flow_sessions(self.gopp.course_id,
                                  self.gopp.flow_id,
                                  access_rules_tag="some tag",
                                  inprog_value=None)

            self.assertEqual(mock_regrade.call_count, 1)
            self.assertIn(first_session, mock_regrade.call_args[0])

            self.assertEqual(self.mock_update_state.call_count, 1)
Exemple #3
0
    def test_regrade_not_in_progress_only(self):
        regrade_flow_sessions(self.gopp.course_id,
                              self.gopp.flow_id,
                              access_rules_tag=None,
                              inprog_value=False)

        # each previously ended session got page regrades
        for session in self.ended_sessions:
            self.assertTrue(
                models.FlowPageVisitGrade.objects.filter(
                    visit__flow_session=session).count() > 0)

        self.assertEqual(self.mock_update_state.call_count,
                         self.ended_sessions_count)
        self.mock_update_state.reset_mock()

        first_round_visit_grade_count = models.FlowPageVisitGrade.objects.count(
        )
        regrade_flow_sessions(self.gopp.course_id,
                              self.gopp.flow_id,
                              access_rules_tag=None,
                              inprog_value=False)

        # number of visit grades increased
        self.assertTrue(models.FlowPageVisitGrade.objects.count() >
                        first_round_visit_grade_count)

        self.assertEqual(self.mock_update_state.call_count,
                         self.ended_sessions_count)
Exemple #4
0
    def test_regrade_not_in_progress_only(self):
        regrade_flow_sessions(self.gopp.course_id,
                              self.gopp.flow_id,
                              access_rules_tag=None,
                              inprog_value=False
                              )

        # each previously ended session got page regrades
        for session in self.ended_sessions:
            self.assertTrue(
                models.FlowPageVisitGrade.objects.filter(
                    visit__flow_session=session).count() > 0
            )

        self.assertEqual(self.mock_update_state.call_count,
                         self.ended_sessions_count)
        self.mock_update_state.reset_mock()

        first_round_visit_grade_count = models.FlowPageVisitGrade.objects.count()
        regrade_flow_sessions(self.gopp.course_id,
                              self.gopp.flow_id,
                              access_rules_tag=None,
                              inprog_value=False
                              )

        # number of visit grades increased
        self.assertTrue(models.FlowPageVisitGrade.objects.count()
                        > first_round_visit_grade_count)

        self.assertEqual(self.mock_update_state.call_count,
                         self.ended_sessions_count)
Exemple #5
0
    def test_regrade_flow_sessions(self):
        with mock.patch("course.tasks.Course.objects.get")\
                as mock_course_object_get:

            # This is to avoid errors
            mock_course_object_get.return_value = self.course

            regrade_flow_sessions(self.course.pk,
                                  self.flow_id,
                                  access_rules_tag=None,
                                  inprog_value=None)
            mock_course_object_get.assert_called_once_with(id=self.course.pk)
Exemple #6
0
    def test_regrade_flow_sessions(self):
        with mock.patch("course.tasks.Course.objects.get")\
                as mock_course_object_get:

            # This is to avoid errors
            mock_course_object_get.return_value = self.course

            regrade_flow_sessions(
                self.course.pk, self.flow_id,
                access_rules_tag=None, inprog_value=None
            )
            mock_course_object_get.assert_called_once_with(id=self.course.pk)
Exemple #7
0
    def test_regrade_in_progress_only(self):
        regrade_flow_sessions(self.gopp.course_id,
                              self.gopp.flow_id,
                              access_rules_tag=None,
                              inprog_value=True)

        # ended session should not have page regrades
        self.assertTrue(
            models.FlowPageVisitGrade.objects.filter(
                visit__flow_session__in=self.ended_sessions).count() == 0)

        # in-progress session got no page regrades, because we didn't
        # submit a page
        self.assertTrue(
            models.FlowPageVisitGrade.objects.filter(
                visit__flow_session__in=self.in_progress_sessions).count() ==
            0)
Exemple #8
0
    def test_regrade_all(self):
        # inprog_value=None means "any" page will be regraded disregard whether
        # the session is in-progress
        regrade_flow_sessions(self.gopp.course_id,
                              self.gopp.flow_id,
                              access_rules_tag=None,
                              inprog_value=None)

        # each ended session got page regrades
        self.assertTrue(
            models.FlowPageVisitGrade.objects.filter(
                visit__flow_session__in=self.ended_sessions).count() > 0)

        # each in-progress session also got no page regrades
        self.assertTrue(
            models.FlowPageVisitGrade.objects.filter(
                visit__flow_session__in=self.in_progress_sessions).count() ==
            0)
Exemple #9
0
    def test_regrade_in_progress_only(self):
        regrade_flow_sessions(self.gopp.course_id,
                              self.gopp.flow_id,
                              access_rules_tag=None,
                              inprog_value=True
                              )

        # ended session should not have page regrades
        self.assertTrue(
            models.FlowPageVisitGrade.objects.filter(
                visit__flow_session__in=self.ended_sessions).count() == 0
        )

        # in-progress session got no page regrades, because we didn't
        # submit a page
        self.assertTrue(
            models.FlowPageVisitGrade.objects.filter(
                visit__flow_session__in=self.in_progress_sessions).count() == 0
        )
Exemple #10
0
    def test_regrade_all(self):
        # inprog_value=None means "any" page will be regraded disregard whether
        # the session is in-progress
        regrade_flow_sessions(self.gopp.course_id,
                              self.gopp.flow_id,
                              access_rules_tag=None,
                              inprog_value=None
                              )

        # each ended session got page regrades
        self.assertTrue(
            models.FlowPageVisitGrade.objects.filter(
                visit__flow_session__in=self.ended_sessions).count() > 0
        )

        # each in-progress session also got no page regrades
        self.assertTrue(
            models.FlowPageVisitGrade.objects.filter(
                visit__flow_session__in=self.in_progress_sessions).count() == 0
        )