The existing pattern of using `override_settings(MODULESTORE=...)` prevented
us from having more than one layer of subclassing in modulestore tests.
In a structure like:
@override_settings(MODULESTORE=store_a)
class BaseTestCase(ModuleStoreTestCase):
def setUp(self):
# use store
@override_settings(MODULESTORE=store_b)
class ChildTestCase(BaseTestCase):
def setUp(self):
# use store
In this case, the store actions performed in `BaseTestCase` on behalf of
`ChildTestCase` would still use `store_a`, even though the `ChildTestCase`
had specified to use `store_b`. This is because the `override_settings`
decorator would be the innermost wrapper around the `BaseTestCase.setUp` method,
no matter what `ChildTestCase` does.
To remedy this, we move the call to `override_settings` into the
`ModuleStoreTestCase.setUp` method, and use a cleanup to remove the override.
Subclasses can just defined the `MODULESTORE` class attribute to specify which
modulestore to use _for the entire `setUp` chain_.
[PLAT-419]
38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
"""
|
|
Tests for wiki middleware.
|
|
"""
|
|
|
|
from django.test.client import Client
|
|
from django.test.utils import override_settings
|
|
from wiki.models import URLPath
|
|
|
|
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
|
from xmodule.modulestore.tests.factories import CourseFactory
|
|
|
|
from courseware.tests.factories import InstructorFactory
|
|
from xmodule.modulestore.tests.django_utils import TEST_DATA_MOCK_MODULESTORE
|
|
from course_wiki.views import get_or_create_root
|
|
|
|
|
|
class TestWikiAccessMiddleware(ModuleStoreTestCase):
|
|
"""Tests for WikiAccessMiddleware."""
|
|
|
|
def setUp(self):
|
|
"""Test setup."""
|
|
super(TestWikiAccessMiddleware, self).setUp()
|
|
|
|
self.wiki = get_or_create_root()
|
|
|
|
self.course_math101 = CourseFactory.create(org='edx', number='math101', display_name='2014', metadata={'use_unique_wiki_id': 'false'})
|
|
self.course_math101_instructor = InstructorFactory(course_key=self.course_math101.id, username='instructor', password='secret')
|
|
self.wiki_math101 = URLPath.create_article(self.wiki, 'math101', title='math101')
|
|
|
|
self.client = Client()
|
|
self.client.login(username='instructor', password='secret')
|
|
|
|
def test_url_tranform(self):
|
|
"""Test that the correct prefix ('/courses/<course_id>') is added to the urls in the wiki."""
|
|
response = self.client.get('/courses/edx/math101/2014/wiki/math101/')
|
|
self.assertIn('/courses/edx/math101/2014/wiki/math101/_edit/', response.content)
|
|
self.assertIn('/courses/edx/math101/2014/wiki/math101/_settings/', response.content)
|