|
1 | | -# Copyright The IETF Trust 2016-2019, All Rights Reserved |
| 1 | +# Copyright The IETF Trust 2016-2020, All Rights Reserved |
2 | 2 | # -*- coding: utf-8 -*- |
3 | 3 |
|
4 | 4 |
|
|
19 | 19 | from ietf.iesg.models import TelechatDate |
20 | 20 | from ietf.person.models import Person |
21 | 21 | from ietf.review.models import ( ReviewerSettings, UnavailablePeriod, ReviewSecretarySettings, |
22 | | - ReviewTeamSettings ) |
| 22 | + ReviewTeamSettings, NextReviewerInTeam ) |
23 | 23 | from ietf.review.utils import ( |
24 | 24 | suggested_review_requests_for_team, |
25 | 25 | review_assignments_needing_reviewer_reminder, email_reviewer_reminder, |
|
33 | 33 | from ietf.dbtemplate.factories import DBTemplateFactory |
34 | 34 | from ietf.person.factories import PersonFactory, EmailFactory |
35 | 35 | from ietf.doc.factories import DocumentFactory |
36 | | -from ietf.group.factories import RoleFactory, ReviewTeamFactory |
| 36 | +from ietf.group.factories import RoleFactory, ReviewTeamFactory, GroupFactory |
37 | 37 | from ietf.review.factories import ReviewRequestFactory, ReviewerSettingsFactory, ReviewAssignmentFactory |
38 | 38 |
|
39 | 39 | class ReviewTests(TestCase): |
@@ -929,4 +929,58 @@ def test_rotation_queue_update(self): |
929 | 929 | self.assertEqual(r.status_code,302) |
930 | 930 | self.assertEqual(expected_ending_head_of_rotation, policy.default_reviewer_rotation_list()[0]) |
931 | 931 | self.assertMailboxContains(outbox, subject='Last Call assignment', text='Requested by', count=4) |
932 | | - |
| 932 | + |
| 933 | +class ResetNextReviewerInTeamTests(TestCase): |
| 934 | + |
| 935 | + def test_reviewer_overview_navigation(self): |
| 936 | + group = ReviewTeamFactory(settings__reviewer_queue_policy_id = 'RotateAlphabetically') |
| 937 | + url = urlreverse(ietf.group.views.reviewer_overview, kwargs={ 'acronym': group.acronym }) |
| 938 | + |
| 939 | + r = self.client.get(url) |
| 940 | + self.assertEqual(r.status_code, 200) |
| 941 | + q = PyQuery(r.content) |
| 942 | + self.assertFalse(q('#reset_next_reviewer')) |
| 943 | + |
| 944 | + self.client.login(username="secretary", password="secretary+password") |
| 945 | + r = self.client.get(url) |
| 946 | + self.assertEqual(r.status_code, 200) |
| 947 | + q = PyQuery(r.content) |
| 948 | + self.assertTrue(q('#reset_next_reviewer')) |
| 949 | + |
| 950 | + group.reviewteamsettings.reviewer_queue_policy_id='LeastRecentlyUsed' |
| 951 | + group.reviewteamsettings.save() |
| 952 | + |
| 953 | + r = self.client.get(url) |
| 954 | + self.assertEqual(r.status_code, 200) |
| 955 | + q = PyQuery(r.content) |
| 956 | + self.assertFalse(q('#reset_next_reviewer')) |
| 957 | + |
| 958 | + |
| 959 | + def test_reset_next_reviewer(self): |
| 960 | + PersonFactory(user__username='plain') |
| 961 | + for group in (GroupFactory(), ReviewTeamFactory(settings__reviewer_queue_policy_id='LeastRecentlyUsed')): |
| 962 | + url = urlreverse('ietf.group.views.reset_next_reviewer', kwargs=dict(acronym=group.acronym)) |
| 963 | + r = self.client.get(url) |
| 964 | + self.assertEqual(r.status_code, 302) |
| 965 | + self.client.login(username='plain',password='plain+password') |
| 966 | + r = self.client.get(url) |
| 967 | + self.assertEqual(r.status_code, 404) |
| 968 | + self.client.logout() |
| 969 | + |
| 970 | + group = ReviewTeamFactory(settings__reviewer_queue_policy_id='RotateAlphabetically') |
| 971 | + secr = RoleFactory(name_id='secr',group=group).person |
| 972 | + reviewers = RoleFactory.create_batch(10, name_id='reviewer',group=group) |
| 973 | + NextReviewerInTeam.objects.create(team = group, next_reviewer=reviewers[4].person) |
| 974 | + |
| 975 | + target_index = 6 |
| 976 | + url = urlreverse('ietf.group.views.reset_next_reviewer', kwargs=dict(acronym=group.acronym)) |
| 977 | + for user in (secr.user.username, 'secretary'): |
| 978 | + login_testing_unauthorized(self,user,url) |
| 979 | + r = self.client.get(url) |
| 980 | + self.assertEqual(r.status_code,200) |
| 981 | + r = self.client.post(url,{'next_reviewer':reviewers[target_index].person.pk}) |
| 982 | + self.assertEqual(r.status_code,302) |
| 983 | + self.assertEqual(NextReviewerInTeam.objects.get(team=group).next_reviewer, reviewers[target_index].person) |
| 984 | + self.client.logout() |
| 985 | + target_index += 2 |
| 986 | + |
0 commit comments