Skip to content

Commit 48f72f2

Browse files
author
Sasha Romijn
committed
Add tests for default reviewer rotation list.
- Legacy-Id: 16984
1 parent b5a31c3 commit 48f72f2

1 file changed

Lines changed: 40 additions & 2 deletions

File tree

ietf/review/test_policies.py

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from ietf.doc.factories import WgDraftFactory
66
from ietf.group.factories import ReviewTeamFactory
7-
from ietf.group.models import Group
7+
from ietf.group.models import Group, Role
88
from ietf.review.factories import ReviewAssignmentFactory
99
from ietf.review.models import ReviewerSettings, NextReviewerInTeam, UnavailablePeriod, \
1010
ReviewRequest
@@ -14,7 +14,45 @@
1414

1515

1616
class RotateWithSkipReviewerPolicyTests(TestCase):
17-
def test_possibly_advance_next_reviewer_for_team(self):
17+
def test_default_reviewer_rotation_list(self):
18+
team = ReviewTeamFactory(acronym="rotationteam", name="Review Team", list_email="rotationteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
19+
policy = get_reviewer_queue_policy(team)
20+
21+
reviewers = [
22+
create_person(team, "reviewer", name="Test Reviewer{}".format(i), username="testreviewer{}".format(i))
23+
for i in range(5)
24+
]
25+
reviewers_pks = [r.pk for r in reviewers]
26+
27+
# This reviewer should never be included.
28+
unavailable_reviewer = create_person(team, "reviewer", name="unavailable reviewer", username="unavailablereviewer")
29+
UnavailablePeriod.objects.create(
30+
team=team,
31+
person=unavailable_reviewer,
32+
start_date='2000-01-01',
33+
end_date='3000-01-01',
34+
availability=UnavailablePeriod.AVAILABILITY_CHOICES[0],
35+
)
36+
37+
# Default policy without a NextReviewerInTeam
38+
rotation = policy.default_reviewer_rotation_list(skip_unavailable=True)
39+
self.assertNotIn(unavailable_reviewer.pk, rotation)
40+
self.assertEqual(rotation, reviewers_pks)
41+
42+
# Policy with a current NextReviewerInTeam
43+
NextReviewerInTeam.objects.create(team=team, next_reviewer=reviewers[3])
44+
rotation = policy.default_reviewer_rotation_list(skip_unavailable=True)
45+
self.assertNotIn(unavailable_reviewer.pk, rotation)
46+
self.assertEqual(rotation, reviewers_pks[3:] + reviewers_pks[:3])
47+
48+
# Policy with a NextReviewerInTeam that has left the team.
49+
Role.objects.get(person=reviewers[1]).delete()
50+
NextReviewerInTeam.objects.filter(team=team).update(next_reviewer=reviewers[1])
51+
rotation = policy.default_reviewer_rotation_list(skip_unavailable=True)
52+
self.assertNotIn(unavailable_reviewer.pk, rotation)
53+
self.assertEqual(rotation, reviewers_pks[2:] + reviewers_pks[:1])
54+
55+
def test_update_policy_state_for_assignment(self):
1856

1957
team = ReviewTeamFactory(acronym="rotationteam", name="Review Team", list_email="rotationteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
2058
policy = get_reviewer_queue_policy(team)

0 commit comments

Comments
 (0)