|
5 | 5 | from ietf.doc.factories import WgDraftFactory |
6 | 6 | from ietf.group.factories import ReviewTeamFactory |
7 | 7 | from ietf.group.models import Group, Role |
| 8 | +from ietf.person.fields import PersonEmailChoiceField |
8 | 9 | from ietf.person.models import Email |
9 | 10 | from ietf.review.factories import ReviewAssignmentFactory, ReviewRequestFactory |
10 | 11 | from ietf.review.models import ReviewerSettings, NextReviewerInTeam, UnavailablePeriod, \ |
@@ -50,17 +51,45 @@ def test_default_reviewer_rotation_list(self): |
50 | 51 | rotation = policy.default_reviewer_rotation_list() |
51 | 52 | self.assertNotIn(unavailable_reviewer, rotation) |
52 | 53 | 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())) |
53 | 71 |
|
54 | 72 | def test_recommended_assignment_order(self): |
55 | 73 | team = ReviewTeamFactory(acronym="rotationteam", name="Review Team", list_email="rotationteam@ietf.org", parent=Group.objects.get(acronym="farfut")) |
56 | 74 | 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') |
57 | 81 |
|
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') |
60 | 87 |
|
| 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) |
61 | 91 |
|
62 | 92 | def test_update_policy_state_for_assignment(self): |
63 | | - |
64 | 93 | team = ReviewTeamFactory(acronym="rotationteam", name="Review Team", list_email="rotationteam@ietf.org", parent=Group.objects.get(acronym="farfut")) |
65 | 94 | policy = get_reviewer_queue_policy(team) |
66 | 95 | doc = WgDraftFactory() |
@@ -158,10 +187,10 @@ def test_determine_ranking(self): |
158 | 187 | reviewer_low = create_person(team, "reviewer", name="Test Reviewer-low", username="testreviewerlow") |
159 | 188 |
|
160 | 189 | # 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()) |
162 | 191 | Role.objects.create(group=doc.group, person=reviewer_low, email=reviewer_low.email(), name_id='advisor') |
163 | 192 |
|
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') |
165 | 194 | rotation_list = [reviewer_low, reviewer_high] |
166 | 195 |
|
167 | 196 | # Trigger previous review check and completed review stats - TODO: something something related documents |
|
0 commit comments