From e115cd9873c70f76a1cb972ce1b78f5c19bfa87e Mon Sep 17 00:00:00 2001 From: Phillip Shiu Date: Sun, 25 Jun 2023 22:12:58 -0400 Subject: [PATCH] test: for entitlements tasks.expire_and_create_entitlements --- .../entitlements/tests/test_tasks.py | 63 ++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/common/djangoapps/entitlements/tests/test_tasks.py b/common/djangoapps/entitlements/tests/test_tasks.py index 02a1f9468d..0ad97f6bb3 100644 --- a/common/djangoapps/entitlements/tests/test_tasks.py +++ b/common/djangoapps/entitlements/tests/test_tasks.py @@ -11,8 +11,9 @@ import pytz from django.test import TestCase from common.djangoapps.entitlements import tasks -from common.djangoapps.entitlements.models import CourseEntitlementPolicy +from common.djangoapps.entitlements.models import CourseEntitlement, CourseEntitlementPolicy from common.djangoapps.entitlements.tests.factories import CourseEntitlementFactory +from common.djangoapps.student.tests.factories import AdminFactory from openedx.core.djangolib.testing.utils import skip_unless_lms @@ -103,3 +104,63 @@ class TestExpireOldEntitlementsTaskIntegration(TestCase): entitlement.refresh_from_db() assert entitlement.expired_at is not None + + +@skip_unless_lms +class TestExpireAndCreateEntitlementsTaskIntegration(TestCase): + """ + Tests for the 'expire_and_create_entitlements' method. + """ + SUPPORT_USERNAME = 'support_username' + + def setUp(self): + """ + Set up user for tests. + """ + # Mock support user + AdminFactory.create(username=self.SUPPORT_USERNAME) + + def test_actually_expired(self): + """ + Integration test with CourseEntitlement to make sure we are calling the + correct API. + """ + entitlement = make_entitlement() + + # Sanity check + assert entitlement.expired_at is None + + # Run enforcement + tasks.expire_and_create_entitlements.delay( + [entitlement.id], + self.SUPPORT_USERNAME, + ).get() + entitlement.refresh_from_db() + + assert entitlement.expired_at is not None + + + def test_actually_created(self): + """ + Integration test with CourseEntitlement to make sure we are creating an + entitlement after expiring it. + """ + entitlement = make_entitlement() + + # Sanity check + assert not CourseEntitlement.objects.filter( + course_uuid=entitlement.course_uuid, + expired_at=None + ).exclude(id=entitlement.id).exists() + + # Run enforcement + tasks.expire_and_create_entitlements.delay( + [entitlement.id], + self.SUPPORT_USERNAME, + ).get() + entitlement.refresh_from_db() + + assert CourseEntitlement.objects.filter( + course_uuid=entitlement.course_uuid, + expired_at=None + ).exclude(id=entitlement.id).exists()