Пример #1
0
    def test_course_id_string(self):
        """
        Make sure we can pass a course_id (string) and get back correct results as well
        """

        self.enroll()

        # set course requirements
        set_credit_requirements(self.course.id, [
            {
                "namespace": "grade",
                "name": "grade",
                "display_name": "Grade",
                "criteria": {
                    "min_grade": 0.8
                },
            },
        ])

        # mark the grade as satisfied
        self.service.set_credit_requirement_status(self.user.id,
                                                   str(self.course.id),
                                                   'grade', 'grade')

        credit_state = self.service.get_credit_state(self.user.id,
                                                     str(self.course.id))

        assert credit_state is not None
        assert credit_state['enrollment_mode'] == 'verified'
        assert credit_state['profile_fullname'] == 'Foo Bar'
        assert len(credit_state['credit_requirement_status']) == 1
        assert credit_state['credit_requirement_status'][0]['name'] == 'grade'
        assert credit_state['credit_requirement_status'][0][
            'status'] == 'satisfied'
Пример #2
0
    def test_invalid_user(self):
        """
        Try removing requirement status with a invalid user_id
        """

        # set course requirements
        set_credit_requirements(self.course.id, [
            {
                "namespace": "grade",
                "name": "grade",
                "display_name": "Grade",
                "criteria": {
                    "min_grade": 0.8
                },
            },
        ])

        # mark the grade as satisfied
        retval = self.service.set_credit_requirement_status(  # lint-amnesty, pylint: disable=assignment-from-none
            self.user.id, self.course.id, 'grade', 'grade')
        assert retval is None

        # remove the requirement status with the invalid user id
        retval = self.service.remove_credit_requirement_status(  # lint-amnesty, pylint: disable=assignment-from-none
            0, self.course.id, 'grade', 'grade')
        assert retval is None
Пример #3
0
    def test_set_status_non_verified_enrollment(self, mode):
        """
        Test that we can still try to update a credit status but return quickly if
        user has non-credit eligible enrollment.
        """
        self.enroll(mode=mode)

        # set course requirements
        set_credit_requirements(self.course.id, [
            {
                "namespace": "grade",
                "name": "grade",
                "display_name": "Grade",
                "criteria": {
                    "min_grade": 0.8
                },
            },
        ])

        # this should be a no-op
        self.service.set_credit_requirement_status(self.user.id,
                                                   self.course.id, 'grade',
                                                   'grade')
        # Verify credit requirement status for user in the course should be None.
        credit_state = self.service.get_credit_state(self.user.id,
                                                     self.course.id)
        assert credit_state is not None
        assert credit_state['enrollment_mode'] == mode
        assert len(credit_state['credit_requirement_status']) == 1
        assert credit_state['credit_requirement_status'][0]['status'] is None
        assert credit_state['credit_requirement_status'][0][
            'status_date'] is None
Пример #4
0
    def test_invalid_user(self):
        """
        Try removing requirement status with a invalid user_id
        """

        # set course requirements
        set_credit_requirements(self.course.id, [
            {
                "namespace": "grade",
                "name": "grade",
                "display_name": "Grade",
                "criteria": {
                    "min_grade": 0.8
                },
            },
        ])

        # mark the grade as satisfied
        retval = self.service.set_credit_requirement_status(
            self.user.id, self.course.id, 'grade', 'grade')
        self.assertIsNone(retval)

        # remove the requirement status with the invalid user id
        retval = self.service.remove_credit_requirement_status(
            0, self.course.id, 'grade', 'grade')
        self.assertIsNone(retval)
Пример #5
0
    def test_bad_user(self):
        """
        Try setting requirements status with a bad user_id
        """

        # set course requirements
        set_credit_requirements(
            self.course.id,
            [
                {
                    "namespace": "grade",
                    "name": "grade",
                    "display_name": "Grade",
                    "criteria": {
                        "min_grade": 0.8
                    },
                },
            ]
        )

        # mark the grade as satisfied
        retval = self.service.set_credit_requirement_status(
            0,
            self.course.id,
            'grade',
            'grade'
        )
        self.assertIsNone(retval)
Пример #6
0
    def test_remove_credit_requirement_status(self):
        """
        Happy path when deleting the requirement status.
        """
        self.assertTrue(self.service.is_credit_course(self.course.id))

        self.enroll()

        # set course requirements
        set_credit_requirements(
            self.course.id,
            [
                {
                    "namespace": "grade",
                    "name": "grade",
                    "display_name": "Grade",
                    "criteria": {
                        "min_grade": 0.8
                    },
                },
            ]
        )

        # mark the grade as satisfied
        self.service.set_credit_requirement_status(
            self.user.id,
            self.course.id,
            'grade',
            'grade'
        )

        # now the status should be "satisfied" when looking at the credit_requirement_status list
        credit_state = self.service.get_credit_state(self.user.id, self.course.id)
        self.assertEqual(credit_state['credit_requirement_status'][0]['status'], "satisfied")

        # remove the requirement status.
        self.service.remove_credit_requirement_status(
            self.user.id,
            self.course.id,
            'grade',
            'grade'
        )

        # now the status should be None when looking at the credit_requirement_status list
        credit_state = self.service.get_credit_state(self.user.id, self.course.id)
        self.assertEqual(credit_state['credit_requirement_status'][0]['status'], None)
Пример #7
0
    def test_remove_credit_requirement_status(self):
        """
        Happy path when deleting the requirement status.
        """
        self.assertTrue(self.service.is_credit_course(self.course.id))

        CourseEnrollment.enroll(self.user, self.course.id)

        # set course requirements
        set_credit_requirements(
            self.course.id,
            [
                {
                    "namespace": "grade",
                    "name": "grade",
                    "display_name": "Grade",
                    "criteria": {
                        "min_grade": 0.8
                    },
                },
            ]
        )

        # mark the grade as satisfied
        self.service.set_credit_requirement_status(
            self.user.id,
            self.course.id,
            'grade',
            'grade'
        )

        # now the status should be "satisfied" when looking at the credit_requirement_status list
        credit_state = self.service.get_credit_state(self.user.id, self.course.id)
        self.assertEqual(credit_state['credit_requirement_status'][0]['status'], "satisfied")

        # remove the requirement status.
        self.service.remove_credit_requirement_status(
            self.user.id,
            self.course.id,
            'grade',
            'grade'
        )

        # now the status should be None when looking at the credit_requirement_status list
        credit_state = self.service.get_credit_state(self.user.id, self.course.id)
        self.assertEqual(credit_state['credit_requirement_status'][0]['status'], None)
Пример #8
0
    def test_get_and_set_credit_state(self):
        """
        Happy path through the service
        """

        self.assertTrue(self.service.is_credit_course(self.course.id))

        self.enroll()

        # set course requirements
        set_credit_requirements(
            self.course.id,
            [
                {
                    "namespace": "grade",
                    "name": "grade",
                    "display_name": "Grade",
                    "criteria": {
                        "min_grade": 0.8
                    },
                },
            ]
        )

        # mark the grade as satisfied
        self.service.set_credit_requirement_status(
            self.user.id,
            self.course.id,
            'grade',
            'grade'
        )

        credit_state = self.service.get_credit_state(self.user.id, self.course.id)

        self.assertIsNotNone(credit_state)
        self.assertTrue(credit_state['is_credit_course'])
        self.assertEqual(credit_state['enrollment_mode'], 'honor')
        self.assertEqual(credit_state['profile_fullname'], 'Foo Bar')
        self.assertEqual(len(credit_state['credit_requirement_status']), 1)
        self.assertEqual(credit_state['credit_requirement_status'][0]['name'], 'grade')
        self.assertEqual(credit_state['credit_requirement_status'][0]['status'], 'satisfied')
Пример #9
0
    def test_get_and_set_credit_state(self):
        """
        Happy path through the service
        """

        self.assertTrue(self.service.is_credit_course(self.course.id))

        CourseEnrollment.enroll(self.user, self.course.id)

        # set course requirements
        set_credit_requirements(
            self.course.id,
            [
                {
                    "namespace": "grade",
                    "name": "grade",
                    "display_name": "Grade",
                    "criteria": {
                        "min_grade": 0.8
                    },
                },
            ]
        )

        # mark the grade as satisfied
        self.service.set_credit_requirement_status(
            self.user.id,
            self.course.id,
            'grade',
            'grade'
        )

        credit_state = self.service.get_credit_state(self.user.id, self.course.id)

        self.assertIsNotNone(credit_state)
        self.assertTrue(credit_state['is_credit_course'])
        self.assertEqual(credit_state['enrollment_mode'], 'honor')
        self.assertEqual(credit_state['profile_fullname'], 'Foo Bar')
        self.assertEqual(len(credit_state['credit_requirement_status']), 1)
        self.assertEqual(credit_state['credit_requirement_status'][0]['name'], 'grade')
        self.assertEqual(credit_state['credit_requirement_status'][0]['status'], 'satisfied')
Пример #10
0
    def test_bad_user(self):
        """
        Try setting requirements status with a bad user_id
        """

        # set course requirements
        set_credit_requirements(self.course.id, [
            {
                "namespace": "grade",
                "name": "grade",
                "display_name": "Grade",
                "criteria": {
                    "min_grade": 0.8
                },
            },
        ])

        # mark the grade as satisfied
        retval = self.service.set_credit_requirement_status(  # lint-amnesty, pylint: disable=assignment-from-none
            0, self.course.id, 'grade', 'grade')
        self.assertIsNone(retval)
Пример #11
0
    def test_course_id_string(self):
        """
        Make sure we can pass a course_id (string) and get back correct results as well
        """

        CourseEnrollment.enroll(self.user, self.course.id)

        # set course requirements
        set_credit_requirements(
            self.course.id,
            [
                {
                    "namespace": "grade",
                    "name": "grade",
                    "display_name": "Grade",
                    "criteria": {
                        "min_grade": 0.8
                    },
                },
            ]
        )

        # mark the grade as satisfied
        self.service.set_credit_requirement_status(
            self.user.id,
            unicode(self.course.id),
            'grade',
            'grade'
        )

        credit_state = self.service.get_credit_state(self.user.id, unicode(self.course.id))

        self.assertIsNotNone(credit_state)
        self.assertEqual(credit_state['enrollment_mode'], 'honor')
        self.assertEqual(credit_state['profile_fullname'], 'Foo Bar')
        self.assertEqual(len(credit_state['credit_requirement_status']), 1)
        self.assertEqual(credit_state['credit_requirement_status'][0]['name'], 'grade')
        self.assertEqual(credit_state['credit_requirement_status'][0]['status'], 'satisfied')
Пример #12
0
    def test_course_id_string(self):
        """
        Make sure we can pass a course_id (string) and get back correct results as well
        """

        CourseEnrollment.enroll(self.user, self.course.id)

        # set course requirements
        set_credit_requirements(
            self.course.id,
            [
                {
                    "namespace": "grade",
                    "name": "grade",
                    "display_name": "Grade",
                    "criteria": {
                        "min_grade": 0.8
                    },
                },
            ]
        )

        # mark the grade as satisfied
        self.service.set_credit_requirement_status(
            self.user.id,
            unicode(self.course.id),
            'grade',
            'grade'
        )

        credit_state = self.service.get_credit_state(self.user.id, unicode(self.course.id))

        self.assertIsNotNone(credit_state)
        self.assertEqual(credit_state['enrollment_mode'], 'honor')
        self.assertEqual(credit_state['profile_fullname'], 'Foo Bar')
        self.assertEqual(len(credit_state['credit_requirement_status']), 1)
        self.assertEqual(credit_state['credit_requirement_status'][0]['name'], 'grade')
        self.assertEqual(credit_state['credit_requirement_status'][0]['status'], 'satisfied')
Пример #13
0
    def test_get_and_set_credit_state(self):
        """
        Happy path through the service
        """

        assert self.service.is_credit_course(self.course.id)

        self.enroll()

        # set course requirements
        set_credit_requirements(self.course.id, [
            {
                "namespace": "grade",
                "name": "grade",
                "display_name": "Grade",
                "criteria": {
                    "min_grade": 0.8
                },
            },
        ])

        # mark the grade as satisfied
        self.service.set_credit_requirement_status(self.user.id,
                                                   self.course.id, 'grade',
                                                   'grade')

        credit_state = self.service.get_credit_state(self.user.id,
                                                     self.course.id)

        assert credit_state is not None
        assert credit_state['is_credit_course']
        assert credit_state['enrollment_mode'] == 'verified'
        assert credit_state['profile_fullname'] == 'Foo Bar'
        assert len(credit_state['credit_requirement_status']) == 1
        assert credit_state['credit_requirement_status'][0]['name'] == 'grade'
        assert credit_state['credit_requirement_status'][0][
            'status'] == 'satisfied'
Пример #14
0
    def test_get_and_set_credit_state(self):
        """
        Happy path through the service
        """

        CourseEnrollment.enroll(self.user, self.course.id)

        # set course requirements
        set_credit_requirements(
            self.course.id,
            [{"namespace": "grade", "name": "grade", "display_name": "Grade", "criteria": {"min_grade": 0.8}}],
        )

        # mark the grade as satisfied
        self.service.set_credit_requirement_status(self.user.id, self.course.id, "grade", "grade")

        credit_state = self.service.get_credit_state(self.user.id, self.course.id)

        self.assertIsNotNone(credit_state)
        self.assertEqual(credit_state["enrollment_mode"], "honor")
        self.assertEqual(credit_state["profile_fullname"], "Foo Bar")
        self.assertEqual(len(credit_state["credit_requirement_status"]), 1)
        self.assertEqual(credit_state["credit_requirement_status"][0]["name"], "grade")
        self.assertEqual(credit_state["credit_requirement_status"][0]["status"], "satisfied")
Пример #15
0
    def test_course_id_string(self):
        """
        Make sure we can pass a course_id (string) and get back correct results as well
        """

        CourseEnrollment.enroll(self.user, self.course.id)

        # set course requirements
        set_credit_requirements(
            self.course.id,
            [{"namespace": "grade", "name": "grade", "display_name": "Grade", "criteria": {"min_grade": 0.8}}],
        )

        # mark the grade as satisfied
        self.service.set_credit_requirement_status(self.user.id, unicode(self.course.id), "grade", "grade")

        credit_state = self.service.get_credit_state(self.user.id, unicode(self.course.id))

        self.assertIsNotNone(credit_state)
        self.assertEqual(credit_state["enrollment_mode"], "honor")
        self.assertEqual(credit_state["profile_fullname"], "Foo Bar")
        self.assertEqual(len(credit_state["credit_requirement_status"]), 1)
        self.assertEqual(credit_state["credit_requirement_status"][0]["name"], "grade")
        self.assertEqual(credit_state["credit_requirement_status"][0]["status"], "satisfied")
Пример #16
0
    def test_set_status_non_verified_enrollment(self, mode):
        """
        Test that we can still try to update a credit status but return quickly if
        user has non-credit eligible enrollment.
        """
        self.enroll(mode=mode)

        # set course requirements
        set_credit_requirements(
            self.course.id,
            [
                {
                    "namespace": "grade",
                    "name": "grade",
                    "display_name": "Grade",
                    "criteria": {
                        "min_grade": 0.8
                    },
                },
            ]
        )

        # this should be a no-op
        self.service.set_credit_requirement_status(
            self.user.id,
            self.course.id,
            'grade',
            'grade'
        )
        # Verify credit requirement status for user in the course should be None.
        credit_state = self.service.get_credit_state(self.user.id, self.course.id)
        self.assertIsNotNone(credit_state)
        self.assertEqual(credit_state['enrollment_mode'], mode)
        self.assertEqual(len(credit_state['credit_requirement_status']), 1)
        self.assertIsNone(credit_state['credit_requirement_status'][0]['status'])
        self.assertIsNone(credit_state['credit_requirement_status'][0]['status_date'])