Esempio n. 1
0
class OutsideEncodingPeriodTest(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)

    def test_redirection_to_current_exam_session(self):
        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):
        self.session_exam_calendar.delete()
        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)
        messages = list(response.context['messages'])
        self.assertEqual(len(messages), 1)
        self.assertEqual(messages[0].tags, 'warning')
        self.assertEqual(messages[0].message, _('score_encoding_period_not_open'))

    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, _('outside_scores_encodings_period_latest_session') % (1, end_date_str))
        self.assertEqual(messages[1].tags, 'warning')
        start_date_str = ac.start_date.strftime(date_format)
        self.assertEqual(messages[1].message, _('outside_scores_encodings_period_closest_session') % (2, start_date_str))
Esempio n. 2
0
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
              })
Esempio n. 3
0
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})