2. Add site configuration overrides to theming/helpers.py 3. Move microsite.get_value from theming/helpers to site_configuration/helpers 4. Move microsite_configuration.microsite.get_value usages to site_configuration.helpers.values
170 lines
5.7 KiB
Python
170 lines
5.7 KiB
Python
"""
|
|
Test Microsite filebased backends.
|
|
"""
|
|
import unittest
|
|
from mock import patch
|
|
|
|
from django.test import TestCase
|
|
from django.conf import settings
|
|
from django.core.urlresolvers import reverse
|
|
|
|
from microsite_configuration.backends.base import (
|
|
BaseMicrositeBackend,
|
|
BaseMicrositeTemplateBackend,
|
|
)
|
|
from microsite_configuration import microsite
|
|
from student.tests.factories import CourseEnrollmentFactory, UserFactory
|
|
from xmodule.modulestore.tests.factories import CourseFactory
|
|
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
|
|
|
|
|
@patch(
|
|
'microsite_configuration.microsite.BACKEND',
|
|
microsite.get_backend(
|
|
'microsite_configuration.backends.filebased.FilebasedMicrositeBackend', BaseMicrositeBackend
|
|
)
|
|
)
|
|
class FilebasedMicrositeBackendTests(TestCase):
|
|
"""
|
|
Go through and test the FilebasedMicrositeBackend class
|
|
"""
|
|
def setUp(self):
|
|
super(FilebasedMicrositeBackendTests, self).setUp()
|
|
self.microsite_subdomain = 'test-site'
|
|
|
|
def tearDown(self):
|
|
super(FilebasedMicrositeBackendTests, self).tearDown()
|
|
microsite.clear()
|
|
|
|
def test_get_value(self):
|
|
"""
|
|
Tests microsite.get_value works as expected.
|
|
"""
|
|
microsite.set_by_domain(self.microsite_subdomain)
|
|
self.assertEqual(microsite.get_value('platform_name'), 'Test Site')
|
|
|
|
def test_is_request_in_microsite(self):
|
|
"""
|
|
Tests microsite.is_request_in_microsite works as expected.
|
|
"""
|
|
microsite.set_by_domain(self.microsite_subdomain)
|
|
self.assertTrue(microsite.is_request_in_microsite())
|
|
|
|
def test_has_override_value(self):
|
|
"""
|
|
Tests microsite.has_override_value works as expected.
|
|
"""
|
|
microsite.set_by_domain(self.microsite_subdomain)
|
|
self.assertTrue(microsite.has_override_value('platform_name'))
|
|
|
|
def test_get_value_for_org(self):
|
|
"""
|
|
Tests microsite.get_value_for_org works as expected.
|
|
"""
|
|
microsite.set_by_domain(self.microsite_subdomain)
|
|
self.assertEqual(
|
|
microsite.get_value_for_org('TestSiteX', 'platform_name'),
|
|
'Test Site'
|
|
)
|
|
|
|
# if no config is set
|
|
microsite.clear()
|
|
with patch('django.conf.settings.MICROSITE_CONFIGURATION', False):
|
|
self.assertEqual(
|
|
microsite.get_value_for_org('TestSiteX', 'platform_name', 'Default Value'),
|
|
'Default Value'
|
|
)
|
|
|
|
def test_get_all_orgs(self):
|
|
"""
|
|
Tests microsite.get_all_orgs works as expected.
|
|
"""
|
|
microsite.set_by_domain(self.microsite_subdomain)
|
|
self.assertEqual(
|
|
microsite.get_all_orgs(),
|
|
set(['TestSiteX', 'LogistrationX'])
|
|
)
|
|
|
|
# if no config is set
|
|
microsite.clear()
|
|
with patch('django.conf.settings.MICROSITE_CONFIGURATION', False):
|
|
self.assertEqual(
|
|
microsite.get_all_orgs(),
|
|
set()
|
|
)
|
|
|
|
def test_clear(self):
|
|
"""
|
|
Tests microsite.clear works as expected.
|
|
"""
|
|
microsite.set_by_domain(self.microsite_subdomain)
|
|
self.assertEqual(
|
|
microsite.get_value('platform_name'),
|
|
'Test Site'
|
|
)
|
|
microsite.clear()
|
|
self.assertIsNone(microsite.get_value('platform_name'))
|
|
|
|
def test_get_all_configs(self):
|
|
"""
|
|
Tests microsite.get_all_config works as expected.
|
|
"""
|
|
microsite.set_by_domain(self.microsite_subdomain)
|
|
configs = microsite.get_all_config()
|
|
self.assertEqual(len(configs.keys()), 3)
|
|
|
|
def test_set_config_by_domain(self):
|
|
"""
|
|
Tests microsite.set_config_by_domain works as expected.
|
|
"""
|
|
microsite.clear()
|
|
# if microsite config does not exist default config should be used
|
|
microsite.set_by_domain('unknown')
|
|
self.assertEqual(microsite.get_value('university'), 'default_university')
|
|
|
|
def test_has_configuration_set(self):
|
|
"""
|
|
Tests microsite.has_configuration_set works as expected.
|
|
"""
|
|
self.assertTrue(microsite.BACKEND.has_configuration_set())
|
|
|
|
with patch('django.conf.settings.MICROSITE_CONFIGURATION', {}):
|
|
self.assertFalse(microsite.BACKEND.has_configuration_set())
|
|
|
|
|
|
@patch(
|
|
'microsite_configuration.microsite.TEMPLATES_BACKEND',
|
|
microsite.get_backend(
|
|
'microsite_configuration.backends.filebased.FilebasedMicrositeTemplateBackend', BaseMicrositeTemplateBackend
|
|
)
|
|
)
|
|
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
|
|
class FilebasedMicrositeTemplateBackendTests(ModuleStoreTestCase):
|
|
"""
|
|
Go through and test the FilebasedMicrositeTemplateBackend class
|
|
"""
|
|
def setUp(self):
|
|
super(FilebasedMicrositeTemplateBackendTests, self).setUp()
|
|
self.microsite_subdomain = 'test-site'
|
|
self.course = CourseFactory.create()
|
|
self.user = UserFactory.create(username="Bob", email="bob@example.com", password="edx")
|
|
self.client.login(username=self.user.username, password="edx")
|
|
|
|
def test_get_template_path(self):
|
|
"""
|
|
Tests get template path works for both relative and absolute paths.
|
|
"""
|
|
microsite.set_by_domain(self.microsite_subdomain)
|
|
CourseEnrollmentFactory(
|
|
course_id=self.course.id,
|
|
user=self.user
|
|
)
|
|
|
|
response = self.client.get(
|
|
reverse('syllabus', args=[unicode(self.course.id)]),
|
|
HTTP_HOST=settings.MICROSITE_TEST_HOSTNAME,
|
|
)
|
|
|
|
self.assertContains(response, "Microsite relative path template contents")
|
|
self.assertContains(response, "Microsite absolute path template contents")
|