from django.test.utils import override_settings
from django.urls import reverse
from django.utils import timezone
from oioioi.base.tests import TestCase
from oioioi.globalmessage.models import GlobalMessage
[docs]class TestVisible(TestCase):
[docs] def setUp(self):
self.now = timezone.now()
[docs] def test_visibility_dates(self):
day = timezone.timedelta(days=1)
tomorrow = self.now + day
yesterday = self.now - day
tests = (
(None, None, True, 'test_no_dates'),
(tomorrow, None, False, 'test_start_in_future'),
(yesterday, None, True, 'test_start_in_past'),
(None, tomorrow, True, 'test_end_in_future'),
(None, yesterday, False, 'test_end_in_past'),
(yesterday, tomorrow, True, 'test_start_past_end_future'),
(yesterday - day, yesterday, False, 'test_start_past_end_past'),
(tomorrow, tomorrow + day, False, 'test_start_future_end_future'),
)
for test in tests:
self.check_dates(*test)
[docs] def check_dates(self, start, end, expected, desc):
msg = GlobalMessage(
message='Test',
enabled=True,
start=start,
end=end,
)
actual = msg.visible(self.now)
self.assertEqual(actual, expected, desc)
[docs] def test_disabled(self):
msg = GlobalMessage(
message='Test',
enabled=False,
start=None,
end=None,
)
self.assertFalse(msg.visible(self.now))
[docs]class TestOnPage(TestCase):
[docs] fixtures = ['test_users.json']
[docs] def setUp(self):
self.msg = GlobalMessage.get_singleton()
self.msg.message = 'Example global message'
self.msg.enabled = True
self.msg.save()
@override_settings(DEFAULT_GLOBAL_PORTAL_AS_MAIN_PAGE=False)
[docs] def test_visible_on_user_pages(self):
url = reverse('index')
self.assertTrue(self.client.login(username='test_user'))
response = self.client.get(url)
self.assertContains(response, self.msg.message)
[docs] def test_visible_on_admin_pages(self):
url = reverse('admin:index')
self.assertTrue(self.client.login(username='test_admin'))
response = self.client.get(url)
self.assertContains(response, self.msg.message)