Skip to content

Commit 1c84e3c

Browse files
author
Sasha Romijn
committed
Add additional tests for queue policies and fix unused import.
- Legacy-Id: 16990
1 parent 6b85d5a commit 1c84e3c

3 files changed

Lines changed: 37 additions & 8 deletions

File tree

ietf/doc/tests_review.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
from ietf.person.models import Email, Person
3333
from ietf.review.factories import ReviewRequestFactory, ReviewAssignmentFactory
3434
from ietf.review.models import (ReviewRequest, ReviewerSettings,
35-
ReviewWish, UnavailablePeriod, NextReviewerInTeam)
35+
ReviewWish, NextReviewerInTeam)
3636
from ietf.review.policies import get_reviewer_queue_policy
3737

3838
from ietf.utils.test_utils import TestCase

ietf/review/policies.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ def default_reviewer_rotation_list(self, dont_skip=[]):
3636
"""
3737
Return a list of reviewers in the default reviewer rotation for a policy.
3838
"""
39-
raise NotImplementedError
39+
raise NotImplementedError # pragma: no cover
4040

4141
def update_policy_state_for_assignment(self, assignee_person_id, add_skip=False):
4242
"""
4343
Update the internal state of a policy to reflect an assignment.
4444
"""
45-
raise NotImplementedError
45+
raise NotImplementedError # pragma: no cover
4646

4747
# TODO : Change this field to deal with multiple already assigned reviewers???
4848
def setup_reviewer_field(self, field, review_req):

ietf/review/test_policies.py

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from ietf.doc.factories import WgDraftFactory
66
from ietf.group.factories import ReviewTeamFactory
77
from ietf.group.models import Group, Role
8+
from ietf.person.fields import PersonEmailChoiceField
89
from ietf.person.models import Email
910
from ietf.review.factories import ReviewAssignmentFactory, ReviewRequestFactory
1011
from ietf.review.models import ReviewerSettings, NextReviewerInTeam, UnavailablePeriod, \
@@ -50,17 +51,45 @@ def test_default_reviewer_rotation_list(self):
5051
rotation = policy.default_reviewer_rotation_list()
5152
self.assertNotIn(unavailable_reviewer, rotation)
5253
self.assertEqual(rotation, reviewers[2:] + reviewers[:1])
54+
55+
def test_setup_reviewer_field(self):
56+
team = ReviewTeamFactory(acronym="rotationteam", name="Review Team", list_email="rotationteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
57+
policy = get_reviewer_queue_policy(team)
58+
reviewer_0 = create_person(team, "reviewer", name="Test Reviewer-0", username="testreviewer0")
59+
reviewer_1 = create_person(team, "reviewer", name="Test Reviewer-1", username="testreviewer1")
60+
review_req = ReviewRequestFactory(team=team, type_id='early')
61+
ReviewAssignmentFactory(review_request=review_req, reviewer=reviewer_1.email(), state_id='part-completed')
62+
field = PersonEmailChoiceField(label="Assign Reviewer", empty_label="(None)", required=False)
63+
64+
policy.setup_reviewer_field(field, review_req)
65+
self.assertEqual(field.choices[0], ('', '(None)'))
66+
self.assertEqual(field.choices[1][0], str(reviewer_0.email()))
67+
self.assertEqual(field.choices[2][0], str(reviewer_1.email()))
68+
self.assertEqual(field.choices[1][1], 'Test Reviewer-0: #1')
69+
self.assertEqual(field.choices[2][1], 'Test Reviewer-1: #2; 1 partially complete')
70+
self.assertEqual(field.initial, str(reviewer_1.email()))
5371

5472
def test_recommended_assignment_order(self):
5573
team = ReviewTeamFactory(acronym="rotationteam", name="Review Team", list_email="rotationteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
5674
policy = get_reviewer_queue_policy(team)
75+
reviewer_high = create_person(team, "reviewer", name="Test Reviewer-1-high", username="testreviewerhigh")
76+
reviewer_low = create_person(team, "reviewer", name="Test Reviewer-0-low", username="testreviewerlow")
77+
78+
# reviewer_high appears later in the default rotation, but reviewer_low is the author
79+
doc = WgDraftFactory(group__acronym='mars', rev='01', authors=[reviewer_low])
80+
review_req = ReviewRequestFactory(doc=doc, team=team, type_id='early')
5781

58-
reviewer_high = create_person(team, "reviewer", name="Test Reviewer-high", username="testreviewerhigh")
59-
reviewer_low = create_person(team, "reviewer", name="Test Reviewer-low", username="testreviewerlow")
82+
order = policy.recommended_assignment_order(Email.objects.all(), review_req)
83+
self.assertEqual(order[0][0], str(reviewer_high.email()))
84+
self.assertEqual(order[1][0], str(reviewer_low.email()))
85+
self.assertEqual(order[0][1], 'Test Reviewer-1-high: #2')
86+
self.assertEqual(order[1][1], 'Test Reviewer-0-low: is author of document; #1')
6087

88+
with self.assertRaises(ValueError):
89+
review_req_other_team = ReviewRequestFactory(doc=doc, type_id='early')
90+
policy.recommended_assignment_order(Email.objects.all(), review_req_other_team)
6191

6292
def test_update_policy_state_for_assignment(self):
63-
6493
team = ReviewTeamFactory(acronym="rotationteam", name="Review Team", list_email="rotationteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
6594
policy = get_reviewer_queue_policy(team)
6695
doc = WgDraftFactory()
@@ -158,10 +187,10 @@ def test_determine_ranking(self):
158187
reviewer_low = create_person(team, "reviewer", name="Test Reviewer-low", username="testreviewerlow")
159188

160189
# Trigger author check, AD check and group check
161-
doc = WgDraftFactory(group__acronym='mars', rev='01', authors=[reviewer_low], ad_id=reviewer_low.pk, shepherd=reviewer_low)
190+
doc = WgDraftFactory(group__acronym='mars', rev='01', authors=[reviewer_low], ad=reviewer_low, shepherd=reviewer_low.email())
162191
Role.objects.create(group=doc.group, person=reviewer_low, email=reviewer_low.email(), name_id='advisor')
163192

164-
review_req = ReviewRequestFactory(doc=doc, team=team, type_id='early', state_id='assigned')
193+
review_req = ReviewRequestFactory(doc=doc, team=team, type_id='early')
165194
rotation_list = [reviewer_low, reviewer_high]
166195

167196
# Trigger previous review check and completed review stats - TODO: something something related documents

0 commit comments

Comments
 (0)