Fixes from Daian's CR
This commit is contained in:
@@ -1,14 +1,20 @@
|
||||
from mock import Mock
|
||||
|
||||
from django.test import TestCase
|
||||
from django.test.utils import override_settings
|
||||
|
||||
from xmodule.modulestore import Location
|
||||
import courseware.access as access
|
||||
from courseware.tests.tests import TEST_DATA_MIXED_MODULESTORE
|
||||
from .factories import CourseEnrollmentAllowedFactory
|
||||
import datetime
|
||||
from django.utils.timezone import UTC
|
||||
|
||||
from student.tests.factories import UserFactory
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
|
||||
|
||||
@override_settings(MODULESTORE=TEST_DATA_MIXED_MODULESTORE)
|
||||
class AccessTestCase(TestCase):
|
||||
def test__has_global_staff_access(self):
|
||||
u = Mock(is_staff=False)
|
||||
@@ -108,18 +114,19 @@ class AccessTestCase(TestCase):
|
||||
# Non-staff cannot enroll outside the open enrollment period if not specifically allowed
|
||||
|
||||
def test__has_access_refund(self):
|
||||
user = Mock()
|
||||
user = UserFactory.create()
|
||||
course = CourseFactory.create(org='org', number='test', run='course', display_name='Test Course')
|
||||
today = datetime.datetime.now(UTC())
|
||||
grace_period = datetime.timedelta(days=14)
|
||||
one_day_extra = datetime.timedelta(days=1)
|
||||
|
||||
# User is allowed to receive refund if it is within two weeks of course start date
|
||||
course = Mock(enrollment_start=(today - one_day_extra), id='edX/tests/Whenever')
|
||||
course.enrollment_start = (today - one_day_extra)
|
||||
self.assertTrue(access._has_access_course_desc(user, course, 'refund'))
|
||||
|
||||
course = Mock(enrollment_start=(today - grace_period), id='edX/test/Whenever')
|
||||
course.enrollment_start = (today - grace_period)
|
||||
self.assertTrue(access._has_access_course_desc(user, course, 'refund'))
|
||||
|
||||
# After two weeks, user may no longer receive a refund
|
||||
course = Mock(enrollment_start=(today - grace_period - one_day_extra), id='edX/test/Whenever')
|
||||
course.enrollment_start = (today - grace_period - one_day_extra)
|
||||
self.assertFalse(access._has_access_course_desc(user, course, 'refund'))
|
||||
|
||||
@@ -413,7 +413,6 @@ class CertificateItem(OrderItem):
|
||||
try:
|
||||
course_id = kwargs['course_id']
|
||||
user = kwargs['user']
|
||||
user_email = kwargs['user_email']
|
||||
|
||||
# If there's duplicate entries, just grab the first one and refund it (though in most cases we should only get one)
|
||||
target_certs = CertificateItem.objects.filter(course_id=course_id, user_id=user, status='purchased', mode='verified')
|
||||
@@ -425,7 +424,7 @@ class CertificateItem(OrderItem):
|
||||
|
||||
# send billing an email so they can handle refunding
|
||||
subject = _("[Refund] User-Requested Refund")
|
||||
message = "User " + str(user) + "(" + str(user_email) + ") has requested a refund on Order #" + str(order_number) + "."
|
||||
message = "User " + str(user) + "(" + str(user.email) + ") has requested a refund on Order #" + str(order_number) + "."
|
||||
to_email = [settings.PAYMENT_SUPPORT_EMAIL]
|
||||
from_email = "support@edx.org"
|
||||
send_mail(subject, message, from_email, to_email, fail_silently=False)
|
||||
@@ -433,7 +432,7 @@ class CertificateItem(OrderItem):
|
||||
return target_cert
|
||||
|
||||
except IndexError:
|
||||
log.exception("No certificate found")
|
||||
log.exception("Matching CertificateItem not found while trying to refund. User %s, Course %s", user, course_id)
|
||||
raise IndexError
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -144,9 +144,9 @@
|
||||
% if enrollment.mode != "verified":
|
||||
<a href="#unenroll-modal" class="unenroll" rel="leanModal" data-course-id="${course.id}" data-course-number="${course.number}" onclick="document.getElementById('refund-info').innerHTML=''">${_('Unregister')}</a>
|
||||
% elif show_refund_option:
|
||||
<a href="#unenroll-modal" class="unenroll" rel="leanModal" data-course-id="${course.id}" data-course-number="${course.number}" onclick="document.getElementById('refund-info').innerHTML='You will be refunded for the amount you paid'">${_('Unregister')}</a>
|
||||
<a href="#unenroll-modal" class="unenroll" rel="leanModal" data-course-id="${course.id}" data-course-number="${course.number}" onclick="document.getElementById('refund-info').innerHTML=gettext('You will be refunded for the amount you paid')">${_('Unregister')}</a>
|
||||
% else:
|
||||
<a href="#unenroll-modal" class="unenroll" rel="leanModal" data-course-id="${course.id}" data-course-number="${course.number}" onclick="document.getElementById('refund-info').innerHTML='The refund deadline for this course has passed, so you will not receive money back'">${_('Unregister')}</a>
|
||||
<a href="#unenroll-modal" class="unenroll" rel="leanModal" data-course-id="${course.id}" data-course-number="${course.number}" onclick="document.getElementById('refund-info').innerHTML=gettext('The refund deadline for this course has passed, so you will not receive money back')">${_('Unregister')}</a>
|
||||
% endif
|
||||
|
||||
% if show_email_settings:
|
||||
|
||||
Reference in New Issue
Block a user