|
1 | | -# Copyright The IETF Trust 2016-2020, All Rights Reserved |
| 1 | +# Copyright The IETF Trust 2016-2023, All Rights Reserved |
2 | 2 | # -*- coding: utf-8 -*- |
3 | 3 |
|
4 | 4 |
|
@@ -355,6 +355,23 @@ def test_assign_reviewer(self): |
355 | 355 | request_events = review_req.reviewrequestdocevent_set.all() |
356 | 356 | self.assertEqual(request_events.count(), 0) |
357 | 357 |
|
| 358 | + def test_assign_reviewer_after_reject(self): |
| 359 | + doc = WgDraftFactory() |
| 360 | + review_team = ReviewTeamFactory() |
| 361 | + rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer') |
| 362 | + reviewer_email = Email.objects.get(person__user__username="reviewer") |
| 363 | + RoleFactory(group=review_team,person__user__username='reviewsecretary',name_id='secr') |
| 364 | + review_req = ReviewRequestFactory(team=review_team,doc=doc) |
| 365 | + ReviewAssignmentFactory(review_request=review_req, state_id='rejected', reviewer=rev_role.person.email_set.first()) |
| 366 | + |
| 367 | + url = urlreverse('ietf.doc.views_review.assign_reviewer', kwargs={ "name": doc.name, "request_id": review_req.pk }) |
| 368 | + login_testing_unauthorized(self, "reviewsecretary", url) |
| 369 | + r = self.client.get(url) |
| 370 | + self.assertEqual(r.status_code, 200) |
| 371 | + q = PyQuery(r.content) |
| 372 | + reviewer_label = q("option[value=\"{}\"]".format(reviewer_email.address)).text().lower() |
| 373 | + self.assertIn("rejected review of document before", reviewer_label) |
| 374 | + |
358 | 375 | def test_previously_reviewed_replaced_doc(self): |
359 | 376 | review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="review", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut")) |
360 | 377 | rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',person__name='Some Reviewer',name_id='reviewer') |
@@ -569,6 +586,29 @@ def test_reject_reviewer_assignment(self): |
569 | 586 | self.assertContains(r, '<button type="submit"') |
570 | 587 |
|
571 | 588 |
|
| 589 | + def test_accept_reviewer_assignment_after_reject(self): |
| 590 | + doc = WgDraftFactory() |
| 591 | + review_team = ReviewTeamFactory() |
| 592 | + rev_role = RoleFactory(group=review_team,name_id='reviewer') |
| 593 | + review_req = ReviewRequestFactory(doc=doc,team=review_team) |
| 594 | + assignment = ReviewAssignmentFactory(review_request=review_req, state_id='rejected', reviewer=rev_role.person.email_set.first()) |
| 595 | + |
| 596 | + url = urlreverse('ietf.doc.views_review.review_request', kwargs={ "name": doc.name, "request_id": review_req.pk }) |
| 597 | + username = assignment.reviewer.person.user.username |
| 598 | + self.client.login(username=username, password=username + "+password") |
| 599 | + r = self.client.get(url) |
| 600 | + self.assertEqual(r.status_code, 200) |
| 601 | + q = PyQuery(r.content) |
| 602 | + d = q('.reviewer-assignment-not-accepted') |
| 603 | + self.assertTrue(d("[name=action][value=accept]")) |
| 604 | + |
| 605 | + # accept |
| 606 | + r = self.client.post(url, { "action": "accept" }) |
| 607 | + self.assertEqual(r.status_code, 302) |
| 608 | + |
| 609 | + assignment = reload_db_objects(assignment) |
| 610 | + self.assertEqual(assignment.state_id, "accepted") |
| 611 | + |
572 | 612 | def make_test_mbox_tarball(self, review_req): |
573 | 613 | mbox_path = os.path.join(self.review_dir, "testmbox.tar.gz") |
574 | 614 | with tarfile.open(mbox_path, "w:gz") as tar: |
|
0 commit comments