Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions openedx/core/djangoapps/appsembler/sites/tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@
get_current_organization,
get_initial_page_elements,
get_active_sites,
get_lms_link_from_course_key
)
from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory

from organizations.models import Organization


Expand Down Expand Up @@ -126,3 +128,36 @@ def test_raises_if_multiorg_feature_and_multitenant_email_feature_on(self):
self.request.site = self.siteFoo
with self.assertRaises(ImproperlyConfigured):
get_current_organization()


class LMSLinkByCourseOrgTestCase(TestCase):
"""
Exercise getting the appropriate LMS Link for Studio "View in LMS"
based on the organization value set on the course that is being viewed.
(note we don't test with custom domains since that is handled by middleware)
"""
def setUp(self):
super(LMSLinkByCourseOrgTestCase, self).setUp()
self.siteFoo = SiteFactory.create(domain='foo.dev', name='foo.dev')
self.courseKey = "course-v1:org+course+run"
self.base_lms_url = "lms_base.domain"

@patch('openedx.core.djangoapps.appsembler.api.sites.get_site_for_course')
def test_lms_link_happy_path(self, mocked_get_site_for_course):
mocked_get_site_for_course.return_value = self.siteFoo
url = get_lms_link_from_course_key(self.base_lms_url, self.courseKey)
self.assertEqual(url, "foo.dev")

@patch('openedx.core.djangoapps.appsembler.api.sites.get_site_for_course')
def test_lms_link_no_site_matching_course(self, mocked_get_site_for_course):
mocked_get_site_for_course.return_value = None
url = get_lms_link_from_course_key(self.base_lms_url, self.courseKey)
self.assertEqual(url, self.base_lms_url)

@patch.dict('django.conf.settings.FEATURES', {
'PREVIEW_LMS_BASE': 'preview.lms_base.domain'
})
def test_lms_link_for_preview_always_return_preview_domain(self):
preview_url = "preview.lms_base.domain"
url = get_lms_link_from_course_key(preview_url, self.courseKey)
self.assertEqual(url, preview_url)
12 changes: 6 additions & 6 deletions openedx/core/djangoapps/appsembler/sites/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ def get_lms_link_from_course_key(base_lms_url, course_key):
"""
beeline.add_context_field("base_lms_url", base_lms_url)
beeline.add_context_field("course_key", course_key)
try:
site_domain = Site.objects.get(name=course_key.org).domain
except Site.DoesNotExist:
site_domain = "{}.{}".format(course_key.org, base_lms_url)

return site_domain
# avoid circular import
from openedx.core.djangoapps.appsembler.api.sites import get_site_for_course
course_site = get_site_for_course(course_key)
if course_site:
return course_site.domain
return base_lms_url


@beeline.traced(name="get_site_by_organization")
Expand Down