From bea90c1a016b47256adc195d20abe8486314f299 Mon Sep 17 00:00:00 2001 From: Peter Fogg Date: Wed, 13 Jan 2016 15:59:19 -0500 Subject: [PATCH] Allow certificates with 'auditing' status to be regenerated. ECOM-3401 --- lms/djangoapps/certificates/queue.py | 3 ++- .../certificates/tests/test_queue.py | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index ad6433e096..76f9203a1c 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -220,7 +220,8 @@ class XQueueCertInterface(object): status.deleted, status.error, status.notpassing, - status.downloadable + status.downloadable, + status.auditing, ] cert_status = certificate_status_for_student(student, course_id)['status'] diff --git a/lms/djangoapps/certificates/tests/test_queue.py b/lms/djangoapps/certificates/tests/test_queue.py index e50e85246f..b3546e4912 100644 --- a/lms/djangoapps/certificates/tests/test_queue.py +++ b/lms/djangoapps/certificates/tests/test_queue.py @@ -181,6 +181,30 @@ class XQueueCertInterfaceAddCertificateTest(ModuleStoreTestCase): self.assertFalse(certificate.eligible_for_certificate) self.assertEqual(certificate.mode, expected_mode) + @ddt.data( + (CertificateStatuses.restricted, False), + (CertificateStatuses.deleting, False), + (CertificateStatuses.generating, True), + (CertificateStatuses.unavailable, True), + (CertificateStatuses.deleted, True), + (CertificateStatuses.error, True), + (CertificateStatuses.notpassing, True), + (CertificateStatuses.downloadable, True), + (CertificateStatuses.auditing, True), + ) + @ddt.unpack + def test_add_cert_statuses(self, status, should_generate): + """ + Test that certificates can or cannot be generated with the given + certificate status. + """ + with patch('certificates.queue.certificate_status_for_student', Mock(return_value={'status': status})): + mock_send = self.add_cert_to_queue('verified') + if should_generate: + self.assertTrue(mock_send.called) + else: + self.assertFalse(mock_send.called) + @attr('shard_1') @override_settings(CERT_QUEUE='certificates')