|
|
|
|
@@ -37,9 +37,7 @@ from opaque_keys.edx.locations import SlashSeparatedCourseKey
|
|
|
|
|
|
|
|
|
|
from submissions import api as sub_api
|
|
|
|
|
from student.models import anonymous_id_for_user
|
|
|
|
|
from xmodule.modulestore.tests.django_utils import (
|
|
|
|
|
ModuleStoreTestCase, SharedModuleStoreTestCase, TEST_DATA_SPLIT_MODULESTORE
|
|
|
|
|
)
|
|
|
|
|
from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase, TEST_DATA_SPLIT_MODULESTORE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@attr('shard_1')
|
|
|
|
|
@@ -579,23 +577,27 @@ class TestSendBetaRoleEmail(TestCase):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@attr('shard_1')
|
|
|
|
|
class TestGetEmailParamsCCX(ModuleStoreTestCase):
|
|
|
|
|
class TestGetEmailParamsCCX(SharedModuleStoreTestCase):
|
|
|
|
|
"""
|
|
|
|
|
Test what URLs the function get_email_params for CCX student enrollment.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
MODULESTORE = TEST_DATA_SPLIT_MODULESTORE
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
def setUpClass(cls):
|
|
|
|
|
super(TestGetEmailParamsCCX, cls).setUpClass()
|
|
|
|
|
cls.course = CourseFactory.create()
|
|
|
|
|
|
|
|
|
|
@patch.dict('django.conf.settings.FEATURES', {'CUSTOM_COURSES_EDX': True})
|
|
|
|
|
def setUp(self):
|
|
|
|
|
super(TestGetEmailParamsCCX, self).setUp()
|
|
|
|
|
|
|
|
|
|
self.course = CourseFactory.create()
|
|
|
|
|
self.coach = AdminFactory.create()
|
|
|
|
|
role = CourseCcxCoachRole(self.course.id)
|
|
|
|
|
role.add_users(self.coach)
|
|
|
|
|
self.ccx = CcxFactory(course_id=self.course.id, coach=self.coach)
|
|
|
|
|
self.course_key = CCXLocator.from_course_locator(self.course.id, self.ccx.id)
|
|
|
|
|
|
|
|
|
|
# Explicitly construct what we expect the course URLs to be
|
|
|
|
|
site = settings.SITE_NAME
|
|
|
|
|
self.course_url = u'https://{}/courses/{}/'.format(
|
|
|
|
|
@@ -603,9 +605,7 @@ class TestGetEmailParamsCCX(ModuleStoreTestCase):
|
|
|
|
|
self.course_key
|
|
|
|
|
)
|
|
|
|
|
self.course_about_url = self.course_url + 'about'
|
|
|
|
|
self.registration_url = u'https://{}/register'.format(
|
|
|
|
|
site,
|
|
|
|
|
)
|
|
|
|
|
self.registration_url = u'https://{}/register'.format(site)
|
|
|
|
|
|
|
|
|
|
@patch.dict('django.conf.settings.FEATURES', {'CUSTOM_COURSES_EDX': True})
|
|
|
|
|
def test_ccx_enrollment_email_params(self):
|
|
|
|
|
@@ -686,10 +686,14 @@ class TestRenderMessageToString(SharedModuleStoreTestCase):
|
|
|
|
|
cls.subject_template = 'emails/enroll_email_allowedsubject.txt'
|
|
|
|
|
cls.message_template = 'emails/enroll_email_allowedmessage.txt'
|
|
|
|
|
|
|
|
|
|
@patch.dict('django.conf.settings.FEATURES', {'CUSTOM_COURSES_EDX': True})
|
|
|
|
|
def setUp(self):
|
|
|
|
|
super(TestRenderMessageToString, self).setUp()
|
|
|
|
|
self.course_key = None
|
|
|
|
|
self.ccx = None
|
|
|
|
|
coach = AdminFactory.create()
|
|
|
|
|
role = CourseCcxCoachRole(self.course.id)
|
|
|
|
|
role.add_users(coach)
|
|
|
|
|
self.ccx = CcxFactory(course_id=self.course.id, coach=coach)
|
|
|
|
|
self.course_key = CCXLocator.from_course_locator(self.course.id, self.ccx.id)
|
|
|
|
|
|
|
|
|
|
def get_email_params(self):
|
|
|
|
|
"""
|
|
|
|
|
@@ -705,12 +709,6 @@ class TestRenderMessageToString(SharedModuleStoreTestCase):
|
|
|
|
|
"""
|
|
|
|
|
Returns a dictionary of parameters used to render an email for CCX.
|
|
|
|
|
"""
|
|
|
|
|
coach = AdminFactory.create()
|
|
|
|
|
role = CourseCcxCoachRole(self.course.id)
|
|
|
|
|
role.add_users(coach)
|
|
|
|
|
self.ccx = CcxFactory(course_id=self.course.id, coach=coach)
|
|
|
|
|
self.course_key = CCXLocator.from_course_locator(self.course.id, self.ccx.id)
|
|
|
|
|
|
|
|
|
|
email_params = get_email_params(
|
|
|
|
|
self.course,
|
|
|
|
|
True,
|
|
|
|
|
@@ -733,12 +731,10 @@ class TestRenderMessageToString(SharedModuleStoreTestCase):
|
|
|
|
|
language=language
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def get_subject_and_message_ccx(self):
|
|
|
|
|
def get_subject_and_message_ccx(self, subject_template, message_template):
|
|
|
|
|
"""
|
|
|
|
|
Returns the subject and message rendered in the specified language for CCX.
|
|
|
|
|
"""
|
|
|
|
|
subject_template = 'emails/enroll_email_enrolledsubject.txt'
|
|
|
|
|
message_template = 'emails/enroll_email_enrolledmessage.txt'
|
|
|
|
|
return render_message_to_string(
|
|
|
|
|
subject_template,
|
|
|
|
|
message_template,
|
|
|
|
|
@@ -761,11 +757,15 @@ class TestRenderMessageToString(SharedModuleStoreTestCase):
|
|
|
|
|
self.assertIn("You have been", message)
|
|
|
|
|
|
|
|
|
|
@patch.dict('django.conf.settings.FEATURES', {'CUSTOM_COURSES_EDX': True})
|
|
|
|
|
def test_render_message_ccx(self):
|
|
|
|
|
def test_render_enrollment_message_ccx_members(self):
|
|
|
|
|
"""
|
|
|
|
|
Test email template renders for CCX.
|
|
|
|
|
Test enrollment email template renders for CCX.
|
|
|
|
|
For EDX members.
|
|
|
|
|
"""
|
|
|
|
|
subject, message = self.get_subject_and_message_ccx()
|
|
|
|
|
subject_template = 'emails/enroll_email_enrolledsubject.txt'
|
|
|
|
|
message_template = 'emails/enroll_email_enrolledmessage.txt'
|
|
|
|
|
|
|
|
|
|
subject, message = self.get_subject_and_message_ccx(subject_template, message_template)
|
|
|
|
|
self.assertIn(self.ccx.display_name, subject)
|
|
|
|
|
self.assertIn(self.ccx.display_name, message)
|
|
|
|
|
site = settings.SITE_NAME
|
|
|
|
|
@@ -774,3 +774,45 @@ class TestRenderMessageToString(SharedModuleStoreTestCase):
|
|
|
|
|
self.course_key
|
|
|
|
|
)
|
|
|
|
|
self.assertIn(course_url, message)
|
|
|
|
|
|
|
|
|
|
@patch.dict('django.conf.settings.FEATURES', {'CUSTOM_COURSES_EDX': True})
|
|
|
|
|
def test_render_unenrollment_message_ccx_members(self):
|
|
|
|
|
"""
|
|
|
|
|
Test unenrollment email template renders for CCX.
|
|
|
|
|
For EDX members.
|
|
|
|
|
"""
|
|
|
|
|
subject_template = 'emails/unenroll_email_subject.txt'
|
|
|
|
|
message_template = 'emails/unenroll_email_enrolledmessage.txt'
|
|
|
|
|
|
|
|
|
|
subject, message = self.get_subject_and_message_ccx(subject_template, message_template)
|
|
|
|
|
self.assertIn(self.ccx.display_name, subject)
|
|
|
|
|
self.assertIn(self.ccx.display_name, message)
|
|
|
|
|
|
|
|
|
|
@patch.dict('django.conf.settings.FEATURES', {'CUSTOM_COURSES_EDX': True})
|
|
|
|
|
def test_render_enrollment_message_ccx_non_members(self):
|
|
|
|
|
"""
|
|
|
|
|
Test enrollment email template renders for CCX.
|
|
|
|
|
For non EDX members.
|
|
|
|
|
"""
|
|
|
|
|
subject_template = 'emails/enroll_email_allowedsubject.txt'
|
|
|
|
|
message_template = 'emails/enroll_email_allowedmessage.txt'
|
|
|
|
|
|
|
|
|
|
subject, message = self.get_subject_and_message_ccx(subject_template, message_template)
|
|
|
|
|
self.assertIn(self.ccx.display_name, subject)
|
|
|
|
|
self.assertIn(self.ccx.display_name, message)
|
|
|
|
|
site = settings.SITE_NAME
|
|
|
|
|
registration_url = u'https://{}/register'.format(site)
|
|
|
|
|
self.assertIn(registration_url, message)
|
|
|
|
|
|
|
|
|
|
@patch.dict('django.conf.settings.FEATURES', {'CUSTOM_COURSES_EDX': True})
|
|
|
|
|
def test_render_unenrollment_message_ccx_non_members(self):
|
|
|
|
|
"""
|
|
|
|
|
Test unenrollment email template renders for CCX.
|
|
|
|
|
For non EDX members.
|
|
|
|
|
"""
|
|
|
|
|
subject_template = 'emails/unenroll_email_subject.txt'
|
|
|
|
|
message_template = 'emails/unenroll_email_allowedmessage.txt'
|
|
|
|
|
|
|
|
|
|
subject, message = self.get_subject_and_message_ccx(subject_template, message_template)
|
|
|
|
|
self.assertIn(self.ccx.display_name, subject)
|
|
|
|
|
self.assertIn(self.ccx.display_name, message)
|
|
|
|
|
|