Introduces a mgmt. command that retrieves course runs from catalog service in order to update marketing urls for the courses found in course metadata cache (i.e. CourseOverview). This also provides an updated utility to retrieve course sharing url.
130 lines
4.7 KiB
Python
130 lines
4.7 KiB
Python
"""
|
|
Tests for course utils.
|
|
"""
|
|
import ddt
|
|
import mock
|
|
|
|
from django.conf import settings
|
|
|
|
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
|
|
from xmodule.modulestore import ModuleStoreEnum
|
|
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
|
from xmodule.modulestore.tests.factories import CourseFactory
|
|
|
|
from util.course import get_link_for_about_page
|
|
|
|
|
|
@ddt.ddt
|
|
class TestCourseSharingLinks(ModuleStoreTestCase):
|
|
"""
|
|
Tests for course sharing links.
|
|
"""
|
|
def setUp(self):
|
|
super(TestCourseSharingLinks, self).setUp()
|
|
|
|
# create test mongo course
|
|
self.course = CourseFactory.create(
|
|
org='test_org',
|
|
number='test_number',
|
|
run='test_run',
|
|
default_store=ModuleStoreEnum.Type.split,
|
|
social_sharing_url='test_social_sharing_url',
|
|
)
|
|
|
|
# load this course into course overview and set it's marketing url
|
|
self.course_overview = CourseOverview.get_from_id(self.course.id)
|
|
self.course_overview.marketing_url = 'test_marketing_url'
|
|
self.course_overview.save()
|
|
|
|
def get_course_sharing_link(self, enable_social_sharing, enable_mktg_site, use_overview=True):
|
|
"""
|
|
Get course sharing link.
|
|
|
|
Arguments:
|
|
enable_social_sharing(Boolean): To indicate whether social sharing is enabled.
|
|
enable_mktg_site(Boolean): A feature flag to decide activation of marketing site.
|
|
|
|
Keyword Arguments:
|
|
use_overview: indicates whether course overview or course descriptor should get
|
|
past to get_link_for_about_page.
|
|
|
|
Returns course sharing url.
|
|
"""
|
|
mock_settings = {
|
|
'FEATURES': {
|
|
'ENABLE_MKTG_SITE': enable_mktg_site
|
|
},
|
|
'SOCIAL_SHARING_SETTINGS': {
|
|
'CUSTOM_COURSE_URLS': enable_social_sharing
|
|
},
|
|
}
|
|
|
|
with mock.patch.multiple('django.conf.settings', **mock_settings):
|
|
course_sharing_link = get_link_for_about_page(
|
|
self.course_overview if use_overview else self.course
|
|
)
|
|
|
|
return course_sharing_link
|
|
|
|
@ddt.data(
|
|
(True, True, 'test_social_sharing_url'),
|
|
(False, True, 'test_marketing_url'),
|
|
(True, False, 'test_social_sharing_url'),
|
|
(False, False, '{}/courses/course-v1:test_org+test_number+test_run/about'.format(settings.LMS_ROOT_URL)),
|
|
)
|
|
@ddt.unpack
|
|
def test_sharing_link_with_settings(self, enable_social_sharing, enable_mktg_site, expected_course_sharing_link):
|
|
"""
|
|
Verify the method gives correct course sharing url on settings manipulations.
|
|
"""
|
|
actual_course_sharing_link = self.get_course_sharing_link(
|
|
enable_social_sharing=enable_social_sharing,
|
|
enable_mktg_site=enable_mktg_site,
|
|
)
|
|
self.assertEqual(actual_course_sharing_link, expected_course_sharing_link)
|
|
|
|
@ddt.data(
|
|
(['social_sharing_url'], 'test_marketing_url'),
|
|
(['marketing_url'], 'test_social_sharing_url'),
|
|
(
|
|
['social_sharing_url', 'marketing_url'],
|
|
'{}/courses/course-v1:test_org+test_number+test_run/about'.format(settings.LMS_ROOT_URL)
|
|
),
|
|
)
|
|
@ddt.unpack
|
|
def test_sharing_link_with_course_overview_attrs(self, overview_attrs, expected_course_sharing_link):
|
|
"""
|
|
Verify the method gives correct course sharing url when:
|
|
1. Neither marketing url nor social sharing url is set.
|
|
2. Either marketing url or social sharing url is set.
|
|
"""
|
|
for overview_attr in overview_attrs:
|
|
setattr(self.course_overview, overview_attr, None)
|
|
self.course_overview.save()
|
|
|
|
actual_course_sharing_link = self.get_course_sharing_link(
|
|
enable_social_sharing=True,
|
|
enable_mktg_site=True,
|
|
)
|
|
self.assertEqual(actual_course_sharing_link, expected_course_sharing_link)
|
|
|
|
@ddt.data(
|
|
(True, 'test_social_sharing_url'),
|
|
(
|
|
False,
|
|
'{}/courses/course-v1:test_org+test_number+test_run/about'.format(settings.LMS_ROOT_URL)
|
|
),
|
|
)
|
|
@ddt.unpack
|
|
def test_sharing_link_with_course_descriptor(self, enable_social_sharing, expected_course_sharing_link):
|
|
"""
|
|
Verify the method gives correct course sharing url on passing
|
|
course descriptor as a parameter.
|
|
"""
|
|
actual_course_sharing_link = self.get_course_sharing_link(
|
|
enable_social_sharing=enable_social_sharing,
|
|
enable_mktg_site=True,
|
|
use_overview=False,
|
|
)
|
|
self.assertEqual(actual_course_sharing_link, expected_course_sharing_link)
|