示例#1
0
    def test_contest_dashboard(self):
        user = User.objects.get(username='******')
        contest = Contest.objects.get(id='c')
        make_user_contest_admin(user, contest)

        self.assertTrue(self.client.login(username='******'))
        self.client.get('/c/c/')
        url = reverse('simpleui_contest_dashboard')

        response = self.client.get(url)
        content = response.content.decode('utf-8')
        self.assertEqual(response.status_code, 200)

        self.assertContains(response, 'Recent activity')
        self.assertContains(response, contest.name + '</h1>')

        submission = Submission.objects.get(id=1)
        problem_name = r'Sum.*yce \(zad1\)'
        problem_score = submission.score.to_int()

        regex = '.*<tr>.*' + problem_name + '.*OK.*' + str(
            problem_score) + '.*</tr>.*'
        regex = re.compile(regex, self.compile_flags)
        self.assertTrue(regex.match(content))

        # This test expects that there is no reply to the message with id=1
        message = Message.objects.get(id=1)
        regex = '.*<tr>.*General.*' + message.topic + '.*QUESTION.*</tr>.*'
        regex = re.compile(regex, self.compile_flags)
        self.assertTrue(regex.match(content))

        regex = '.*problem__solved--low.*0 / 1.*'
        regex = re.compile(regex, self.compile_flags)
        self.assertTrue(regex.match(content))
示例#2
0
    def test_open_contest_dashboard(self):
        user = User.objects.get(username='******')
        contest = Contest.objects.get(id='c')
        make_user_contest_admin(user, contest)

        self.assertTrue(self.client.login(username='******'))
        self.client.get('/c/c/')
        url = reverse('simpleui_contest_dashboard')

        response = self.client.get(url)
        self.assertNotContains(response, 'pointsChart')
示例#3
0
    def test_user_dashboard_full(self):
        user = User.objects.get(username='******')
        for i in range(10):
            c = Contest()
            c.name = 'tmp' + str(i)
            c.controller_name = 'oioioi.contests.controllers.ContestController'
            c.id = 'tmp' + str(i)
            c.save()

            make_user_contest_admin(user, c)

        self.assertTrue(self.client.login(username='******'))
        url = reverse('simpleui_user_dashboard')
        response = self.client.get(url)

        self.assertEqual(response.status_code, 200)
        self.assertContains(response, 'Show all contests')
示例#4
0
    def test_contest_dashboard(self):
        user = User.objects.get(username='******')
        contest = Contest.objects.get(id='c')
        make_user_contest_admin(user, contest)

        self.assertTrue(self.client.login(username='******'))

        change_contest_type(contest)
        self.client.get('/c/c/')

        url = reverse('teacher_contest_dashboard')
        response = self.client.get(url)

        self.assertContains(response, "Pupils")
        self.assertContains(response, "Teachers")

        self.assertContains(response, "Test contest")
示例#5
0
    def test_permissions(self):
        self.assertTrue(self.client.login(username='******'))
        url = reverse('simpleui_user_dashboard')
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        user = User.objects.get(username='******')
        c = Contest.objects.get(id='c')
        make_user_contest_admin(user, c)

        url = reverse('simpleui_user_dashboard')
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        self.assertTrue(self.client.login(username='******'))
        url = reverse('simpleui_user_dashboard')
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
示例#6
0
    def test_contest_dashboard_no_rounds(self):
        user = User.objects.get(username='******')
        contest = Contest.objects.get(id='c')
        make_user_contest_admin(user, contest)

        rounds = Round.objects.filter(contest=contest)
        for rnd in rounds:
            rnd.delete()

        self.assertTrue(self.client.login(username='******'))
        self.client.get('/c/c/')
        url = reverse('simpleui_contest_dashboard')

        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        self.assertContains(response,
                            '<p>There are no rounds in this contest.</p>')
示例#7
0
    def test_contest_dashboard_redirect(self):
        user = User.objects.get(username='******')
        contest = Contest.objects.get(id='c')
        make_user_contest_admin(user, contest)

        self.assertTrue(self.client.login(username='******'))
        response = self.client.get('/c/c/', follow=True)

        self.assertNotContains(response, "Pupils")
        self.assertNotContains(response, "Teachers")

        change_contest_type(contest)
        response = self.client.get('/c/c/', follow=True)

        self.assertContains(response, "Pupils")
        self.assertContains(response, "Teachers")

        self.assertContains(response, "Test contest")
示例#8
0
    def test_user_dashboard(self):
        user = User.objects.get(username='******')
        c = Contest.objects.get(id='c')
        make_user_contest_admin(user, c)

        self.assertTrue(self.client.login(username='******'))
        url = reverse('simpleui_user_dashboard')
        response = self.client.get(url)
        content = response.content.decode('utf-8')

        self.assertEqual(response.status_code, 200)

        regex = '.*">' + c.name + '</a>.*'
        regex = re.compile(regex, self.compile_flags)
        self.assertTrue(regex.match(content))

        self.assertContains(response, '0 submissions')
        self.assertContains(response, '1 submission')
        self.assertContains(response, '0 questions')
        self.assertContains(response, '1 round')
        self.assertContains(response, '1 problem')
        self.assertNotContains(response, '0 users')
        self.assertNotContains(response, 'contest_graph')

        self.assertContains(response, 'User dashboard</h1>')

        change_contest_type(c)
        response = self.client.get(url)

        self.assertContains(response, '0 submissions')
        self.assertContains(response, '1 submission')
        self.assertContains(response, '0 questions')
        self.assertContains(response, '1 round')
        self.assertContains(response, '1 problem')
        self.assertContains(response, '0 users')
        self.assertContains(response, 'contest_graph')

        self.assertContains(response, 'User dashboard</h1>')
示例#9
0
    def test_pupils_site(self):
        self.assertTrue(self.client.login(username='******'))  # teacher

        user = User.objects.get(username='******')
        contest = Contest.objects.get(id='c')
        make_user_contest_admin(user, contest)
        change_contest_type(contest)

        self.client.get('/c/c/')
        url = reverse('show_members', kwargs={'member_type': 'pupil'})
        response = self.client.get(url)

        self.assertContains(response, "Add new group to this contest")
        self.assertContains(response, "Groups")
        self.assertContains(response, "Members")
        self.assertNotContains(response, "Create new group from members below")
        self.assertContains(
            response, "You have not added any group to this contest yet.")

        participant = Participant(contest=contest, user=user)
        participant.save()

        url = reverse('show_members', kwargs={'member_type': 'pupil'})
        response = self.client.get(url)

        self.assertContains(response, "Add new group to this contest")
        self.assertContains(response, "Create new group from members below")
        self.assertContains(
            response, "You have not added any group to this contest yet.")

        group = UserGroup.objects.get(id=1003)
        group.contests.add(contest)
        group.save()

        url = reverse('show_members', kwargs={'member_type': 'pupil'})
        response = self.client.get(url)

        self.assertContains(response, "Add new group to this contest")
        self.assertContains(response, "Create new group from members below")
        self.assertContains(response, "teacher group")
        self.assertContains(response, "Modify group")
        self.assertContains(response, "Test User 3")
        self.assertContains(response, "Remove group from this contest")
        self.assertNotContains(
            response, "You have not added any group to this contest yet.")

        with self.modify_settings(
                INSTALLED_APPS={'remove': 'oioioi.usergroups'}):
            url = reverse('show_members', kwargs={'member_type': 'pupil'})
            response = self.client.get(url)

            self.assertNotContains(response, "Add new group to this contest")
            self.assertNotContains(response,
                                   "Create new group from members below")
            self.assertNotContains(response, "Modify groups")
            self.assertNotContains(
                response, "You have not added any group to this contest yet.")

        groups = UserGroup.objects.all()
        for usergroup in groups:
            usergroup.delete()

        url = reverse('show_members', kwargs={'member_type': 'pupil'})
        response = self.client.get(url)

        self.assertNotContains(response, "Add new group to this contest")
        self.assertContains(response, "Create new group from members below")
        self.assertNotContains(response, "Remove group from this contest")
        self.assertNotContains(
            response, "You have not added any group to this contest yet.")

        participant.delete()

        url = reverse('show_members', kwargs={'member_type': 'pupil'})
        response = self.client.get(url)

        self.assertNotContains(response, "Create new group from members below")