From 88288d380c0a6cb0bdcf3ac0ca983ce27ed7ce6e Mon Sep 17 00:00:00 2001 From: kiritofeng Date: Wed, 5 May 2021 23:23:02 -0400 Subject: [PATCH] Add tests for contest curators --- judge/models/tests/test_contest.py | 33 ++++++++++++++++++++++++++++++ judge/models/tests/util.py | 2 ++ 2 files changed, 35 insertions(+) diff --git a/judge/models/tests/test_contest.py b/judge/models/tests/test_contest.py index adfbc37fe0..fdfebffe76 100644 --- a/judge/models/tests/test_contest.py +++ b/judge/models/tests/test_contest.py @@ -35,6 +35,10 @@ def setUpTestData(self): 'normal_before_window': create_user( username='normal_before_window', ), + 'non_staff_author': create_user( + username='non_staff_author', + is_staff=False, + ), }) _now = timezone.now() @@ -59,6 +63,16 @@ def setUpTestData(self): ''', ) + self.hidden_scoreboard_non_staff_author = create_contest( + key='non_staff_author', + start_time=_now - timezone.timedelta(days=1), + end_time=_now + timezone.timedelta(days=100), + is_visible=True, + scoreboard_visibility=Contest.SCOREBOARD_AFTER_CONTEST, + authors=('non_staff_author',), + curators=('staff_contest_edit_own',), + ) + self.contest_hidden_scoreboard_contest = create_contest( key='contest_scoreboard', start_time=_now - timezone.timedelta(days=10), @@ -275,6 +289,25 @@ def test_hidden_scoreboard_contest_methods(self): } self._test_object_methods_with_users(self.hidden_scoreboard_contest, data) + def test_contest_hidden_scoreboard_non_staff_author_contest_methods(self): + data = { + 'staff_contest_edit_own': { + 'can_see_own_scoreboard': self.assertTrue, + 'can_see_full_scoreboard': self.assertTrue, + 'is_accessible_by': self.assertTrue, + 'is_editable_by': self.assertTrue, + 'is_in_contest': self.assertFalse, + }, + 'non_staff_author': { + 'can_see_own_scoreboard': self.assertTrue, + 'can_see_full_scoreboard': self.assertTrue, + 'is_accessible_by': self.assertTrue, + 'is_editable_by': self.assertFalse, + 'is_in_contest': self.assertFalse, + }, + } + self._test_object_methods_with_users(self.hidden_scoreboard_non_staff_author, data) + def test_contest_hidden_scoreboard_contest_methods(self): data = { 'normal_before_window': { diff --git a/judge/models/tests/util.py b/judge/models/tests/util.py index e447f52f4e..b911aa8a5a 100644 --- a/judge/models/tests/util.py +++ b/judge/models/tests/util.py @@ -188,6 +188,8 @@ class CreateContest(CreateModel): model = Contest m2m_fields = { 'authors': (Profile, 'user__username'), + 'curators': (Profile, 'user__username'), + 'testers': (Profile, 'user__username'), 'problems': (Problem, 'code'), 'view_contest_scoreboard': (Profile, 'user__username'), 'rate_exclude': (Profile, 'user__username'),