class EligibleCertificateManagerTest(SharedModuleStoreTestCase, OpenEdxEventsTestMixin): """ Test the GeneratedCertificate model's object manager for filtering out ineligible certs. """ ENABLED_OPENEDX_EVENTS = [] @classmethod def setUpClass(cls): """ Set up class method for the Test class. This method starts manually events isolation. Explanation here: openedx/core/djangoapps/user_authn/views/tests/test_events.py#L44 """ super().setUpClass() cls.start_events_isolation() def setUp(self): super().setUp() self.user = UserFactory() self.course1 = CourseOverviewFactory() self.course2 = CourseOverviewFactory( id=CourseKey.from_string(f'{self.course1.id}a')) self.eligible_cert = GeneratedCertificateFactory.create( status=CertificateStatuses.downloadable, user=self.user, course_id=self.course1.id) self.ineligible_cert = GeneratedCertificateFactory.create( status=CertificateStatuses.audit_passing, user=self.user, course_id=self.course2.id) def test_filter_ineligible_certificates(self): """ Verify that the EligibleAvailableCertificateManager filters out certificates marked as ineligible, and that the default object manager for GeneratedCertificate does not filter them out. """ assert list( GeneratedCertificate.eligible_available_certificates.filter( user=self.user)) == [self.eligible_cert] assert list(GeneratedCertificate.objects.filter(user=self.user)) == [ self.eligible_cert, self.ineligible_cert ] def test_filter_certificates_for_nonexistent_courses(self): """ Verify that the EligibleAvailableCertificateManager filters out certificates for courses with no CourseOverview. """ self.course1.delete() assert not GeneratedCertificate.eligible_available_certificates.filter( user=self.user)
class EligibleCertificateManagerTest(SharedModuleStoreTestCase): """ Test the GeneratedCertificate model's object manager for filtering out ineligible certs. """ def setUp(self): super(EligibleCertificateManagerTest, self).setUp() self.user = UserFactory() self.course1 = CourseOverviewFactory() self.course2 = CourseOverviewFactory( id=CourseKey.from_string('{}a'.format(self.course1.id)) ) self.eligible_cert = GeneratedCertificateFactory.create( status=CertificateStatuses.downloadable, user=self.user, course_id=self.course1.id ) self.ineligible_cert = GeneratedCertificateFactory.create( status=CertificateStatuses.audit_passing, user=self.user, course_id=self.course2.id ) def test_filter_ineligible_certificates(self): """ Verify that the EligibleAvailableCertificateManager filters out certificates marked as ineligible, and that the default object manager for GeneratedCertificate does not filter them out. """ self.assertEqual(list( GeneratedCertificate.eligible_available_certificates.filter(user=self.user)), [self.eligible_cert] ) self.assertEqual( list(GeneratedCertificate.objects.filter(user=self.user)), [self.eligible_cert, self.ineligible_cert] ) def test_filter_certificates_for_nonexistent_courses(self): """ Verify that the EligibleAvailableCertificateManager filters out certificates for courses with no CourseOverview. """ self.course1.delete() self.assertFalse(GeneratedCertificate.eligible_available_certificates.filter( user=self.user) )