From 5482c03bca51057911219e2185f0adcfd29c3bf9 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Wed, 11 Dec 2019 15:24:31 +0000 Subject: [PATCH] [WIP] --- app/dao/returned_letters_dao.py | 13 +++++++++++++ app/service/rest.py | 9 +++++++++ tests/app/dao/test_returned_letters_dao.py | 18 +++++++++++++++++- tests/app/db.py | 2 +- 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/app/dao/returned_letters_dao.py b/app/dao/returned_letters_dao.py index a79bc5b64..ebeb30055 100644 --- a/app/dao/returned_letters_dao.py +++ b/app/dao/returned_letters_dao.py @@ -54,3 +54,16 @@ def get_returned_letter_summary(service_id): ).order_by( desc(ReturnedLetter.reported_at) ).all() + + + +def fetch_returned_letters(service_id, report_date): + return db.session.query( + ReturnedLetter.notification_id, + ReturnedLetter.reported_at + ).filter( + ReturnedLetter.service_id == service_id, + func.date(ReturnedLetter.reported_at) == report_date + ).order_by( + desc(ReturnedLetter.reported_at) + ).all() diff --git a/app/service/rest.py b/app/service/rest.py index 4c0a0eafa..0d7518c4f 100644 --- a/app/service/rest.py +++ b/app/service/rest.py @@ -952,3 +952,12 @@ def returned_letter_summary(service_id): } for x in results] return jsonify(json_results) + + +@service_blueprint.route('//returned-letters', methods=['GET']) +def get_returned_letters(service_id): + results = get_returned_letter_summary(service_id) + + json_results = [{'returned_letter_count': x.returned_letter_count, 'reported_at': x.reported_at} for x in results] + + return jsonify(json_results) diff --git a/tests/app/dao/test_returned_letters_dao.py b/tests/app/dao/test_returned_letters_dao.py index 126197f1c..ce3677716 100644 --- a/tests/app/dao/test_returned_letters_dao.py +++ b/tests/app/dao/test_returned_letters_dao.py @@ -2,7 +2,10 @@ from datetime import datetime, timedelta, date from freezegun import freeze_time -from app.dao.returned_letters_dao import insert_or_update_returned_letters, get_returned_letter_summary +from app.dao.returned_letters_dao import ( + insert_or_update_returned_letters, get_returned_letter_summary, + fetch_returned_letters +) from app.models import ReturnedLetter from tests.app.db import create_notification, create_notification_history, create_returned_letter @@ -116,3 +119,16 @@ def test_get_returned_letter_summary_orders_by_reported_at(sample_service): assert results[0].returned_letter_count == 3 assert results[1].reported_at == last_month.date() assert results[1].returned_letter_count == 2 + + +def test_fetch_returned_letters(sample_service): + today = datetime.now() + last_month = datetime.now() - timedelta(days=30) + + create_returned_letter(service=sample_service, reported_at=today) + create_returned_letter(service=sample_service, reported_at=today) + create_returned_letter(service=sample_service, reported_at=last_month) + + results = fetch_returned_letters(service_id=sample_service.id, report_date=today.date()) + + assert len(results) == 2 diff --git a/tests/app/db.py b/tests/app/db.py index e940eab07..8959d8660 100644 --- a/tests/app/db.py +++ b/tests/app/db.py @@ -685,7 +685,7 @@ def create_ft_billing(bst_date, rate=0, billable_unit=1, notifications_sent=1, - postage='none', + postage='none' ): data = FactBilling(bst_date=bst_date, service_id=template.service_id,