Merge pull request #19293 from edx/bfiller/REVE-96
Don't allow audit-only courses to expire
This commit is contained in:
@@ -9,6 +9,7 @@ from django.apps import apps
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from course_modes.models import CourseMode
|
||||
from util.date_utils import DEFAULT_SHORT_DATE_FORMAT, strftime_localized
|
||||
from lms.djangoapps.courseware.access_response import AccessError
|
||||
from lms.djangoapps.courseware.access_utils import ACCESS_GRANTED
|
||||
@@ -60,6 +61,9 @@ def get_user_course_expiration_date(user, course):
|
||||
|
||||
access_duration = MIN_DURATION
|
||||
|
||||
if not CourseMode.verified_mode_for_course(course.id):
|
||||
return None
|
||||
|
||||
CourseEnrollment = apps.get_model('student.CourseEnrollment')
|
||||
enrollment = CourseEnrollment.get_enrollment(user, course.id)
|
||||
if enrollment is None or enrollment.mode != 'audit':
|
||||
|
||||
@@ -9,6 +9,7 @@ import mock
|
||||
|
||||
from course_modes.models import CourseMode
|
||||
from openedx.features.course_duration_limits.access import get_user_course_expiration_date, MIN_DURATION, MAX_DURATION
|
||||
from openedx.features.course_experience.tests.views.helpers import add_course_mode
|
||||
from student.models import CourseEnrollment
|
||||
from student.tests.factories import UserFactory
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
@@ -25,6 +26,9 @@ class CourseExpirationTestCase(ModuleStoreTestCase):
|
||||
)
|
||||
self.user = UserFactory()
|
||||
|
||||
# Make this a verified course so we can test expiration date
|
||||
add_course_mode(self.course, upgrade_deadline_expired=False)
|
||||
|
||||
def tearDown(self):
|
||||
CourseEnrollment.unenroll(self.user, self.course.id)
|
||||
super(CourseExpirationTestCase, self).tearDown()
|
||||
@@ -79,6 +83,10 @@ class CourseExpirationTestCase(ModuleStoreTestCase):
|
||||
past_course = CourseFactory(start=start_date)
|
||||
enrollment = CourseEnrollment.enroll(self.user, past_course.id, CourseMode.AUDIT)
|
||||
result = get_user_course_expiration_date(self.user, past_course)
|
||||
self.assertEqual(result, None)
|
||||
|
||||
add_course_mode(past_course, upgrade_deadline_expired=False)
|
||||
result = get_user_course_expiration_date(self.user, past_course)
|
||||
content_availability_date = enrollment.created
|
||||
self.assertEqual(result, content_availability_date + access_duration)
|
||||
|
||||
@@ -87,5 +95,9 @@ class CourseExpirationTestCase(ModuleStoreTestCase):
|
||||
future_course = CourseFactory(start=start_date)
|
||||
enrollment = CourseEnrollment.enroll(self.user, future_course.id, CourseMode.AUDIT)
|
||||
result = get_user_course_expiration_date(self.user, future_course)
|
||||
self.assertEqual(result, None)
|
||||
|
||||
add_course_mode(future_course, upgrade_deadline_expired=False)
|
||||
result = get_user_course_expiration_date(self.user, future_course)
|
||||
content_availability_date = start_date
|
||||
self.assertEqual(result, content_availability_date + access_duration)
|
||||
|
||||
Reference in New Issue
Block a user