|
23 | 23 | review_assignments_needing_reviewer_reminder, email_reviewer_reminder, |
24 | 24 | review_assignments_needing_secretary_reminder, email_secretary_reminder, |
25 | 25 | reviewer_rotation_list, |
26 | | -) |
| 26 | + email_unavaibility_period_ending_reminder) |
27 | 27 | from ietf.name.models import ReviewResultName, ReviewRequestStateName, ReviewAssignmentStateName |
28 | 28 | import ietf.group.views |
29 | 29 | from ietf.utils.mail import outbox, empty_outbox |
@@ -493,6 +493,58 @@ def test_review_reminders(self): |
493 | 493 | self.assertEqual(len(outbox), 1) |
494 | 494 | self.assertTrue(review_req.doc.name in outbox[0].get_payload(decode=True).decode("utf-8")) |
495 | 495 |
|
| 496 | + def test_email_unavaibility_period_ending_reminder(self): |
| 497 | + review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="review", |
| 498 | + list_email="reviewteam@ietf.org") |
| 499 | + reviewer = RoleFactory(group=review_team, person__user__username='reviewer', |
| 500 | + person__user__email='reviewer@example.com', |
| 501 | + person__name='Some Reviewer', name_id='reviewer') |
| 502 | + secretary = RoleFactory(group=review_team, person__user__username='reviewsecretary', |
| 503 | + person__user__email='reviewsecretary@example.com', name_id='secr') |
| 504 | + empty_outbox() |
| 505 | + today = datetime.date.today() |
| 506 | + UnavailablePeriod.objects.create( |
| 507 | + team=review_team, |
| 508 | + person=reviewer.person, |
| 509 | + start_date=today - datetime.timedelta(days=40), |
| 510 | + end_date=today + datetime.timedelta(days=3), |
| 511 | + availability="unavailable", |
| 512 | + ) |
| 513 | + UnavailablePeriod.objects.create( |
| 514 | + team=review_team, |
| 515 | + person=reviewer.person, |
| 516 | + # This object should be ignored, length is too short |
| 517 | + start_date=today - datetime.timedelta(days=20), |
| 518 | + end_date=today + datetime.timedelta(days=3), |
| 519 | + availability="unavailable", |
| 520 | + ) |
| 521 | + UnavailablePeriod.objects.create( |
| 522 | + team=review_team, |
| 523 | + person=reviewer.person, |
| 524 | + start_date=today - datetime.timedelta(days=40), |
| 525 | + # This object should be ignored, end date is too far away |
| 526 | + end_date=today + datetime.timedelta(days=4), |
| 527 | + availability="unavailable", |
| 528 | + ) |
| 529 | + UnavailablePeriod.objects.create( |
| 530 | + team=review_team, |
| 531 | + person=reviewer.person, |
| 532 | + # This object should be ignored, end date is too close |
| 533 | + start_date=today - datetime.timedelta(days=40), |
| 534 | + end_date=today + datetime.timedelta(days=2), |
| 535 | + availability="unavailable", |
| 536 | + ) |
| 537 | + log = email_unavaibility_period_ending_reminder(today) |
| 538 | + |
| 539 | + self.assertEqual(len(outbox), 1) |
| 540 | + self.assertTrue(reviewer.person.email_address() in outbox[0]["To"]) |
| 541 | + self.assertTrue(secretary.person.email_address() in outbox[0]["To"]) |
| 542 | + message = outbox[0].get_payload(decode=True).decode("utf-8") |
| 543 | + self.assertTrue(reviewer.person.name in message) |
| 544 | + self.assertTrue(review_team.acronym in message) |
| 545 | + self.assertEqual(len(log), 1) |
| 546 | + self.assertTrue(reviewer.person.name in log[0]) |
| 547 | + self.assertTrue(review_team.acronym in log[0]) |
496 | 548 |
|
497 | 549 |
|
498 | 550 | class BulkAssignmentTests(TestCase): |
|
0 commit comments