def test_find_deliberation_date(self): SessionExamCalendarFactory(academic_calendar=self.academic_calendar_4, number_session=number_session.ONE) offer_yr = OfferYearFactory(academic_year=self.current_academic_yr) offer_year_cal = OfferYearCalendarFactory( academic_calendar=self.academic_calendar_4, offer_year=offer_yr) self.assertEqual( session_exam_calendar.find_deliberation_date( number_session.ONE, offer_year_cal.offer_year), datetime.date(self.current_academic_yr.year + 1, 1, 1)) self.assertIsNone( session_exam_calendar.find_deliberation_date( number_session.TWO, offer_year_cal.offer_year))
def setUp(self): self.user = User.objects.create_user(username='******', password='******') add_permission(self.user, "can_access_scoreencoding") self.client.force_login(self.user) # Create context out of range self.academic_year = _get_academic_year(2017) self.academic_calendar = AcademicCalendarFactory(title="Submission of score encoding - 1", academic_year=self.academic_year, reference=academic_calendar_type.SCORES_EXAM_SUBMISSION) self.session_exam_calendar = SessionExamCalendarFactory(academic_calendar=self.academic_calendar, number_session=number_session.ONE) # Mock academic_year / session_exam_calendar in order to be decouple test from system time self.mock_academic_year( current_academic_year=self.academic_year, starting_academic_year=self.academic_year, ) self.mock_session_exam_calendar(current_session_exam=None)
class OutsideEncodingPeriodTest(AcademicYearMockMixin, SessionExamCalendarMockMixin, TestCase): def setUp(self): self.user = User.objects.create_user(username='******', password='******') add_permission(self.user, "can_access_scoreencoding") self.client.force_login(self.user) # Create context out of range self.academic_year = _get_academic_year(2017) self.academic_calendar = AcademicCalendarFactory(title="Submission of score encoding - 1", academic_year=self.academic_year, reference=academic_calendar_type.SCORES_EXAM_SUBMISSION) self.session_exam_calendar = SessionExamCalendarFactory(academic_calendar=self.academic_calendar, number_session=number_session.ONE) # Mock academic_year / session_exam_calendar in order to be decouple test from system time self.mock_academic_year( current_academic_year=self.academic_year, starting_academic_year=self.academic_year, ) self.mock_session_exam_calendar(current_session_exam=None) def test_redirection_to_current_exam_session(self): self.mock_session_exam_calendar(current_session_exam=self.session_exam_calendar) url = reverse('outside_scores_encodings_period') response = self.client.get(url) self.assertRedirects(response, "%s?next=%s" % (reverse('scores_encoding'), reverse('outside_scores_encodings_period'))) # Redirection def test_redirection_to_outside_encoding_period(self): url = reverse('scores_encoding') response = self.client.get(url) self.assertRedirects(response, "%s?next=%s" % (reverse('outside_scores_encodings_period'), reverse('scores_encoding'))) # Redirection def test_message_score_encoding_not_open(self): self.session_exam_calendar.delete() url = reverse('outside_scores_encodings_period') response = self.client.get(url) self.assertEqual(response.status_code, 200) messages = list(response.context['messages']) self.assertEqual(len(messages), 1) self.assertEqual(messages[0].tags, 'warning') self.assertEqual(messages[0].message, _("The period of scores' encoding is not opened")) def test_multiple_messages_outside_encoding_period(self): date_format = str(_('date_format')) # Submission of score encoding - 1 [Two day before today] self.academic_calendar.end_date = timezone.now() - timedelta(days=2) self.academic_calendar.start_date = timezone.now() - timedelta(days=20) self.academic_calendar.save() # Create submission of score encoding - 2 [Start in 100 days] ac = AcademicCalendarFactory.build(title="Submission of score encoding - 2", academic_year=self.academic_year, start_date=self.academic_calendar.end_date + timedelta(days=100), end_date=self.academic_calendar.end_date + timedelta(days=130), reference=academic_calendar_type.SCORES_EXAM_SUBMISSION) ac.save() SessionExamCalendarFactory(academic_calendar=ac, number_session=number_session.TWO) url = reverse('scores_encoding') response = self.client.get(url, follow=True) messages = list(response.context['messages']) self.assertEqual(len(messages), 2) self.assertEqual(messages[0].tags, 'warning') end_date_str = self.academic_calendar.end_date.strftime(date_format) self.assertEqual(messages[0].message, _("The period of scores' encoding %(session_number)s is closed since %(str_date)s") % {'session_number': 1, 'str_date': end_date_str}) self.assertEqual(messages[1].tags, 'warning') start_date_str = ac.start_date.strftime(date_format) self.assertEqual(messages[1].message, _("The period of scores' encoding %(session_number)s will be open %(str_date)s") % {'session_number': 2, 'str_date': start_date_str})