test: for entitlements tasks.expire_and_create_entitlements

This commit is contained in:
Phillip Shiu
2023-06-25 22:12:58 -04:00
parent 82338bd375
commit e115cd9873

View File

@@ -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()