MICROBA-923 Add method to generate V2 course certificates (#26898)
This commit is contained in:
@@ -13,12 +13,17 @@ from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
|
||||
from common.djangoapps.student.tests.factories import CourseEnrollmentFactory, UserFactory
|
||||
from lms.djangoapps.certificates.generation_handler import CERTIFICATES_USE_ALLOWLIST
|
||||
from lms.djangoapps.certificates.generation_handler import CERTIFICATES_USE_ALLOWLIST, CERTIFICATES_USE_UPDATED
|
||||
from lms.djangoapps.certificates.generation_handler import (
|
||||
_can_generate_allowlist_certificate_for_status,
|
||||
is_using_certificate_allowlist,
|
||||
can_generate_allowlist_certificate,
|
||||
_is_using_v2_course_certificates,
|
||||
_can_generate_allowlist_certificate,
|
||||
_can_generate_v2_certificate,
|
||||
can_generate_certificate_task,
|
||||
generate_allowlist_certificate_task,
|
||||
generate_certificate_task,
|
||||
generate_regular_certificate_task,
|
||||
is_using_certificate_allowlist_and_is_on_allowlist
|
||||
)
|
||||
from lms.djangoapps.certificates.models import GeneratedCertificate, CertificateStatuses
|
||||
@@ -147,29 +152,38 @@ class AllowlistTests(ModuleStoreTestCase):
|
||||
"""
|
||||
Test handling of an invalid user/course run combo
|
||||
"""
|
||||
assert not can_generate_allowlist_certificate(self.user, self.course_run_key)
|
||||
assert not _can_generate_allowlist_certificate(self.user, self.course_run_key)
|
||||
assert not generate_allowlist_certificate_task(self.user, self.course_run_key)
|
||||
assert not can_generate_certificate_task(self.user, self.course_run_key)
|
||||
assert not generate_certificate_task(self.user, self.course_run_key)
|
||||
|
||||
def test_handle_valid(self):
|
||||
"""
|
||||
Test handling of a valid user/course run combo
|
||||
"""
|
||||
assert can_generate_allowlist_certificate(self.user, self.course_run_key)
|
||||
assert _can_generate_allowlist_certificate(self.user, self.course_run_key)
|
||||
assert generate_allowlist_certificate_task(self.user, self.course_run_key)
|
||||
|
||||
def test_handle_valid_general_methods(self):
|
||||
"""
|
||||
Test handling of a valid user/course run combo for the general (non-allowlist) generation methods
|
||||
"""
|
||||
assert can_generate_certificate_task(self.user, self.course_run_key)
|
||||
assert generate_certificate_task(self.user, self.course_run_key)
|
||||
|
||||
def test_can_generate_auto_disabled(self):
|
||||
"""
|
||||
Test handling when automatic generation is disabled
|
||||
"""
|
||||
with override_waffle_switch(AUTO_GENERATION_SWITCH, active=False):
|
||||
assert not can_generate_allowlist_certificate(self.user, self.course_run_key)
|
||||
assert not _can_generate_allowlist_certificate(self.user, self.course_run_key)
|
||||
|
||||
def test_can_generate_not_verified(self):
|
||||
"""
|
||||
Test handling when the user's id is not verified
|
||||
"""
|
||||
with mock.patch(ID_VERIFIED_METHOD, return_value=False):
|
||||
assert not can_generate_allowlist_certificate(self.user, self.course_run_key)
|
||||
assert not _can_generate_allowlist_certificate(self.user, self.course_run_key)
|
||||
|
||||
def test_can_generate_not_enrolled(self):
|
||||
"""
|
||||
@@ -179,7 +193,7 @@ class AllowlistTests(ModuleStoreTestCase):
|
||||
cr = CourseFactory()
|
||||
key = cr.id # pylint: disable=no-member
|
||||
CertificateWhitelistFactory.create(course_id=key, user=u)
|
||||
assert not can_generate_allowlist_certificate(u, key)
|
||||
assert not _can_generate_allowlist_certificate(u, key)
|
||||
|
||||
def test_can_generate_not_whitelisted(self):
|
||||
"""
|
||||
@@ -194,7 +208,7 @@ class AllowlistTests(ModuleStoreTestCase):
|
||||
is_active=True,
|
||||
mode="verified",
|
||||
)
|
||||
assert not can_generate_allowlist_certificate(u, key)
|
||||
assert not _can_generate_allowlist_certificate(u, key)
|
||||
|
||||
def test_can_generate_invalidated(self):
|
||||
"""
|
||||
@@ -222,4 +236,61 @@ class AllowlistTests(ModuleStoreTestCase):
|
||||
active=True
|
||||
)
|
||||
|
||||
assert not can_generate_allowlist_certificate(u, key)
|
||||
assert not _can_generate_allowlist_certificate(u, key)
|
||||
|
||||
|
||||
@override_switch(AUTO_GENERATION_SWITCH_NAME, active=True)
|
||||
@override_waffle_flag(CERTIFICATES_USE_UPDATED, active=True)
|
||||
@mock.patch(ID_VERIFIED_METHOD, mock.Mock(return_value=True))
|
||||
class CertificateTests(ModuleStoreTestCase):
|
||||
"""
|
||||
Tests for handling course certificates
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
# Create user, a course run, and an enrollment
|
||||
self.user = UserFactory()
|
||||
self.course_run = CourseFactory()
|
||||
self.course_run_key = self.course_run.id # pylint: disable=no-member
|
||||
self.enrollment = CourseEnrollmentFactory(
|
||||
user=self.user,
|
||||
course_id=self.course_run_key,
|
||||
is_active=True,
|
||||
mode="verified",
|
||||
)
|
||||
|
||||
def test_handle_valid(self):
|
||||
"""
|
||||
Test handling of a valid user/course run combo.
|
||||
|
||||
Note: these assertions are placeholders for now. They will be updated as the implementation is added.
|
||||
"""
|
||||
assert not _can_generate_v2_certificate(self.user, self.course_run_key)
|
||||
assert can_generate_certificate_task(self.user, self.course_run_key)
|
||||
assert not generate_certificate_task(self.user, self.course_run_key)
|
||||
assert not generate_regular_certificate_task(self.user, self.course_run_key)
|
||||
|
||||
@override_waffle_flag(CERTIFICATES_USE_UPDATED, active=False)
|
||||
def test_handle_invalid(self):
|
||||
"""
|
||||
Test handling of an invalid user/course run combo
|
||||
"""
|
||||
assert not _can_generate_v2_certificate(self.user, self.course_run_key)
|
||||
assert not can_generate_certificate_task(self.user, self.course_run_key)
|
||||
assert not generate_certificate_task(self.user, self.course_run_key)
|
||||
assert not generate_regular_certificate_task(self.user, self.course_run_key)
|
||||
|
||||
def test_is_using_updated_true(self):
|
||||
"""
|
||||
Test the updated flag
|
||||
"""
|
||||
assert _is_using_v2_course_certificates(self.course_run_key)
|
||||
|
||||
@override_waffle_flag(CERTIFICATES_USE_UPDATED, active=False)
|
||||
def test_is_using_updated_false(self):
|
||||
"""
|
||||
Test the updated flag without the override
|
||||
"""
|
||||
assert not _is_using_v2_course_certificates(self.course_run_key)
|
||||
|
||||
Reference in New Issue
Block a user