Modified navigation tests to use MixedModulestore Updated factories to find editable modulestore Updated test_submitting_problems Updated test_tabs.py Updated test_view_authentication Updated test_views Updated courseware/tests/tests.py Updated test_masquerade Updated test_module_render Pylint fixes Updated video and word cloud tests Updated course wiki tests Updated license and open_ended tests. One open_ended test still failing due to Mako initialization issues Updated staticbook Updated django_comment_client tests Updated instructor tests Updated instructor task tests Updated external_auth tests Updated course_groups
101 lines
4.5 KiB
Python
101 lines
4.5 KiB
Python
from django.core.urlresolvers import reverse
|
|
from django.test.utils import override_settings
|
|
|
|
from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
|
|
|
|
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
|
|
|
from helpers import LoginEnrollmentTestCase, check_for_get_code
|
|
from courseware.tests.modulestore_config import TEST_DATA_MIXED_MODULESTORE
|
|
|
|
|
|
@override_settings(MODULESTORE=TEST_DATA_MIXED_MODULESTORE)
|
|
class TestNavigation(ModuleStoreTestCase, LoginEnrollmentTestCase):
|
|
"""
|
|
Check that navigation state is saved properly.
|
|
"""
|
|
|
|
STUDENT_INFO = [('view@test.com', 'foo'), ('view2@test.com', 'foo')]
|
|
|
|
def setUp(self):
|
|
|
|
self.test_course = CourseFactory.create(display_name='Robot_Sub_Course')
|
|
self.course = CourseFactory.create(display_name='Robot_Super_Course')
|
|
self.chapter0 = ItemFactory.create(parent_location=self.course.location,
|
|
display_name='Overview')
|
|
self.chapter9 = ItemFactory.create(parent_location=self.course.location,
|
|
display_name='factory_chapter')
|
|
self.section0 = ItemFactory.create(parent_location=self.chapter0.location,
|
|
display_name='Welcome')
|
|
self.section9 = ItemFactory.create(parent_location=self.chapter9.location,
|
|
display_name='factory_section')
|
|
|
|
# Create student accounts and activate them.
|
|
for i in range(len(self.STUDENT_INFO)):
|
|
email, password = self.STUDENT_INFO[i]
|
|
username = 'u{0}'.format(i)
|
|
self.create_account(username, email, password)
|
|
self.activate_user(email)
|
|
|
|
def test_redirects_first_time(self):
|
|
"""
|
|
Verify that the first time we click on the courseware tab we are
|
|
redirected to the 'Welcome' section.
|
|
"""
|
|
email, password = self.STUDENT_INFO[0]
|
|
self.login(email, password)
|
|
self.enroll(self.course, True)
|
|
self.enroll(self.test_course, True)
|
|
|
|
resp = self.client.get(reverse('courseware',
|
|
kwargs={'course_id': self.course.id}))
|
|
|
|
self.assertRedirects(resp, reverse(
|
|
'courseware_section', kwargs={'course_id': self.course.id,
|
|
'chapter': 'Overview',
|
|
'section': 'Welcome'}))
|
|
|
|
def test_redirects_second_time(self):
|
|
"""
|
|
Verify the accordion remembers we've already visited the Welcome section
|
|
and redirects correpondingly.
|
|
"""
|
|
email, password = self.STUDENT_INFO[0]
|
|
self.login(email, password)
|
|
self.enroll(self.course, True)
|
|
self.enroll(self.test_course, True)
|
|
|
|
self.client.get(reverse('courseware_section', kwargs={'course_id': self.course.id,
|
|
'chapter': 'Overview',
|
|
'section': 'Welcome'}))
|
|
|
|
resp = self.client.get(reverse('courseware',
|
|
kwargs={'course_id': self.course.id}))
|
|
|
|
self.assertRedirects(resp, reverse('courseware_chapter',
|
|
kwargs={'course_id': self.course.id,
|
|
'chapter': 'Overview'}))
|
|
|
|
def test_accordion_state(self):
|
|
"""
|
|
Verify the accordion remembers which chapter you were last viewing.
|
|
"""
|
|
email, password = self.STUDENT_INFO[0]
|
|
self.login(email, password)
|
|
self.enroll(self.course, True)
|
|
self.enroll(self.test_course, True)
|
|
|
|
# Now we directly navigate to a section in a chapter other than 'Overview'.
|
|
check_for_get_code(self, 200, reverse('courseware_section',
|
|
kwargs={'course_id': self.course.id,
|
|
'chapter': 'factory_chapter',
|
|
'section': 'factory_section'}))
|
|
|
|
# And now hitting the courseware tab should redirect to 'factory_chapter'
|
|
resp = self.client.get(reverse('courseware',
|
|
kwargs={'course_id': self.course.id}))
|
|
|
|
self.assertRedirects(resp, reverse('courseware_chapter',
|
|
kwargs={'course_id': self.course.id,
|
|
'chapter': 'factory_chapter'}))
|