test_tab.py 2.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
"""
Tests for wiki views.
"""

from django.conf import settings
from django.test.client import RequestFactory

from courseware.tabs import get_course_tab_list
from student.tests.factories import AdminFactory, UserFactory
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory


class WikiTabTestCase(ModuleStoreTestCase):
    """Test cases for Wiki Tab."""

    def setUp(self):
        super(WikiTabTestCase, self).setUp()
        self.course = CourseFactory.create()
        self.instructor = AdminFactory.create()
        self.user = UserFactory()

    def get_wiki_tab(self, user, course):
        """Returns true if the "Wiki" tab is shown."""
        request = RequestFactory().request()
        request.user = user
        all_tabs = get_course_tab_list(request, course)
        wiki_tabs = [tab for tab in all_tabs if tab.name == 'Wiki']
        return wiki_tabs[0] if len(wiki_tabs) == 1 else None

    def test_wiki_enabled_and_public(self):
        """
        Test wiki tab when Enabled setting is True and the wiki is open to
        the public.
        """
        settings.WIKI_ENABLED = True
        self.course.allow_public_wiki_access = True
        self.assertIsNotNone(self.get_wiki_tab(self.user, self.course))

    def test_wiki_enabled_and_not_public(self):
        """
        Test wiki when it is enabled but not open to the public
        """
        settings.WIKI_ENABLED = True
        self.course.allow_public_wiki_access = False
        self.assertIsNone(self.get_wiki_tab(self.user, self.course))
        self.assertIsNotNone(self.get_wiki_tab(self.instructor, self.course))

    def test_wiki_enabled_false(self):
        """Test wiki tab when Enabled setting is False"""
        settings.WIKI_ENABLED = False
        self.assertIsNone(self.get_wiki_tab(self.user, self.course))
        self.assertIsNone(self.get_wiki_tab(self.instructor, self.course))

    def test_wiki_visibility(self):
        """Test toggling of visibility of wiki tab"""
        settings.WIKI_ENABLED = True
        self.course.allow_public_wiki_access = True
        wiki_tab = self.get_wiki_tab(self.user, self.course)
        self.assertIsNotNone(wiki_tab)
        self.assertTrue(wiki_tab.is_hideable)
        wiki_tab.is_hidden = True
        self.assertTrue(wiki_tab['is_hidden'])
        wiki_tab['is_hidden'] = False
        self.assertFalse(wiki_tab.is_hidden)