Merge pull request #1546 from GSA/notify-admin-2180

add endpoint for 'recent' notifications
This commit is contained in:
ccostino
2025-02-27 11:16:21 -05:00
committed by GitHub
4 changed files with 143 additions and 0 deletions

View File

@@ -28,6 +28,7 @@ from app.dao.notifications_dao import (
get_notification_with_personalisation,
get_notifications_for_job,
get_notifications_for_service,
get_recent_notifications_for_job,
get_service_ids_with_notifications_on_date,
notifications_not_yet_sent,
sanitize_successful_notification_by_id,
@@ -692,6 +693,17 @@ def test_get_all_notifications_for_job(sample_job):
assert len(notifications_from_db) == 5
def test_get_recent_notifications_for_job(sample_job):
for status in NotificationStatus:
create_notification(template=sample_job.template, job=sample_job, status=status)
notifications_from_db = get_recent_notifications_for_job(
sample_job.service.id, sample_job.id
).items
assert len(notifications_from_db) == 13
def test_get_all_notifications_for_job_by_status(sample_job):
notifications = partial(
get_notifications_for_job, sample_job.service.id, sample_job.id

View File

@@ -488,6 +488,48 @@ def test_get_all_notifications_for_job_in_order_of_job_number(
assert resp["notifications"][2]["job_row_number"] == notification_3.job_row_number
def test_get_recent_notifications_for_job_in_reverse_order_of_job_number(
admin_request, sample_template, mocker
):
mock_s3 = mocker.patch("app.job.rest.get_phone_number_from_s3")
mock_s3.return_value = "15555555555"
mock_s3_personalisation = mocker.patch("app.job.rest.get_personalisation_from_s3")
mock_s3_personalisation.return_value = {}
main_job = create_job(sample_template)
another_job = create_job(sample_template)
count = 1
for status in NotificationStatus:
create_notification(job=main_job, job_row_number=str(count), status=status)
count = count + 1
create_notification(job=another_job)
resp = admin_request.get(
"job.get_recent_notifications_for_service_job",
service_id=main_job.service_id,
job_id=main_job.id,
)
assert len(resp["notifications"]) == 13
assert resp["notifications"][0]["status"] == "virus-scan-failed"
assert resp["notifications"][0]["job_row_number"] == 13
query_string = {"status": "delivered"}
resp = admin_request.get(
"job.get_recent_notifications_for_service_job",
service_id=main_job.service_id,
job_id=main_job.id,
**query_string,
)
assert len(resp["notifications"]) == 1
assert resp["notifications"][0]["status"] == "delivered"
assert resp["notifications"][0]["job_row_number"] == 5
@pytest.mark.parametrize(
"expected_notification_count, status_args",
[