tests.py 2.09 KB
Newer Older
1 2
# -*- coding: utf-8 -*-
""" Tests for setting and displaying the site status message. """
3
import ddt
4
import unittest
5

6 7 8 9
from django.test import TestCase
from django.core.cache import cache
from django.conf import settings
from opaque_keys.edx.locations import CourseLocator
10

11 12
from .status import get_site_status_msg
from .models import GlobalStatusMessage, CourseMessage
13 14


15
@ddt.ddt
16 17 18 19
class TestStatus(TestCase):
    """Test that the get_site_status_msg function does the right thing"""

    def setUp(self):
20
        super(TestStatus, self).setUp()
21 22 23 24 25 26 27 28 29 30 31 32 33 34
        # Clear the cache between test runs.
        cache.clear()
        self.course_key = CourseLocator(org='TestOrg', course='TestCourse', run='TestRun')

    @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
    @ddt.data(
        ("Test global message", "Test course message"),
        (u" Ŧɇsŧ sŧȺŧᵾs", u"Ṫëṡẗ ċöüṛṡë ṡẗäẗüṡ "),
        (u"", u"Ṫëṡẗ ċöüṛṡë ṡẗäẗüṡ "),
        (u" Ŧɇsŧ sŧȺŧᵾs", u""),
    )
    @ddt.unpack
    def test_get_site_status_msg(self, test_global_message, test_course_message):
        """Test status messages in a variety of situations."""
35

36 37 38
        # When we don't have any data set.
        self.assertEqual(get_site_status_msg(None), None)
        self.assertEqual(get_site_status_msg(self.course_key), None)
39

40 41
        msg = GlobalStatusMessage.objects.create(message=test_global_message, enabled=True)
        msg.save()
42

43
        self.assertEqual(get_site_status_msg(None), test_global_message)
44

45 46 47 48 49 50 51 52
        course_msg = CourseMessage.objects.create(
            global_message=msg, message=test_course_message, course_key=self.course_key
        )
        course_msg.save()
        self.assertEqual(
            get_site_status_msg(self.course_key),
            u"{} <br /> {}".format(test_global_message, test_course_message)
        )
53

54 55
        msg = GlobalStatusMessage.objects.create(message="", enabled=False)
        msg.save()
56

57 58
        self.assertEqual(get_site_status_msg(None), None)
        self.assertEqual(get_site_status_msg(self.course_key), None)