mirror of
https://github.com/GSA/notifications-api.git
synced 2026-01-31 23:26:23 -05:00
New endpoint to return a summary of returned letters for the service.
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from freezegun import freeze_time
|
||||
|
||||
from app.dao.returned_letters_dao import insert_or_update_returned_letters
|
||||
from app.dao.returned_letters_dao import insert_or_update_returned_letters, get_returned_letter_summary
|
||||
from app.models import ReturnedLetter
|
||||
from tests.app.db import create_notification, create_notification_history
|
||||
from tests.app.db import create_notification, create_notification_history, create_returned_letter
|
||||
|
||||
|
||||
def test_insert_or_update_returned_letters_inserts(sample_letter_template):
|
||||
@@ -81,3 +81,34 @@ def test_insert_or_update_returned_letters_with_duplicates_in_reference_list(sam
|
||||
assert len(returned_letters) == 2
|
||||
for x in returned_letters:
|
||||
assert x.notification_id in [notification_1.id, notification_2.id]
|
||||
|
||||
|
||||
def test_get_returned_letter_summary(sample_service):
|
||||
now = datetime.utcnow()
|
||||
create_returned_letter(sample_service, reported_at=now)
|
||||
create_returned_letter(sample_service, reported_at=now)
|
||||
|
||||
results = get_returned_letter_summary(sample_service.id)
|
||||
|
||||
assert len(results) == 1
|
||||
|
||||
assert results[0].returned_letter_count == 2
|
||||
assert results[0].reported_at == now
|
||||
|
||||
|
||||
def test_get_returned_letter_summary_orders_by_reported_at(sample_service):
|
||||
now = datetime.utcnow()
|
||||
last_month = datetime.utcnow() - timedelta(days=30)
|
||||
create_returned_letter(sample_service, reported_at=now)
|
||||
create_returned_letter(sample_service, reported_at=now)
|
||||
create_returned_letter(sample_service, reported_at=now)
|
||||
create_returned_letter(sample_service, reported_at=last_month)
|
||||
create_returned_letter(sample_service, reported_at=last_month)
|
||||
|
||||
results = get_returned_letter_summary(sample_service.id)
|
||||
|
||||
assert len(results) == 2
|
||||
assert results[0].reported_at == now
|
||||
assert results[0].returned_letter_count == 3
|
||||
assert results[1].reported_at == last_month
|
||||
assert results[1].returned_letter_count == 2
|
||||
|
||||
@@ -59,7 +59,9 @@ from app.models import (
|
||||
TemplateFolder,
|
||||
LetterBranding,
|
||||
Domain,
|
||||
NotificationHistory
|
||||
NotificationHistory,
|
||||
NOTIFICATION_RETURNED_LETTER,
|
||||
ReturnedLetter
|
||||
)
|
||||
|
||||
|
||||
@@ -940,3 +942,19 @@ def set_up_usage_data(start_date):
|
||||
notifications_sent=15, billable_unit=4, rate=.55, postage='second')
|
||||
|
||||
return org, org_3, service, service_3, service_4, service_sms_only
|
||||
|
||||
|
||||
def create_returned_letter(service, reported_at=None):
|
||||
if not service:
|
||||
service = create_service(service_name='a - with sms and letter')
|
||||
template = create_template(service=service, template_type=LETTER_TYPE)
|
||||
notification = create_notification(template=template, status=NOTIFICATION_RETURNED_LETTER)
|
||||
returned_letter = ReturnedLetter(
|
||||
service_id= service.id,
|
||||
reported_at= reported_at or datetime.utcnow(),
|
||||
notification_id= notification.id
|
||||
)
|
||||
|
||||
db.session.add(returned_letter)
|
||||
db.session.commit()
|
||||
return returned_letter
|
||||
Reference in New Issue
Block a user