Added a banner that students can use to dismiss the "you have failed reverification" message. Also, removed unused code, wired up the sidebar for design
74 lines
3.0 KiB
Python
74 lines
3.0 KiB
Python
"""
|
|
Tests for Reverification models
|
|
"""
|
|
from datetime import timedelta, datetime
|
|
import pytz
|
|
|
|
from django.core.exceptions import ValidationError
|
|
from django.test import TestCase
|
|
from django.test.utils import override_settings
|
|
|
|
from courseware.tests.tests import TEST_DATA_MONGO_MODULESTORE
|
|
from reverification.models import MidcourseReverificationWindow
|
|
from reverification.tests.factories import MidcourseReverificationWindowFactory
|
|
from xmodule.modulestore.tests.factories import CourseFactory
|
|
|
|
|
|
@override_settings(MODULESTORE=TEST_DATA_MONGO_MODULESTORE)
|
|
class TestMidcourseReverificationWindow(TestCase):
|
|
""" Tests for MidcourseReverificationWindow objects """
|
|
def setUp(self):
|
|
course = CourseFactory.create()
|
|
self.course_id = course.id
|
|
|
|
def test_window_open_for_course(self):
|
|
# Should return False if no windows exist for a course
|
|
self.assertFalse(MidcourseReverificationWindow.window_open_for_course(self.course_id))
|
|
|
|
# Should return False if a window exists, but it's not in the current timeframe
|
|
MidcourseReverificationWindowFactory(
|
|
course_id=self.course_id,
|
|
start_date=datetime.now(pytz.utc) - timedelta(days=10),
|
|
end_date=datetime.now(pytz.utc) - timedelta(days=5)
|
|
)
|
|
self.assertFalse(MidcourseReverificationWindow.window_open_for_course(self.course_id))
|
|
|
|
# Should return True if a non-expired window exists
|
|
MidcourseReverificationWindowFactory(
|
|
course_id=self.course_id,
|
|
start_date=datetime.now(pytz.utc) - timedelta(days=3),
|
|
end_date=datetime.now(pytz.utc) + timedelta(days=3)
|
|
)
|
|
self.assertTrue(MidcourseReverificationWindow.window_open_for_course(self.course_id))
|
|
|
|
def test_get_window(self):
|
|
# if no window exists, returns None
|
|
self.assertIsNone(MidcourseReverificationWindow.get_window(self.course_id, datetime.now(pytz.utc)))
|
|
|
|
# we should get the expected window otherwise
|
|
window_valid = MidcourseReverificationWindowFactory(
|
|
course_id=self.course_id,
|
|
start_date=datetime.now(pytz.utc) - timedelta(days=3),
|
|
end_date=datetime.now(pytz.utc) + timedelta(days=3)
|
|
)
|
|
self.assertEquals(
|
|
window_valid,
|
|
MidcourseReverificationWindow.get_window(self.course_id, datetime.now(pytz.utc))
|
|
)
|
|
|
|
def test_no_overlapping_windows(self):
|
|
window_valid = MidcourseReverificationWindow(
|
|
course_id=self.course_id,
|
|
start_date=datetime.now(pytz.utc) - timedelta(days=3),
|
|
end_date=datetime.now(pytz.utc) + timedelta(days=3)
|
|
)
|
|
window_valid.save()
|
|
|
|
with self.assertRaises(ValidationError):
|
|
window_invalid = MidcourseReverificationWindow(
|
|
course_id=self.course_id,
|
|
start_date=datetime.now(pytz.utc) - timedelta(days=2),
|
|
end_date=datetime.now(pytz.utc) + timedelta(days=4)
|
|
)
|
|
window_invalid.save()
|