From 70e4749337abd975e71fb88055dab3d238fbd8c3 Mon Sep 17 00:00:00 2001 From: stvnrlly Date: Tue, 28 Feb 2023 16:00:43 -0500 Subject: [PATCH] more letters cleanup --- app/dao/notifications_dao.py | 2 +- app/utils.py | 5 +- app/v2/notifications/notification_schemas.py | 5 +- tests/app/dao/test_jobs_dao.py | 6 +- .../dao/test_service_data_retention_dao.py | 3 +- tests/app/dao/test_service_permissions_dao.py | 2 +- tests/app/dao/test_services_dao.py | 3 +- tests/app/dao/test_uploads_dao.py | 500 +++++++++--------- tests/app/db.py | 2 +- tests/app/service/test_statistics.py | 2 +- tests/app/template/test_rest.py | 7 +- tests/app/test_model.py | 2 - 12 files changed, 266 insertions(+), 273 deletions(-) diff --git a/app/dao/notifications_dao.py b/app/dao/notifications_dao.py index c173a64df..d560e61eb 100644 --- a/app/dao/notifications_dao.py +++ b/app/dao/notifications_dao.py @@ -439,7 +439,7 @@ def dao_get_notifications_by_recipient_or_reference( except InvalidEmailError: normalised = search_term.lower() - elif notification_type == None: + elif notification_type is None: # This happens when a notification type isn’t provided (this will # happen if a user doesn’t have permission to see the dashboard) # because email addresses and phone numbers will never be stored diff --git a/app/utils.py b/app/utils.py index cdffeebd2..dbd9b3056 100644 --- a/app/utils.py +++ b/app/utils.py @@ -2,10 +2,7 @@ from datetime import datetime, timedelta from os import getenv from flask import url_for -from notifications_utils.template import ( - HTMLEmailTemplate, - SMSMessageTemplate, -) +from notifications_utils.template import HTMLEmailTemplate, SMSMessageTemplate from notifications_utils.timezones import convert_local_timezone_to_utc from sqlalchemy import func diff --git a/app/v2/notifications/notification_schemas.py b/app/v2/notifications/notification_schemas.py index bf4aca221..378a3ce09 100644 --- a/app/v2/notifications/notification_schemas.py +++ b/app/v2/notifications/notification_schemas.py @@ -1,7 +1,4 @@ -from app.models import ( - NOTIFICATION_STATUS_TYPES, - NOTIFICATION_TYPES, -) +from app.models import NOTIFICATION_STATUS_TYPES, NOTIFICATION_TYPES from app.schema_validation.definitions import personalisation, uuid template = { diff --git a/tests/app/dao/test_jobs_dao.py b/tests/app/dao/test_jobs_dao.py index 75aa8614c..d0e65e346 100644 --- a/tests/app/dao/test_jobs_dao.py +++ b/tests/app/dao/test_jobs_dao.py @@ -18,11 +18,7 @@ from app.dao.jobs_dao import ( find_jobs_with_missing_rows, find_missing_row_for_job, ) -from app.models import ( - JOB_STATUS_FINISHED, - SMS_TYPE, - Job, -) +from app.models import JOB_STATUS_FINISHED, SMS_TYPE, Job from tests.app.db import ( create_job, create_notification, diff --git a/tests/app/dao/test_service_data_retention_dao.py b/tests/app/dao/test_service_data_retention_dao.py index c640d06c9..41327c894 100644 --- a/tests/app/dao/test_service_data_retention_dao.py +++ b/tests/app/dao/test_service_data_retention_dao.py @@ -132,8 +132,7 @@ def test_update_service_data_retention_does_not_update_row_if_data_retention_is_ @pytest.mark.parametrize('notification_type, alternate', [('sms', 'email'), - ('email', 'sms'),] - ) + ('email', 'sms')]) def test_fetch_service_data_retention_by_notification_type(sample_service, notification_type, alternate): data_retention = create_service_data_retention(service=sample_service, notification_type=notification_type) create_service_data_retention(service=sample_service, notification_type=alternate) diff --git a/tests/app/dao/test_service_permissions_dao.py b/tests/app/dao/test_service_permissions_dao.py index 6d83dd126..394658583 100644 --- a/tests/app/dao/test_service_permissions_dao.py +++ b/tests/app/dao/test_service_permissions_dao.py @@ -33,7 +33,7 @@ def test_fetch_service_permissions_gets_service_permissions(service_without_perm service_permissions = dao_fetch_service_permissions(service_without_permissions.id) - assert len(service_permissions) == 3 + assert len(service_permissions) == 2 assert all(sp.service_id == service_without_permissions.id for sp in service_permissions) assert all(sp.permission in [INTERNATIONAL_SMS_TYPE, SMS_TYPE] for sp in service_permissions) diff --git a/tests/app/dao/test_services_dao.py b/tests/app/dao/test_services_dao.py index e616cc67c..0be894ef2 100644 --- a/tests/app/dao/test_services_dao.py +++ b/tests/app/dao/test_services_dao.py @@ -431,7 +431,8 @@ def test_dao_fetch_live_services_data(sample_user): {'service_id': mock.ANY, 'service_name': 'second', 'organisation_name': None, 'consent_to_research': None, 'contact_name': 'Test User', 'contact_email': 'notify@digital.cabinet-office.gov.uk', 'contact_mobile': '+12028675309', 'live_date': datetime(2017, 4, 20, 10, 0), 'sms_volume_intent': None, - 'organisation_type': None, 'email_volume_intent': None, 'sms_totals': 0, 'email_totals': 0, 'free_sms_fragment_limit': 300} + 'organisation_type': None, 'email_volume_intent': None, 'sms_totals': 0, 'email_totals': 0, + 'free_sms_fragment_limit': 300} ] diff --git a/tests/app/dao/test_uploads_dao.py b/tests/app/dao/test_uploads_dao.py index ea166638f..ccb40d310 100644 --- a/tests/app/dao/test_uploads_dao.py +++ b/tests/app/dao/test_uploads_dao.py @@ -1,5 +1,6 @@ from datetime import datetime, timedelta +import pytest from freezegun import freeze_time from app.dao.uploads_dao import dao_get_uploads_by_service_id @@ -14,302 +15,311 @@ from tests.app.db import ( ) -# def create_uploaded_letter(letter_template, service, status='created', created_at=None): -# return create_notification( -# template=letter_template, -# to_field="file-name", -# status=status, -# reference="dvla-reference", -# client_reference="file-name", -# one_off=True, -# created_by_id=service.users[0].id, -# created_at=created_at -# ) +def create_uploaded_letter(letter_template, service, status='created', created_at=None): + return create_notification( + template=letter_template, + to_field="file-name", + status=status, + reference="dvla-reference", + client_reference="file-name", + one_off=True, + created_by_id=service.users[0].id, + created_at=created_at + ) -# def create_uploaded_template(service): -# return create_template( -# service, -# template_type=LETTER_TYPE, -# template_name='Pre-compiled PDF', -# subject='Pre-compiled PDF', -# content="", -# hidden=True, -# ) +def create_uploaded_template(service): + return create_template( + service, + template_type=LETTER_TYPE, + template_name='Pre-compiled PDF', + subject='Pre-compiled PDF', + content="", + hidden=True, + ) -# @freeze_time("2020-02-02 09:00") # GMT time -# def test_get_uploads_for_service(sample_template): -# create_service_data_retention(sample_template.service, 'sms', days_of_retention=9) -# contact_list = create_service_contact_list() -# # Jobs created from contact lists should be filtered out -# create_job(sample_template, contact_list_id=contact_list.id) -# job = create_job(sample_template, processing_started=datetime.utcnow()) -# letter_template = create_uploaded_template(sample_template.service) -# letter = create_uploaded_letter(letter_template, sample_template.service) +@pytest.mark.skip(reason="Investigate what remains after removing letters") +@freeze_time("2020-02-02 09:00") # GMT time +def test_get_uploads_for_service(sample_template): + create_service_data_retention(sample_template.service, 'sms', days_of_retention=9) + contact_list = create_service_contact_list() + # Jobs created from contact lists should be filtered out + create_job(sample_template, contact_list_id=contact_list.id) + job = create_job(sample_template, processing_started=datetime.utcnow()) + letter_template = create_uploaded_template(sample_template.service) + letter = create_uploaded_letter(letter_template, sample_template.service) -# other_service = create_service(service_name="other service") -# other_template = create_template(service=other_service) -# other_job = create_job(other_template, processing_started=datetime.utcnow()) -# other_letter_template = create_uploaded_template(other_service) -# create_uploaded_letter(other_letter_template, other_service) + other_service = create_service(service_name="other service") + other_template = create_template(service=other_service) + other_job = create_job(other_template, processing_started=datetime.utcnow()) + other_letter_template = create_uploaded_template(other_service) + create_uploaded_letter(other_letter_template, other_service) -# uploads_from_db = dao_get_uploads_by_service_id(job.service_id).items -# other_uploads_from_db = dao_get_uploads_by_service_id(other_job.service_id).items + uploads_from_db = dao_get_uploads_by_service_id(job.service_id).items + other_uploads_from_db = dao_get_uploads_by_service_id(other_job.service_id).items -# assert len(uploads_from_db) == 2 + assert len(uploads_from_db) == 2 -# assert uploads_from_db[0] == ( -# None, -# 'Uploaded letters', -# 1, -# 'letter', -# None, -# letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), -# None, -# letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), -# None, -# 'letter_day', -# None, -# ) -# assert uploads_from_db[1] == ( -# job.id, -# job.original_file_name, -# job.notification_count, -# 'sms', -# 9, -# job.created_at, -# job.scheduled_for, -# job.processing_started, -# job.job_status, -# "job", -# None, -# ) + assert uploads_from_db[0] == ( + None, + 'Uploaded letters', + 1, + 'letter', + None, + letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), + None, + letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), + None, + 'letter_day', + None, + ) + assert uploads_from_db[1] == ( + job.id, + job.original_file_name, + job.notification_count, + 'sms', + 9, + job.created_at, + job.scheduled_for, + job.processing_started, + job.job_status, + "job", + None, + ) -# assert len(other_uploads_from_db) == 2 -# assert other_uploads_from_db[0] == ( -# None, -# 'Uploaded letters', -# 1, -# 'letter', -# None, -# letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), -# None, -# letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), -# None, -# "letter_day", -# None, -# ) -# assert other_uploads_from_db[1] == (other_job.id, -# other_job.original_file_name, -# other_job.notification_count, -# other_job.template.template_type, -# 7, -# other_job.created_at, -# other_job.scheduled_for, -# other_job.processing_started, -# other_job.job_status, -# "job", -# None) + assert len(other_uploads_from_db) == 2 + assert other_uploads_from_db[0] == ( + None, + 'Uploaded letters', + 1, + 'letter', + None, + letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), + None, + letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), + None, + "letter_day", + None, + ) + assert other_uploads_from_db[1] == (other_job.id, + other_job.original_file_name, + other_job.notification_count, + other_job.template.template_type, + 7, + other_job.created_at, + other_job.scheduled_for, + other_job.processing_started, + other_job.job_status, + "job", + None) -# assert uploads_from_db[1] != other_uploads_from_db[1] + assert uploads_from_db[1] != other_uploads_from_db[1] -# @freeze_time("2020-02-02 18:00") -# def test_get_uploads_for_service_groups_letters(sample_template): -# letter_template = create_uploaded_template(sample_template.service) +@pytest.mark.skip(reason="Investigate what remains after removing letters") +@freeze_time("2020-02-02 18:00") +def test_get_uploads_for_service_groups_letters(sample_template): + letter_template = create_uploaded_template(sample_template.service) -# # Just gets into yesterday’s print run -# create_uploaded_letter(letter_template, sample_template.service, created_at=( -# datetime(2020, 2, 1, 22, 29, 59) -# )) + # Just gets into yesterday’s print run + create_uploaded_letter(letter_template, sample_template.service, created_at=( + datetime(2020, 2, 1, 22, 29, 59) + )) -# # Yesterday but in today’s print run -# create_uploaded_letter(letter_template, sample_template.service, created_at=( -# datetime(2020, 2, 1, 22, 30) -# )) -# # First thing today -# create_uploaded_letter(letter_template, sample_template.service, created_at=( -# datetime(2020, 2, 2, 5, 0) -# )) -# # Just before today’s print deadline -# create_uploaded_letter(letter_template, sample_template.service, created_at=( -# datetime(2020, 2, 2, 22, 29, 59) -# )) + # Yesterday but in today’s print run + create_uploaded_letter(letter_template, sample_template.service, created_at=( + datetime(2020, 2, 1, 22, 30) + )) + # First thing today + create_uploaded_letter(letter_template, sample_template.service, created_at=( + datetime(2020, 2, 2, 5, 0) + )) + # Just before today’s print deadline + create_uploaded_letter(letter_template, sample_template.service, created_at=( + datetime(2020, 2, 2, 22, 29, 59) + )) -# # Just missed today’s print deadline -# create_uploaded_letter(letter_template, sample_template.service, created_at=( -# datetime(2020, 2, 2, 22, 30) -# )) + # Just missed today’s print deadline + create_uploaded_letter(letter_template, sample_template.service, created_at=( + datetime(2020, 2, 2, 22, 30) + )) -# uploads_from_db = dao_get_uploads_by_service_id(sample_template.service_id).items + uploads_from_db = dao_get_uploads_by_service_id(sample_template.service_id).items -# assert [ -# (upload.notification_count, upload.created_at) -# for upload in uploads_from_db -# ] == [ -# (1, datetime(2020, 2, 3, 22, 30)), -# (3, datetime(2020, 2, 2, 22, 30)), -# (1, datetime(2020, 2, 1, 22, 30)), -# ] + assert [ + (upload.notification_count, upload.created_at) + for upload in uploads_from_db + ] == [ + (1, datetime(2020, 2, 3, 22, 30)), + (3, datetime(2020, 2, 2, 22, 30)), + (1, datetime(2020, 2, 1, 22, 30)), + ] -# def test_get_uploads_does_not_return_cancelled_jobs_or_letters(sample_template): -# create_job(sample_template, job_status='scheduled') -# create_job(sample_template, job_status='cancelled') -# letter_template = create_uploaded_template(sample_template.service) -# create_uploaded_letter(letter_template, sample_template.service, status='cancelled') +@pytest.mark.skip(reason="Investigate what remains after removing letters") +def test_get_uploads_does_not_return_cancelled_jobs_or_letters(sample_template): + create_job(sample_template, job_status='scheduled') + create_job(sample_template, job_status='cancelled') + letter_template = create_uploaded_template(sample_template.service) + create_uploaded_letter(letter_template, sample_template.service, status='cancelled') -# assert len(dao_get_uploads_by_service_id(sample_template.service_id).items) == 0 + assert len(dao_get_uploads_by_service_id(sample_template.service_id).items) == 0 -# def test_get_uploads_orders_by_created_at_desc(sample_template): -# letter_template = create_uploaded_template(sample_template.service) +@pytest.mark.skip(reason="Investigate what remains after removing letters") +def test_get_uploads_orders_by_created_at_desc(sample_template): + letter_template = create_uploaded_template(sample_template.service) -# upload_1 = create_job(sample_template, processing_started=datetime.utcnow(), -# job_status=JOB_STATUS_IN_PROGRESS) -# upload_2 = create_job(sample_template, processing_started=datetime.utcnow(), -# job_status=JOB_STATUS_IN_PROGRESS) -# create_uploaded_letter(letter_template, sample_template.service, status='delivered') + upload_1 = create_job(sample_template, processing_started=datetime.utcnow(), + job_status=JOB_STATUS_IN_PROGRESS) + upload_2 = create_job(sample_template, processing_started=datetime.utcnow(), + job_status=JOB_STATUS_IN_PROGRESS) + create_uploaded_letter(letter_template, sample_template.service, status='delivered') -# results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items + results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items -# assert [ -# (result.id, result.upload_type) for result in results -# ] == [ -# (None, 'letter_day'), -# (upload_2.id, 'job'), -# (upload_1.id, 'job'), -# ] + assert [ + (result.id, result.upload_type) for result in results + ] == [ + (None, 'letter_day'), + (upload_2.id, 'job'), + (upload_1.id, 'job'), + ] -# def test_get_uploads_orders_by_processing_started_desc(sample_template): -# days_ago = datetime.utcnow() - timedelta(days=3) -# upload_1 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=1), -# created_at=days_ago, -# job_status=JOB_STATUS_IN_PROGRESS) -# upload_2 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=2), -# created_at=days_ago, -# job_status=JOB_STATUS_IN_PROGRESS) +@pytest.mark.skip(reason="Investigate what remains after removing letters") +def test_get_uploads_orders_by_processing_started_desc(sample_template): + days_ago = datetime.utcnow() - timedelta(days=3) + upload_1 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=1), + created_at=days_ago, + job_status=JOB_STATUS_IN_PROGRESS) + upload_2 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=2), + created_at=days_ago, + job_status=JOB_STATUS_IN_PROGRESS) -# results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items + results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items -# assert len(results) == 2 -# assert results[0].id == upload_1.id -# assert results[1].id == upload_2.id + assert len(results) == 2 + assert results[0].id == upload_1.id + assert results[1].id == upload_2.id -# @freeze_time("2020-10-27 16:15") # GMT time -# def test_get_uploads_orders_by_processing_started_and_created_at_desc(sample_template): -# letter_template = create_uploaded_template(sample_template.service) +@pytest.mark.skip(reason="Investigate what remains after removing letters") +@freeze_time("2020-10-27 16:15") # GMT time +def test_get_uploads_orders_by_processing_started_and_created_at_desc(sample_template): + letter_template = create_uploaded_template(sample_template.service) -# days_ago = datetime.utcnow() - timedelta(days=4) -# create_uploaded_letter(letter_template, service=letter_template.service) -# upload_2 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=1), -# created_at=days_ago, -# job_status=JOB_STATUS_IN_PROGRESS) -# upload_3 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=2), -# created_at=days_ago, -# job_status=JOB_STATUS_IN_PROGRESS) -# create_uploaded_letter(letter_template, service=letter_template.service, -# created_at=datetime.utcnow() - timedelta(days=3)) + days_ago = datetime.utcnow() - timedelta(days=4) + create_uploaded_letter(letter_template, service=letter_template.service) + upload_2 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=1), + created_at=days_ago, + job_status=JOB_STATUS_IN_PROGRESS) + upload_3 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=2), + created_at=days_ago, + job_status=JOB_STATUS_IN_PROGRESS) + create_uploaded_letter(letter_template, service=letter_template.service, + created_at=datetime.utcnow() - timedelta(days=3)) -# results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items + results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items -# assert len(results) == 4 -# assert results[0].id is None -# assert results[1].id == upload_2.id -# assert results[2].id == upload_3.id -# assert results[3].id is None + assert len(results) == 4 + assert results[0].id is None + assert results[1].id == upload_2.id + assert results[2].id == upload_3.id + assert results[3].id is None -# @freeze_time('2020-04-02 14:00') # Few days after the clocks go forward -# def test_get_uploads_only_gets_uploads_within_service_retention_period(sample_template): -# letter_template = create_uploaded_template(sample_template.service) -# create_service_data_retention(sample_template.service, 'sms', days_of_retention=3) +@pytest.mark.skip(reason="Investigate what remains after removing letters") +@freeze_time('2020-04-02 14:00') # Few days after the clocks go forward +def test_get_uploads_only_gets_uploads_within_service_retention_period(sample_template): + letter_template = create_uploaded_template(sample_template.service) + create_service_data_retention(sample_template.service, 'sms', days_of_retention=3) -# days_ago = datetime.utcnow() - timedelta(days=4) -# upload_1 = create_uploaded_letter(letter_template, service=letter_template.service) -# upload_2 = create_job( -# sample_template, processing_started=datetime.utcnow() - timedelta(days=1), created_at=days_ago, -# job_status=JOB_STATUS_IN_PROGRESS -# ) -# # older than custom retention for sms: -# create_job( -# sample_template, processing_started=datetime.utcnow() - timedelta(days=5), created_at=days_ago, -# job_status=JOB_STATUS_IN_PROGRESS -# ) -# upload_3 = create_uploaded_letter( -# letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=3) -# ) + days_ago = datetime.utcnow() - timedelta(days=4) + upload_1 = create_uploaded_letter(letter_template, service=letter_template.service) + upload_2 = create_job( + sample_template, processing_started=datetime.utcnow() - timedelta(days=1), created_at=days_ago, + job_status=JOB_STATUS_IN_PROGRESS + ) + # older than custom retention for sms: + create_job( + sample_template, processing_started=datetime.utcnow() - timedelta(days=5), created_at=days_ago, + job_status=JOB_STATUS_IN_PROGRESS + ) + upload_3 = create_uploaded_letter( + letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=3) + ) -# # older than retention for sms but within letter retention: -# upload_4 = create_uploaded_letter( -# letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=6) -# ) + # older than retention for sms but within letter retention: + upload_4 = create_uploaded_letter( + letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=6) + ) -# # older than default retention for letters: -# create_uploaded_letter( -# letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=8) -# ) + # older than default retention for letters: + create_uploaded_letter( + letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=8) + ) -# results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items + results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items -# assert len(results) == 4 + assert len(results) == 4 -# # Uploaded letters get their `created_at` shifted time of printing -# # 21:30 EST == 16:30 UTC -# assert results[0].created_at == upload_1.created_at.replace(hour=21, minute=30, second=0, microsecond=0) + # Uploaded letters get their `created_at` shifted time of printing + # 21:30 EST == 16:30 UTC + assert results[0].created_at == upload_1.created_at.replace(hour=21, minute=30, second=0, microsecond=0) -# # Jobs keep their original `created_at` -# assert results[1].created_at == upload_2.created_at.replace(hour=14, minute=00, second=0, microsecond=0) + # Jobs keep their original `created_at` + assert results[1].created_at == upload_2.created_at.replace(hour=14, minute=00, second=0, microsecond=0) -# # Still in BST here… -# assert results[2].created_at == upload_3.created_at.replace(hour=21, minute=30, second=0, microsecond=0) + # Still in BST here… + assert results[2].created_at == upload_3.created_at.replace(hour=21, minute=30, second=0, microsecond=0) -# # Now we’ve gone far enough back to be in GMT -# # 17:30 GMT == 17:30 UTC -# assert results[3].created_at == upload_4.created_at.replace(hour=21, minute=30, second=0, microsecond=0) + # Now we’ve gone far enough back to be in GMT + # 17:30 GMT == 17:30 UTC + assert results[3].created_at == upload_4.created_at.replace(hour=21, minute=30, second=0, microsecond=0) -# @freeze_time('2020-02-02 14:00') -# def test_get_uploads_is_paginated(sample_template): -# letter_template = create_uploaded_template(sample_template.service) +@pytest.mark.skip(reason="Investigate what remains after removing letters") +@freeze_time('2020-02-02 14:00') +def test_get_uploads_is_paginated(sample_template): + letter_template = create_uploaded_template(sample_template.service) -# create_uploaded_letter( -# letter_template, sample_template.service, status='delivered', -# created_at=datetime.utcnow() - timedelta(minutes=3), -# ) -# create_job( -# sample_template, processing_started=datetime.utcnow() - timedelta(minutes=2), -# job_status=JOB_STATUS_IN_PROGRESS, -# ) -# create_uploaded_letter( -# letter_template, sample_template.service, status='delivered', -# created_at=datetime.utcnow() - timedelta(minutes=1), -# ) -# create_job( -# sample_template, processing_started=datetime.utcnow(), -# job_status=JOB_STATUS_IN_PROGRESS, -# ) + create_uploaded_letter( + letter_template, sample_template.service, status='delivered', + created_at=datetime.utcnow() - timedelta(minutes=3), + ) + create_job( + sample_template, processing_started=datetime.utcnow() - timedelta(minutes=2), + job_status=JOB_STATUS_IN_PROGRESS, + ) + create_uploaded_letter( + letter_template, sample_template.service, status='delivered', + created_at=datetime.utcnow() - timedelta(minutes=1), + ) + create_job( + sample_template, processing_started=datetime.utcnow(), + job_status=JOB_STATUS_IN_PROGRESS, + ) -# results = dao_get_uploads_by_service_id(sample_template.service_id, page=1, page_size=1) + results = dao_get_uploads_by_service_id(sample_template.service_id, page=1, page_size=1) -# assert results.per_page == 1 -# assert results.total == 3 -# assert len(results.items) == 1 -# assert results.items[0].created_at == datetime.utcnow().replace(hour=22, minute=30, second=0, microsecond=0) -# assert results.items[0].notification_count == 2 -# assert results.items[0].upload_type == 'letter_day' + assert results.per_page == 1 + assert results.total == 3 + assert len(results.items) == 1 + assert results.items[0].created_at == datetime.utcnow().replace(hour=22, minute=30, second=0, microsecond=0) + assert results.items[0].notification_count == 2 + assert results.items[0].upload_type == 'letter_day' -# results = dao_get_uploads_by_service_id(sample_template.service_id, page=2, page_size=1) + results = dao_get_uploads_by_service_id(sample_template.service_id, page=2, page_size=1) -# assert len(results.items) == 1 -# assert results.items[0].created_at == datetime.utcnow().replace(hour=14, minute=0, second=0, microsecond=0) -# assert results.items[0].notification_count == 1 -# assert results.items[0].upload_type == 'job' + assert len(results.items) == 1 + assert results.items[0].created_at == datetime.utcnow().replace(hour=14, minute=0, second=0, microsecond=0) + assert results.items[0].notification_count == 1 + assert results.items[0].upload_type == 'job' -# def test_get_uploads_returns_empty_list(sample_service): -# items = dao_get_uploads_by_service_id(sample_service.id).items -# assert items == [] +@pytest.mark.skip(reason="Investigate what remains after removing letters") +def test_get_uploads_returns_empty_list(sample_service): + items = dao_get_uploads_by_service_id(sample_service.id).items + assert items == [] diff --git a/tests/app/db.py b/tests/app/db.py index 39a829e9f..9ae0bae3a 100644 --- a/tests/app/db.py +++ b/tests/app/db.py @@ -1,6 +1,6 @@ import random import uuid -from datetime import date, datetime, timedelta +from datetime import datetime, timedelta from app import db from app.dao import fact_processing_time_dao diff --git a/tests/app/service/test_statistics.py b/tests/app/service/test_statistics.py index 09edfee0d..59d193757 100644 --- a/tests/app/service/test_statistics.py +++ b/tests/app/service/test_statistics.py @@ -20,7 +20,7 @@ NewStatsRow = collections.namedtuple('row', ('notification_type', 'status', 'key # email_counts and sms_counts are 3-tuple of requested, delivered, failed @pytest.mark.idparametrize('stats, email_counts, sms_counts', { - 'empty': ([], [0, 0, 0], [0, 0, 0], [0, 0, 0]), + 'empty': ([], [0, 0, 0], [0, 0, 0]), 'always_increment_requested': ([ StatsRow('email', 'delivered', 1), StatsRow('email', 'failed', 1) diff --git a/tests/app/template/test_rest.py b/tests/app/template/test_rest.py index 777a20b18..1cda2b10d 100644 --- a/tests/app/template/test_rest.py +++ b/tests/app/template/test_rest.py @@ -9,12 +9,7 @@ from freezegun import freeze_time from notifications_utils import SMS_CHAR_COUNT_LIMIT from app.dao.templates_dao import dao_get_template_by_id, dao_redact_template -from app.models import ( - EMAIL_TYPE, - SMS_TYPE, - Template, - TemplateHistory, -) +from app.models import EMAIL_TYPE, SMS_TYPE, Template, TemplateHistory from tests import create_admin_authorization_header from tests.app.db import create_service, create_template, create_template_folder diff --git a/tests/app/test_model.py b/tests/app/test_model.py index d46d5b46c..e68a35c27 100644 --- a/tests/app/test_model.py +++ b/tests/app/test_model.py @@ -7,10 +7,8 @@ from app.models import ( EMAIL_TYPE, MOBILE_TYPE, NOTIFICATION_CREATED, - NOTIFICATION_DELIVERED, NOTIFICATION_FAILED, NOTIFICATION_PENDING, - NOTIFICATION_SENDING, NOTIFICATION_STATUS_TYPES_FAILED, NOTIFICATION_TECHNICAL_FAILURE, SMS_TYPE,