Update to policy check utilities for Course Entitlements
This commit is contained in:
@@ -70,6 +70,9 @@ class CourseEntitlementPolicy(models.Model):
|
||||
to by leaving and regaining their entitlement within policy.regain_period days from start date of
|
||||
the course or their redemption, whichever comes later, and the expiration period hasn't passed yet
|
||||
"""
|
||||
if entitlement.expired_at:
|
||||
return False
|
||||
|
||||
if entitlement.enrollment_course_run:
|
||||
if GeneratedCertificate.certificate_for_student(
|
||||
entitlement.user_id, entitlement.enrollment_course_run.course_id) is not None:
|
||||
@@ -86,6 +89,10 @@ class CourseEntitlementPolicy(models.Model):
|
||||
yet been redeemed (enrollment_course_run is NULL) and policy.refund_period has not yet passed, or if
|
||||
the entitlement has been redeemed, but the regain period hasn't passed yet.
|
||||
"""
|
||||
# If the Entitlement is expired already it is not refundable
|
||||
if entitlement.expired_at:
|
||||
return False
|
||||
|
||||
# If there's no order number, it cannot be refunded
|
||||
if entitlement.order_number is None:
|
||||
return False
|
||||
@@ -108,7 +115,8 @@ class CourseEntitlementPolicy(models.Model):
|
||||
# This is < because a get_days_since_created of expiration_period means that that many days have passed,
|
||||
# which should then expire the entitlement
|
||||
return (entitlement.get_days_since_created() < self.expiration_period.days # pylint: disable=no-member
|
||||
and not entitlement.enrollment_course_run)
|
||||
and not entitlement.enrollment_course_run
|
||||
and not entitlement.expired_at)
|
||||
|
||||
def __unicode__(self):
|
||||
return u'Course Entitlement Policy: expiration_period: {}, refund_period: {}, regain_period: {}'\
|
||||
|
||||
@@ -46,6 +46,10 @@ class TestModels(TestCase):
|
||||
|
||||
assert entitlement.is_entitlement_redeemable() is False
|
||||
|
||||
entitlement = CourseEntitlementFactory.create(expired_at=datetime.now())
|
||||
|
||||
assert entitlement.is_entitlement_refundable() is False
|
||||
|
||||
def test_is_entitlement_refundable(self):
|
||||
"""
|
||||
Test that the entitlement is refundable when created now, and is not refundable when created 70 days
|
||||
@@ -83,6 +87,10 @@ class TestModels(TestCase):
|
||||
|
||||
assert entitlement.is_entitlement_refundable() is True
|
||||
|
||||
entitlement = CourseEntitlementFactory.create(expired_at=datetime.now())
|
||||
|
||||
assert entitlement.is_entitlement_refundable() is False
|
||||
|
||||
def test_is_entitlement_regainable(self):
|
||||
"""
|
||||
Test that the entitlement is not expired when created now, and is expired when created20 days
|
||||
@@ -113,6 +121,10 @@ class TestModels(TestCase):
|
||||
|
||||
assert entitlement.is_entitlement_regainable() is False
|
||||
|
||||
entitlement = CourseEntitlementFactory.create(expired_at=datetime.now())
|
||||
|
||||
assert entitlement.is_entitlement_regainable
|
||||
|
||||
def test_get_days_until_expiration(self):
|
||||
"""
|
||||
Test that the expiration period is always less than or equal to the policy expiration
|
||||
|
||||
Reference in New Issue
Block a user