Пример #1
0
    def test_has_passing_certificate_fa(self):
        """
        Assert that has_passing_certificate is true if user has a cert even if has_paid is false for FA programs
        """
        mmtrack = MMTrack(
            user=self.user,
            program=self.program_financial_aid,
            edx_user_data=self.cached_edx_user_data
        )
        key = self.crun_fa.edx_course_key
        assert mmtrack.has_passing_certificate(key) is False
        assert mmtrack.has_paid(key) is False

        cert_json = {
            "username": "******",
            "course_id": self.crun_fa.edx_course_key,
            "certificate_type": "verified",
            "status": "downloadable",
            "is_passing": True,
            "download_url": "http://www.example.com/demo.pdf",
            "grade": "0.98"
        }
        cached_edx_user_data = MagicMock(
            spec=CachedEdxUserData,
            enrollments=CachedEnrollment.deserialize_edx_data(self.enrollments_json),
            certificates=CachedCertificate.deserialize_edx_data(self.certificates_json + [cert_json]),
            current_grades=CachedCurrentGrade.deserialize_edx_data(self.current_grades_json),
        )
        mmtrack = MMTrack(
            user=self.user,
            program=self.program_financial_aid,
            edx_user_data=cached_edx_user_data
        )
        assert mmtrack.has_passing_certificate(key) is True
        assert mmtrack.has_paid(key) is False
Пример #2
0
    def test_has_passing_certificate_fa(self):
        """
        Assert that has_passing_certificate is true if user has a cert even if has_paid is false for FA programs
        """
        mmtrack = MMTrack(
            user=self.user,
            program=self.program_financial_aid,
            edx_user_data=self.cached_edx_user_data
        )
        key = self.crun_fa.edx_course_key
        assert mmtrack.has_passing_certificate(key) is False
        assert mmtrack.has_paid(key) is False

        cert_json = {
            "username": "******",
            "course_id": self.crun_fa.edx_course_key,
            "certificate_type": "verified",
            "status": "downloadable",
            "is_passing": True,
            "download_url": "http://www.example.com/demo.pdf",
            "grade": "0.98"
        }
        cached_edx_user_data = MagicMock(
            spec=CachedEdxUserData,
            enrollments=CachedEnrollment.deserialize_edx_data(self.enrollments_json),
            certificates=CachedCertificate.deserialize_edx_data(self.certificates_json + [cert_json]),
            current_grades=CachedCurrentGrade.deserialize_edx_data(self.current_grades_json),
        )
        mmtrack = MMTrack(
            user=self.user,
            program=self.program_financial_aid,
            edx_user_data=cached_edx_user_data
        )
        assert mmtrack.has_passing_certificate(key) is True
        assert mmtrack.has_paid(key) is False
Пример #3
0
    def test_has_paid_fa_with_course_run_paid_on_mm(self):
        """
        Test for has_paid is True for FA programs when the course has been paid on MicroMasters
        """
        mmtrack = MMTrack(user=self.user,
                          program=self.program_financial_aid,
                          edx_user_data=self.cached_edx_user_data)
        key = self.crun_fa.edx_course_key
        assert mmtrack.has_paid(key) is False

        self.pay_for_fa_course(key)
        mmtrack = MMTrack(user=self.user,
                          program=self.program_financial_aid,
                          edx_user_data=self.cached_edx_user_data)
        assert mmtrack.has_paid(key) is True
Пример #4
0
    def test_has_paid_fa_no_final_grade(self):
        """
        Assert that has_paid works for FA programs in case there is no final grade
        """
        mmtrack = MMTrack(user=self.user,
                          program=self.program_financial_aid,
                          edx_user_data=self.cached_edx_user_data)
        key = self.crun_fa.edx_course_key
        assert mmtrack.has_paid(key) is False

        self.pay_for_fa_course(key)
        mmtrack = MMTrack(user=self.user,
                          program=self.program_financial_aid,
                          edx_user_data=self.cached_edx_user_data)
        assert mmtrack.has_paid(key) is True
Пример #5
0
 def has_object_permission(self, request, view, obj):
     """
     Returns True if the user has permission to send a message to a course team.
     Args:
         request (Request): DRF request object
         view (View): DRF view object
         obj (Course): Course object
     Returns:
         boolean
     """
     user = request.user
     program = obj.program
     # Make sure the user has an enrollment in the course's program
     if not ProgramEnrollment.objects.filter(user=user,
                                             program=program).exists():
         return False
     # Make sure the user has paid for any course run for the given course
     edx_user_data = CachedEdxUserData(user)
     mmtrack = MMTrack(user, program, edx_user_data)
     course_run_keys = obj.courserun_set.values_list('edx_course_key',
                                                     flat=True)
     return any([
         mmtrack.has_paid(course_run_key)
         for course_run_key in course_run_keys
     ])
Пример #6
0
 def test_has_paid_not_fa_with_final_grade(self):
     """
     Assert that has_paid works for non-FA programs in case there is a final grade
     """
     mmtrack = MMTrack(
         user=self.user,
         program=self.program,
         edx_user_data=self.cached_edx_user_data
     )
     key = "course-v1:odl+FOO102+CR-FALL16"
     assert mmtrack.has_paid(key) is False
     course_run = self.cruns[-1]
     final_grade = FinalGradeFactory.create(user=self.user, course_run=course_run, course_run_paid_on_edx=True)
     assert mmtrack.has_paid(key) is True
     final_grade.course_run_paid_on_edx = False
     final_grade.save()
     assert mmtrack.has_paid(key) is False
Пример #7
0
 def test_not_paid_fa_with_course_run_paid_on_edx(self):
     """
     Test for has_paid is False for FA programs even in case
     there is a final grade with course_run_paid_on_edx=True
     """
     mmtrack = MMTrack(
         user=self.user,
         program=self.program_financial_aid,
         edx_user_data=self.cached_edx_user_data
     )
     key = self.crun_fa.edx_course_key
     assert mmtrack.has_paid(key) is False
     final_grade = FinalGradeFactory.create(user=self.user, course_run=self.crun_fa, course_run_paid_on_edx=True)
     assert mmtrack.has_paid(key) is False
     final_grade.course_run_paid_on_edx = False
     final_grade.save()
     assert mmtrack.has_paid(key) is False
Пример #8
0
 def test_has_paid_not_fa_with_final_grade(self):
     """
     Assert that has_paid works for non-FA programs in case there is a final grade
     """
     mmtrack = MMTrack(
         user=self.user,
         program=self.program,
         edx_user_data=self.cached_edx_user_data
     )
     key = "course-v1:odl+FOO102+CR-FALL16"
     assert mmtrack.has_paid(key) is False
     course_run = self.cruns[-1]
     final_grade = FinalGradeFactory.create(user=self.user, course_run=course_run, course_run_paid_on_edx=True)
     assert mmtrack.has_paid(key) is True
     final_grade.course_run_paid_on_edx = False
     final_grade.save()
     assert mmtrack.has_paid(key) is False
Пример #9
0
 def test_not_paid_fa_with_course_run_paid_on_edx(self):
     """
     Test for has_paid is False for FA programs even in case
     there is a final grade with course_run_paid_on_edx=True
     """
     mmtrack = MMTrack(
         user=self.user,
         program=self.program_financial_aid,
         edx_user_data=self.cached_edx_user_data
     )
     key = self.crun_fa.edx_course_key
     assert mmtrack.has_paid(key) is False
     final_grade = FinalGradeFactory.create(user=self.user, course_run=self.crun_fa, course_run_paid_on_edx=True)
     assert mmtrack.has_paid(key) is False
     final_grade.course_run_paid_on_edx = False
     final_grade.save()
     assert mmtrack.has_paid(key) is False
Пример #10
0
 def test_has_paid_not_fa_no_final_grade(self):
     """
     Assert that has_paid works for non-FA programs in case there is no final grade
     """
     mmtrack = MMTrack(user=self.user,
                       program=self.program,
                       edx_user_data=self.cached_edx_user_data)
     key = "course-v1:edX+DemoX+Demo_Course"
     assert mmtrack.has_paid(key) is True
Пример #11
0
    def test_has_paid_fa_with_course_run_paid_on_mm(self):
        """
        Test for has_paid is True for FA programs when the course has been paid on MicroMasters
        """
        mmtrack = MMTrack(
            user=self.user,
            program=self.program_financial_aid,
            edx_user_data=self.cached_edx_user_data
        )
        key = self.crun_fa.edx_course_key
        assert mmtrack.has_paid(key) is False

        self.pay_for_fa_course(key)
        mmtrack = MMTrack(
            user=self.user,
            program=self.program_financial_aid,
            edx_user_data=self.cached_edx_user_data
        )
        assert mmtrack.has_paid(key) is True
Пример #12
0
    def test_has_paid_fa_no_final_grade(self):
        """
        Assert that has_paid works for FA programs in case there is no final grade
        """
        mmtrack = MMTrack(
            user=self.user,
            program=self.program_financial_aid,
            edx_user_data=self.cached_edx_user_data
        )
        key = self.crun_fa.edx_course_key
        assert mmtrack.has_paid(key) is False

        self.pay_for_fa_course(key)
        mmtrack = MMTrack(
            user=self.user,
            program=self.program_financial_aid,
            edx_user_data=self.cached_edx_user_data
        )
        assert mmtrack.has_paid(key) is True
Пример #13
0
 def test_has_paid_for_entire_course(self):
     """
     Tests that the .has_paid method returns true if
     any of the course runs in the course have been paid for
     """
     self.pay_for_fa_course(self.crun_fa.edx_course_key)
     mmtrack = MMTrack(user=self.user,
                       program=self.program_financial_aid,
                       edx_user_data=self.cached_edx_user_data)
     assert mmtrack.has_paid(self.crun_fa2.edx_course_key) is True
Пример #14
0
 def test_has_paid_not_fa_no_final_grade(self):
     """
     Assert that has_paid works for non-FA programs in case there is no final grade
     """
     mmtrack = MMTrack(
         user=self.user,
         program=self.program,
         edx_user_data=self.cached_edx_user_data
     )
     key = "course-v1:edX+DemoX+Demo_Course"
     assert mmtrack.has_paid(key) is True
Пример #15
0
 def test_has_paid_for_entire_course(self):
     """
     Tests that the .has_paid method returns true if
     any of the course runs in the course have been paid for
     """
     self.pay_for_fa_course(self.crun_fa.edx_course_key)
     mmtrack = MMTrack(
         user=self.user,
         program=self.program_financial_aid,
         edx_user_data=self.cached_edx_user_data
     )
     assert mmtrack.has_paid(self.crun_fa2.edx_course_key) is True
Пример #16
0
 def has_object_permission(self, request, view, obj):
     """
     Returns True if the user has permission to send a message to a course team.
     Args:
         request (Request): DRF request object
         view (View): DRF view object
         obj (Course): Course object
     Returns:
         boolean
     """
     user = request.user
     program = obj.program
     # Make sure the user has an enrollment in the course's program
     if not ProgramEnrollment.objects.filter(user=user, program=program).exists():
         return False
     # Make sure the user has paid for any course run for the given course
     edx_user_data = CachedEdxUserData(user)
     mmtrack = MMTrack(
         user,
         program,
         edx_user_data
     )
     course_run_keys = obj.courserun_set.values_list('edx_course_key', flat=True)
     return any([mmtrack.has_paid(course_run_key) for course_run_key in course_run_keys])