def test_cert_already_generated(self): with mock.patch( 'lms.djangoapps.certificates.signals.generate_certificate.apply_async', return_value=None) as mock_generate_certificate_apply_async: grade_factory = CourseGradeFactory() # Create the certificate GeneratedCertificate.eligible_certificates.create( user=self.user, course_id=self.course.id, status=CertificateStatuses.downloadable) # Certs are not re-fired after passing with mock_passing_grade(): grade_factory.update(self.user, self.course) mock_generate_certificate_apply_async.assert_not_called()
def test_cert_generation_on_passing_self_paced(self): with mock.patch( 'lms.djangoapps.certificates.signals.generate_certificate.apply_async', return_value=None) as mock_generate_certificate_apply_async: with waffle.waffle().override(waffle.SELF_PACED_ONLY, active=True): grade_factory = CourseGradeFactory() # Not passing grade_factory.update(self.user, self.course) mock_generate_certificate_apply_async.assert_not_called() # Certs fired after passing with mock_passing_grade(): grade_factory.update(self.user, self.course) mock_generate_certificate_apply_async.assert_called_with( student=self.user, course_key=self.course.id)
def test_cert_generation_on_photo_verification_self_paced(self): with mock.patch( 'lms.djangoapps.certificates.signals.generate_certificate.apply_async', return_value=None) as mock_generate_certificate_apply_async: with mock_passing_grade(): grade_factory = CourseGradeFactory() grade_factory.update(self.user_one, self.course_one) with waffle.waffle().override(waffle.SELF_PACED_ONLY, active=True): mock_generate_certificate_apply_async.assert_not_called() attempt = SoftwareSecurePhotoVerification.objects.create( user=self.user_one, status='submitted') attempt.approve() mock_generate_certificate_apply_async.assert_called_with( student=self.user_one, course_key=self.course_one.id)
def test_cert_generation_on_passing_instructor_paced(self): with mock.patch( 'lms.djangoapps.certificates.signals.generate_certificate.apply_async', return_value=None) as mock_generate_certificate_apply_async: with waffle.waffle().override(waffle.INSTRUCTOR_PACED_ONLY, active=True): grade_factory = CourseGradeFactory() # Not passing grade_factory.update(self.user, self.ip_course) mock_generate_certificate_apply_async.assert_not_called() # Certs fired after passing with mock_passing_grade(): grade_factory.update(self.user, self.ip_course) mock_generate_certificate_apply_async.assert_called_with( kwargs={ 'student': unicode(self.user.id), 'course_key': unicode(self.ip_course.id), })
def test_cert_generation_on_passing_instructor_paced(self): with mock.patch( 'lms.djangoapps.certificates.signals.generate_certificate.apply_async', return_value=None) as mock_generate_certificate_apply_async: with waffle.waffle().override(waffle.AUTO_CERTIFICATE_GENERATION, active=True): grade_factory = CourseGradeFactory() # Not passing grade_factory.update(self.user, self.ip_course) mock_generate_certificate_apply_async.assert_not_called() # Certs fired after passing with mock_passing_grade(): grade_factory.update(self.user, self.ip_course) mock_generate_certificate_apply_async.assert_called_with( countdown=CERTIFICATE_DELAY_SECONDS, kwargs={ 'student': unicode(self.user.id), 'course_key': unicode(self.ip_course.id), })
def setUp(self): super(LearnerTrackChangeCertsTest, self).setUp() self.course_one = CourseFactory.create(self_paced=True) self.user_one = UserFactory.create() self.enrollment_one = CourseEnrollmentFactory( user=self.user_one, course_id=self.course_one.id, is_active=True, mode='verified', ) self.user_two = UserFactory.create() self.course_two = CourseFactory.create(self_paced=False) self.enrollment_two = CourseEnrollmentFactory( user=self.user_two, course_id=self.course_two.id, is_active=True, mode='verified') with mock_passing_grade(): grade_factory = CourseGradeFactory() grade_factory.update(self.user_one, self.course_one) grade_factory.update(self.user_two, self.course_two)
def test_cert_generation_on_passing_instructor_paced(self): with mock.patch( 'lms.djangoapps.certificates.signals.generate_certificate.apply_async', return_value=None ) as mock_generate_certificate_apply_async: with waffle.waffle().override(waffle.INSTRUCTOR_PACED_ONLY, active=True): grade_factory = CourseGradeFactory() with mock_get_score(0, 2): grade_factory.update(self.user, self.ip_course) mock_generate_certificate_apply_async.assert_not_called( student=self.user, course_key=self.ip_course.id ) with mock_get_score(1, 2): grade_factory.update(self.user, self.ip_course) mock_generate_certificate_apply_async.assert_called( student=self.user, course_key=self.ip_course.id ) # Certs are not re-fired after passing with mock_get_score(2, 2): grade_factory.update(self.user, self.ip_course) mock_generate_certificate_apply_async.assert_not_called( student=self.user, course_key=self.ip_course.id )
def test_cert_generation_on_passing_instructor_paced(self): with mock.patch( 'lms.djangoapps.certificates.signals.generate_certificate.apply_async', return_value=None) as mock_generate_certificate_apply_async: with waffle.waffle().override(waffle.INSTRUCTOR_PACED_ONLY, active=True): grade_factory = CourseGradeFactory() with mock_get_score(0, 2): grade_factory.update(self.user, self.ip_course) mock_generate_certificate_apply_async.assert_not_called( student=self.user, course_key=self.ip_course.id) with mock_get_score(1, 2): grade_factory.update(self.user, self.ip_course) mock_generate_certificate_apply_async.assert_called( student=self.user, course_key=self.ip_course.id) # Certs are not re-fired after passing with mock_get_score(2, 2): grade_factory.update(self.user, self.ip_course) mock_generate_certificate_apply_async.assert_not_called( student=self.user, course_key=self.ip_course.id)