From fe24af7342889381eef132e10bd0a06aa0c76d01 Mon Sep 17 00:00:00 2001 From: stvnrlly Date: Mon, 27 Feb 2023 15:34:43 -0500 Subject: [PATCH] remove letters from TEMPLATE_TYPES --- app/dao/fact_billing_dao.py | 24 +- app/dao/fact_notification_status_dao.py | 5 - app/models.py | 2 +- tests/app/celery/test_nightly_tasks.py | 11 - tests/app/celery/test_reporting_tasks.py | 52 +- tests/app/conftest.py | 26 - .../notification_dao/test_notification_dao.py | 92 +--- ...t_notification_dao_delete_notifications.py | 4 +- tests/app/dao/test_fact_billing_dao.py | 41 +- .../dao/test_fact_notification_status_dao.py | 106 ++-- tests/app/dao/test_jobs_dao.py | 31 +- tests/app/dao/test_services_dao.py | 54 +- tests/app/dao/test_templates_dao.py | 1 - tests/app/dao/test_uploads_dao.py | 490 +++++++++--------- .../test_process_notification.py | 8 +- tests/app/notifications/test_rest.py | 5 +- tests/app/platform_stats/test_rest.py | 4 +- tests/app/service/test_rest.py | 35 +- tests/app/template/test_rest.py | 11 +- tests/app/test_model.py | 7 +- .../notifications/test_get_notifications.py | 5 +- tests/app/v2/template/test_post_template.py | 10 +- tests/app/v2/templates/test_get_templates.py | 2 +- .../v2/templates/test_templates_schemas.py | 2 +- 24 files changed, 380 insertions(+), 648 deletions(-) diff --git a/app/dao/fact_billing_dao.py b/app/dao/fact_billing_dao.py index b8d99fae9..9dd26f703 100644 --- a/app/dao/fact_billing_dao.py +++ b/app/dao/fact_billing_dao.py @@ -863,16 +863,16 @@ def fetch_daily_volumes_for_platform(start_date, end_date): (FactBilling.notification_type == EMAIL_TYPE, FactBilling.notifications_sent) ], else_=0 )).label('email_totals'), - func.sum(case( - [ - (FactBilling.notification_type == LETTER_TYPE, FactBilling.notifications_sent) - ], else_=0 - )).label('letter_totals'), - func.sum(case( - [ - (FactBilling.notification_type == LETTER_TYPE, FactBilling.billable_units) - ], else_=0 - )).label('letter_sheet_totals') + # func.sum(case( + # [ + # (FactBilling.notification_type == LETTER_TYPE, FactBilling.notifications_sent) + # ], else_=0 + # )).label('letter_totals'), + # func.sum(case( + # [ + # (FactBilling.notification_type == LETTER_TYPE, FactBilling.billable_units) + # ], else_=0 + # )).label('letter_sheet_totals') ).filter( FactBilling.local_date >= start_date, FactBilling.local_date <= end_date @@ -888,8 +888,8 @@ def fetch_daily_volumes_for_platform(start_date, end_date): func.sum( daily_volume_stats.c.sms_fragments_times_multiplier).label('sms_chargeable_units'), func.sum(daily_volume_stats.c.email_totals).label('email_totals'), - func.sum(daily_volume_stats.c.letter_totals).label('letter_totals'), - func.sum(daily_volume_stats.c.letter_sheet_totals).label('letter_sheet_totals') + # func.sum(daily_volume_stats.c.letter_totals).label('letter_totals'), + # func.sum(daily_volume_stats.c.letter_sheet_totals).label('letter_sheet_totals') ).group_by( daily_volume_stats.c.local_date ).order_by( diff --git a/app/dao/fact_notification_status_dao.py b/app/dao/fact_notification_status_dao.py index b8586b240..e4ab55203 100644 --- a/app/dao/fact_notification_status_dao.py +++ b/app/dao/fact_notification_status_dao.py @@ -419,11 +419,6 @@ def get_total_notifications_for_date_range(start_date, end_date): (FactNotificationStatus.notification_type == 'sms', FactNotificationStatus.notification_count) ], else_=0)).label('sms'), - func.sum(case( - [ - (FactNotificationStatus.notification_type == 'letter', FactNotificationStatus.notification_count) - ], - else_=0)).label('letters'), ).filter( FactNotificationStatus.key_type != KEY_TYPE_TEST, ).group_by( diff --git a/app/models.py b/app/models.py index c8b090795..b2f6dbfe2 100644 --- a/app/models.py +++ b/app/models.py @@ -46,7 +46,7 @@ SMS_TYPE = 'sms' EMAIL_TYPE = 'email' LETTER_TYPE = 'letter' -TEMPLATE_TYPES = [SMS_TYPE, EMAIL_TYPE, LETTER_TYPE] +TEMPLATE_TYPES = [SMS_TYPE, EMAIL_TYPE] NOTIFICATION_TYPES = [SMS_TYPE, EMAIL_TYPE] template_types = db.Enum(*TEMPLATE_TYPES, name='template_type') diff --git a/tests/app/celery/test_nightly_tasks.py b/tests/app/celery/test_nightly_tasks.py index dcfa1d3e4..0599799e4 100644 --- a/tests/app/celery/test_nightly_tasks.py +++ b/tests/app/celery/test_nightly_tasks.py @@ -125,17 +125,6 @@ def test_delete_email_notifications_older_than_retentions_calls_child_task(notif mocked_notifications.assert_called_once_with('email') -def test_should_not_update_status_of_letter_notifications(client, sample_letter_template): - created_at = datetime.utcnow() - timedelta(days=5) - not1 = create_notification(template=sample_letter_template, status='sending', created_at=created_at) - not2 = create_notification(template=sample_letter_template, status='created', created_at=created_at) - - timeout_notifications() - - assert not1.status == 'sending' - assert not2.status == 'created' - - @freeze_time("2021-12-13T10:00") def test_timeout_notifications(mocker, sample_notification): mock_update = mocker.patch('app.celery.nightly_tasks.check_and_queue_callback_task') diff --git a/tests/app/celery/test_reporting_tasks.py b/tests/app/celery/test_reporting_tasks.py index 30309fcc1..926c3d415 100644 --- a/tests/app/celery/test_reporting_tasks.py +++ b/tests/app/celery/test_reporting_tasks.py @@ -18,7 +18,6 @@ from app.models import ( KEY_TYPE_NORMAL, KEY_TYPE_TEAM, KEY_TYPE_TEST, - LETTER_TYPE, NOTIFICATION_TYPES, SMS_TYPE, FactBilling, @@ -112,7 +111,7 @@ def test_create_nightly_notification_status_triggers_relevant_tasks( @pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_create_nightly_billing_for_day_checks_history( sample_service, - sample_letter_template, + sample_sms_template, mocker ): yesterday = datetime.now() - timedelta(days=1) @@ -120,13 +119,13 @@ def test_create_nightly_billing_for_day_checks_history( create_notification( created_at=yesterday, - template=sample_letter_template, + template=sample_sms_template, status='sending', ) create_notification_history( created_at=yesterday, - template=sample_letter_template, + template=sample_sms_template, status='delivered', ) @@ -138,7 +137,7 @@ def test_create_nightly_billing_for_day_checks_history( assert len(records) == 1 record = records[0] - assert record.notification_type == LETTER_TYPE + assert record.notification_type == SMS_TYPE assert record.notifications_sent == 2 @@ -431,7 +430,6 @@ def test_create_nightly_notification_status_for_service_and_day(notify_db_sessio first_template = create_template(service=first_service) second_service = create_service(service_name='second Service') second_template = create_template(service=second_service, template_type='email') - third_template = create_template(service=second_service, template_type='letter') process_day = date.today() - timedelta(days=5) with freeze_time(datetime.combine(process_day, time.max)): @@ -439,25 +437,23 @@ def test_create_nightly_notification_status_for_service_and_day(notify_db_sessio create_notification(template=second_template, status='temporary-failure') # team API key notifications are included - create_notification(template=third_template, status='sending', key_type=KEY_TYPE_TEAM) + create_notification(template=second_template, status='sending', key_type=KEY_TYPE_TEAM) # test notifications are ignored - create_notification(template=third_template, status='sending', key_type=KEY_TYPE_TEST) + create_notification(template=second_template, status='sending', key_type=KEY_TYPE_TEST) # historical notifications are included - create_notification_history(template=third_template, status='delivered') + create_notification_history(template=second_template, status='delivered') # these created notifications from a different day get ignored with freeze_time(datetime.combine(date.today() - timedelta(days=4), time.max)): create_notification(template=first_template) create_notification_history(template=second_template) - create_notification(template=third_template) assert len(FactNotificationStatus.query.all()) == 0 create_nightly_notification_status_for_service_and_day(str(process_day), first_service.id, 'sms') create_nightly_notification_status_for_service_and_day(str(process_day), second_service.id, 'email') - create_nightly_notification_status_for_service_and_day(str(process_day), second_service.id, 'letter') new_fact_data = FactNotificationStatus.query.order_by( FactNotificationStatus.notification_type, @@ -466,7 +462,23 @@ def test_create_nightly_notification_status_for_service_and_day(notify_db_sessio assert len(new_fact_data) == 4 - email_failure_row = new_fact_data[0] + email_delivered_row = new_fact_data[0] + assert email_delivered_row.template_id == second_template.id + assert email_delivered_row.service_id == second_service.id + assert email_delivered_row.notification_type == 'email' + assert email_delivered_row.notification_status == 'delivered' + assert email_delivered_row.notification_count == 1 + assert email_delivered_row.key_type == KEY_TYPE_NORMAL + + email_sending_row = new_fact_data[1] + assert email_sending_row.template_id == second_template.id + assert email_sending_row.service_id == second_service.id + assert email_sending_row.notification_type == 'email' + assert email_sending_row.notification_status == 'sending' + assert email_sending_row.notification_count == 1 + assert email_sending_row.key_type == KEY_TYPE_TEAM + + email_failure_row = new_fact_data[2] assert email_failure_row.local_date == process_day assert email_failure_row.template_id == second_template.id assert email_failure_row.service_id == second_service.id @@ -476,22 +488,6 @@ def test_create_nightly_notification_status_for_service_and_day(notify_db_sessio assert email_failure_row.notification_count == 1 assert email_failure_row.key_type == KEY_TYPE_NORMAL - letter_delivered_row = new_fact_data[1] - assert letter_delivered_row.template_id == third_template.id - assert letter_delivered_row.service_id == second_service.id - assert letter_delivered_row.notification_type == 'letter' - assert letter_delivered_row.notification_status == 'delivered' - assert letter_delivered_row.notification_count == 1 - assert letter_delivered_row.key_type == KEY_TYPE_NORMAL - - letter_sending_row = new_fact_data[2] - assert letter_sending_row.template_id == third_template.id - assert letter_sending_row.service_id == second_service.id - assert letter_sending_row.notification_type == 'letter' - assert letter_sending_row.notification_status == 'sending' - assert letter_sending_row.notification_count == 1 - assert letter_sending_row.key_type == KEY_TYPE_TEAM - sms_delivered_row = new_fact_data[3] assert sms_delivered_row.template_id == first_template.id assert sms_delivered_row.service_id == first_service.id diff --git a/tests/app/conftest.py b/tests/app/conftest.py index 26438a12f..4524b6b48 100644 --- a/tests/app/conftest.py +++ b/tests/app/conftest.py @@ -23,7 +23,6 @@ from app.models import ( KEY_TYPE_NORMAL, KEY_TYPE_TEAM, KEY_TYPE_TEST, - LETTER_TYPE, NOTIFICATION_STATUS_TYPES_COMPLETED, SERVICE_PERMISSION_TYPES, SMS_TYPE, @@ -297,17 +296,6 @@ def sample_template_without_email_permission(notify_db_session): return create_template(service, template_type=EMAIL_TYPE) -@pytest.fixture -def sample_letter_template(sample_service_full_permissions): - return create_template(sample_service_full_permissions, template_type=LETTER_TYPE) - - -@pytest.fixture -def sample_trial_letter_template(sample_service_full_permissions): - sample_service_full_permissions.restricted = True - return create_template(sample_service_full_permissions, template_type=LETTER_TYPE) - - @pytest.fixture(scope='function') def sample_email_template_with_placeholders(sample_service): return create_template( @@ -466,20 +454,6 @@ def sample_notification(notify_db_session): return notification -@pytest.fixture -def sample_letter_notification(sample_letter_template): - address = { - 'address_line_1': 'A1', - 'address_line_2': 'A2', - 'address_line_3': 'A3', - 'address_line_4': 'A4', - 'address_line_5': 'A5', - 'address_line_6': 'A6', - 'postcode': 'A_POST' - } - return create_notification(sample_letter_template, reference='foo', personalisation=address) - - @pytest.fixture(scope='function') def sample_email_notification(notify_db_session): created_at = datetime.utcnow() diff --git a/tests/app/dao/notification_dao/test_notification_dao.py b/tests/app/dao/notification_dao/test_notification_dao.py index 729ab25f7..34aac0466 100644 --- a/tests/app/dao/notification_dao/test_notification_dao.py +++ b/tests/app/dao/notification_dao/test_notification_dao.py @@ -661,18 +661,6 @@ def test_dao_timeout_notifications_only_updates_for_older_notifications(sample_t assert Notification.query.get(pending.id).status == 'pending' -def test_dao_timeout_notifications_doesnt_affect_letters(sample_letter_template): - with freeze_time(datetime.utcnow() - timedelta(minutes=2)): - sending = create_notification(sample_letter_template, status='sending') - pending = create_notification(sample_letter_template, status='pending') - - temporary_failure_notifications = dao_timeout_notifications(datetime.utcnow()) - - assert len(temporary_failure_notifications) == 0 - assert Notification.query.get(sending.id).status == 'sending' - assert Notification.query.get(pending.id).status == 'pending' - - def test_should_return_notifications_excluding_jobs_by_default(sample_template, sample_job, sample_api_key): create_notification(sample_template, job=sample_job) without_job = create_notification(sample_template, api_key=sample_api_key) @@ -1175,7 +1163,6 @@ def test_dao_get_notifications_by_reference( service = create_service() sms_template = create_template(service=service) email_template = create_template(service=service, template_type='email') - letter_template = create_template(service=service, template_type='letter') sms = create_notification( template=sms_template, to_field='07711111111', @@ -1188,18 +1175,11 @@ def test_dao_get_notifications_by_reference( normalised_to='077@example.com', client_reference='77bB', ) - letter = create_notification( - template=letter_template, - to_field='123 Example Street\nXX1X 1XX', - normalised_to='123examplestreetxx1x1xx', - client_reference='77bB', - ) results = dao_get_notifications_by_recipient_or_reference(service.id, '77') - assert len(results.items) == 3 - assert results.items[0].id == letter.id - assert results.items[1].id == email.id - assert results.items[2].id == sms.id + assert len(results.items) == 2 + assert results.items[0].id == email.id + assert results.items[1].id == sms.id # If notification_type isn’t specified then we can’t normalise the # phone number to 4477… so this query will only find the email sent @@ -1238,21 +1218,6 @@ def test_dao_get_notifications_by_reference( results = dao_get_notifications_by_recipient_or_reference(service.id, 'aA', notification_type='email') assert len(results.items) == 0 - results = dao_get_notifications_by_recipient_or_reference(service.id, 'aA', notification_type='letter') - assert len(results.items) == 0 - - results = dao_get_notifications_by_recipient_or_reference(service.id, '123') - assert len(results.items) == 1 - assert results.items[0].id == letter.id - - results = dao_get_notifications_by_recipient_or_reference(service.id, 'xX 1x1 Xx') - assert len(results.items) == 1 - assert results.items[0].id == letter.id - - results = dao_get_notifications_by_recipient_or_reference(service.id, '77', notification_type='letter') - assert len(results.items) == 1 - assert results.items[0].id == letter.id - def test_dao_get_notifications_by_to_field_filters_status(sample_template): notification = create_notification( @@ -1429,48 +1394,33 @@ def test_dao_update_notifications_by_reference_returns_zero_when_no_notification assert updated_history_count == 0 -def test_dao_update_notifications_by_reference_set_returned_letter_status(sample_letter_template): - notification = create_notification(template=sample_letter_template, reference='ref') - - updated_count, updated_history_count = dao_update_notifications_by_reference( - references=['ref'], - update_dict={"status": "returned-letter"} - ) - - assert updated_count == 1 - assert updated_history_count == 0 - updated_notification = Notification.query.get(notification.id) - assert updated_notification.status == 'returned-letter' - assert updated_notification.updated_at <= datetime.utcnow() - - def test_dao_update_notifications_by_reference_updates_history_when_one_of_two_notifications_exists( - sample_letter_template + sample_template ): - notification1 = create_notification_history(template=sample_letter_template, reference='ref1') - notification2 = create_notification(template=sample_letter_template, reference='ref2') + notification1 = create_notification_history(template=sample_template, reference='ref1') + notification2 = create_notification(template=sample_template, reference='ref2') updated_count, updated_history_count = dao_update_notifications_by_reference( references=['ref1', 'ref2'], - update_dict={"status": "returned-letter"} + update_dict={"status": "delivered"} ) assert updated_count == 1 assert updated_history_count == 1 - assert Notification.query.get(notification2.id).status == 'returned-letter' - assert NotificationHistory.query.get(notification1.id).status == 'returned-letter' + assert Notification.query.get(notification2.id).status == 'delivered' + assert NotificationHistory.query.get(notification1.id).status == 'delivered' -def test_dao_get_notification_by_reference_with_one_match_returns_notification(sample_letter_template): - create_notification(template=sample_letter_template, reference='REF1') +def test_dao_get_notification_by_reference_with_one_match_returns_notification(sample_template): + create_notification(template=sample_template, reference='REF1') notification = dao_get_notification_by_reference('REF1') assert notification.reference == 'REF1' -def test_dao_get_notification_by_reference_with_multiple_matches_raises_error(sample_letter_template): - create_notification(template=sample_letter_template, reference='REF1') - create_notification(template=sample_letter_template, reference='REF1') +def test_dao_get_notification_by_reference_with_multiple_matches_raises_error(sample_template): + create_notification(template=sample_template, reference='REF1') + create_notification(template=sample_template, reference='REF1') with pytest.raises(SQLAlchemyError): dao_get_notification_by_reference('REF1') @@ -1482,19 +1432,19 @@ def test_dao_get_notification_by_reference_with_no_matches_raises_error(notify_d def test_dao_get_notification_history_by_reference_with_one_match_returns_notification( - sample_letter_template + sample_template ): - create_notification(template=sample_letter_template, reference='REF1') + create_notification(template=sample_template, reference='REF1') notification = dao_get_notification_history_by_reference('REF1') assert notification.reference == 'REF1' def test_dao_get_notification_history_by_reference_with_multiple_matches_raises_error( - sample_letter_template + sample_template ): - create_notification(template=sample_letter_template, reference='REF1') - create_notification(template=sample_letter_template, reference='REF1') + create_notification(template=sample_template, reference='REF1') + create_notification(template=sample_template, reference='REF1') with pytest.raises(SQLAlchemyError): dao_get_notification_history_by_reference('REF1') @@ -1506,7 +1456,7 @@ def test_dao_get_notification_history_by_reference_with_no_matches_raises_error( @pytest.mark.parametrize("notification_type", - ["letter", "email", "sms"] + ["email", "sms"] ) def test_notifications_not_yet_sent(sample_service, notification_type): older_than = 4 # number of seconds the notification can not be older than @@ -1525,7 +1475,7 @@ def test_notifications_not_yet_sent(sample_service, notification_type): @pytest.mark.parametrize("notification_type", - ["letter", "email", "sms"] + ["email", "sms"] ) def test_notifications_not_yet_sent_return_no_rows(sample_service, notification_type): older_than = 5 # number of seconds the notification can not be older than diff --git a/tests/app/dao/notification_dao/test_notification_dao_delete_notifications.py b/tests/app/dao/notification_dao/test_notification_dao_delete_notifications.py index ed2aaf02b..6e940ef0a 100644 --- a/tests/app/dao/notification_dao/test_notification_dao_delete_notifications.py +++ b/tests/app/dao/notification_dao/test_notification_dao_delete_notifications.py @@ -87,14 +87,12 @@ def test_move_notifications_only_moves_for_given_notification_type(sample_servic sms_template = create_template(sample_service, 'sms') email_template = create_template(sample_service, 'email') - letter_template = create_template(sample_service, 'letter') create_notification(sms_template, created_at=one_second_before) create_notification(email_template, created_at=one_second_before) - create_notification(letter_template, created_at=one_second_before) result = move_notifications_to_notification_history('sms', sample_service.id, delete_time) assert result == 1 - assert {x.notification_type for x in Notification.query} == {'email', 'letter'} + assert {x.notification_type for x in Notification.query} == {'email'} assert NotificationHistory.query.one().notification_type == 'sms' diff --git a/tests/app/dao/test_fact_billing_dao.py b/tests/app/dao/test_fact_billing_dao.py index 9331712f3..c5c39d600 100644 --- a/tests/app/dao/test_fact_billing_dao.py +++ b/tests/app/dao/test_fact_billing_dao.py @@ -88,32 +88,28 @@ def test_fetch_billing_data_for_today_includes_data_with_the_right_key_type(noti assert results[0].notifications_sent == 2 -@pytest.mark.parametrize("notification_type", ["email", "sms", "letter"]) +@pytest.mark.parametrize("notification_type", ["email", "sms"]) def test_fetch_billing_data_for_day_only_calls_query_for_permission_type(notify_db_session, notification_type): service = create_service(service_permissions=[notification_type]) email_template = create_template(service=service, template_type="email") sms_template = create_template(service=service, template_type="sms") - letter_template = create_template(service=service, template_type="letter") create_notification(template=email_template, status='delivered') create_notification(template=sms_template, status='delivered') - create_notification(template=letter_template, status='delivered') today = convert_utc_to_local_timezone(datetime.utcnow()) results = fetch_billing_data_for_day(process_day=today.date(), check_permissions=True) assert len(results) == 1 -@pytest.mark.parametrize("notification_type", ["email", "sms", "letter"]) +@pytest.mark.parametrize("notification_type", ["email", "sms"]) def test_fetch_billing_data_for_day_only_calls_query_for_all_channels(notify_db_session, notification_type): service = create_service(service_permissions=[notification_type]) email_template = create_template(service=service, template_type="email") sms_template = create_template(service=service, template_type="sms") - letter_template = create_template(service=service, template_type="letter") create_notification(template=email_template, status='delivered') create_notification(template=sms_template, status='delivered') - create_notification(template=letter_template, status='delivered') today = convert_utc_to_local_timezone(datetime.utcnow()) results = fetch_billing_data_for_day(process_day=today.date(), check_permissions=False) - assert len(results) == 3 + assert len(results) == 2 @freeze_time('2018-04-02 01:20:00') @@ -191,15 +187,12 @@ def test_fetch_billing_data_for_day_is_grouped_by_rate_mulitplier(notify_db_sess def test_fetch_billing_data_for_day_is_grouped_by_international(notify_db_session): service = create_service() sms_template = create_template(service=service) - letter_template = create_template(template_type='letter', service=service) create_notification(template=sms_template, status='delivered', international=True) create_notification(template=sms_template, status='delivered', international=False) - create_notification(template=letter_template, status='delivered', international=True) - create_notification(template=letter_template, status='delivered', international=False) today = convert_utc_to_local_timezone(datetime.utcnow()) results = fetch_billing_data_for_day(today.date()) - assert len(results) == 4 + assert len(results) == 2 assert all(result.notifications_sent == 1 for result in results) @@ -207,19 +200,17 @@ def test_fetch_billing_data_for_day_is_grouped_by_notification_type(notify_db_se service = create_service() sms_template = create_template(service=service, template_type='sms') email_template = create_template(service=service, template_type='email') - letter_template = create_template(service=service, template_type='letter') create_notification(template=sms_template, status='delivered') create_notification(template=sms_template, status='delivered') create_notification(template=sms_template, status='delivered') create_notification(template=email_template, status='delivered') create_notification(template=email_template, status='delivered') - create_notification(template=letter_template, status='delivered') today = convert_utc_to_local_timezone(datetime.utcnow()) results = fetch_billing_data_for_day(today.date()) - assert len(results) == 3 + assert len(results) == 2 notification_types = [x.notification_type for x in results] - assert len(notification_types) == 3 + assert len(notification_types) == 2 def test_fetch_billing_data_for_day_returns_empty_list(notify_db_session): @@ -266,21 +257,17 @@ def test_fetch_billing_data_for_day_bills_correctly_for_status(notify_db_session service = create_service() sms_template = create_template(service=service, template_type='sms') email_template = create_template(service=service, template_type='email') - letter_template = create_template(service=service, template_type='letter') for status in NOTIFICATION_STATUS_TYPES: create_notification(template=sms_template, status=status) create_notification(template=email_template, status=status) - create_notification(template=letter_template, status=status) today = convert_utc_to_local_timezone(datetime.utcnow()) results = fetch_billing_data_for_day(process_day=today.date(), service_id=service.id) sms_results = [x for x in results if x.notification_type == 'sms'] email_results = [x for x in results if x.notification_type == 'email'] - letter_results = [x for x in results if x.notification_type == 'letter'] # we expect as many rows as we check for notification types assert 6 == sms_results[0].notifications_sent assert 4 == email_results[0].notifications_sent - assert 3 == letter_results[0].notifications_sent def test_get_rates_for_billing(notify_db_session): @@ -781,7 +768,6 @@ def test_fetch_usage_year_for_organisation_only_returns_data_for_live_services(n trial_service = create_service(restricted=True, service_name='trial_service') email_template = create_template(service=trial_service, template_type='email') trial_sms_template = create_template(service=trial_service, template_type='sms') - trial_letter_template = create_template(service=trial_service, template_type='letter') dao_add_service_to_organisation(service=live_service, organisation_id=org.id) dao_add_service_to_organisation(service=trial_service, organisation_id=org.id) create_ft_billing(local_date=datetime.utcnow().date(), template=sms_template, rate=0.0158, @@ -790,8 +776,6 @@ def test_fetch_usage_year_for_organisation_only_returns_data_for_live_services(n notifications_sent=100) create_ft_billing(local_date=datetime.utcnow().date(), template=trial_sms_template, billable_unit=200, rate=0.0158, notifications_sent=100) - create_ft_billing(local_date=datetime.utcnow().date(), template=trial_letter_template, billable_unit=40, rate=0.30, - notifications_sent=20) create_annual_billing(service_id=live_service.id, free_sms_fragment_limit=0, financial_year_start=2019) create_annual_billing(service_id=trial_service.id, free_sms_fragment_limit=0, financial_year_start=2019) @@ -905,24 +889,19 @@ def test_query_organisation_sms_usage_for_year_handles_multiple_rates(notify_db_ def test_fetch_daily_volumes_for_platform( - notify_db_session, sample_template, sample_email_template, sample_letter_template + notify_db_session, sample_template, sample_email_template ): create_ft_billing(local_date='2022-02-03', template=sample_template, notifications_sent=10, billable_unit=10) create_ft_billing(local_date='2022-02-03', template=sample_template, notifications_sent=10, billable_unit=30, international=True) create_ft_billing(local_date='2022-02-03', template=sample_email_template, notifications_sent=10) - create_ft_billing(local_date='2022-02-03', template=sample_letter_template, notifications_sent=5, - billable_unit=5, rate=0.39) - create_ft_billing(local_date='2022-02-03', template=sample_letter_template, notifications_sent=5, - billable_unit=10, rate=0.44) create_ft_billing(local_date='2022-02-04', template=sample_template, notifications_sent=20, billable_unit=40) create_ft_billing(local_date='2022-02-04', template=sample_template, notifications_sent=10, billable_unit=20, rate_multiplier=3) create_ft_billing(local_date='2022-02-04', template=sample_email_template, notifications_sent=50) - create_ft_billing(local_date='2022-02-04', template=sample_letter_template, notifications_sent=20, billable_unit=40) results = fetch_daily_volumes_for_platform(start_date='2022-02-03', end_date='2022-02-04') @@ -932,16 +911,12 @@ def test_fetch_daily_volumes_for_platform( assert results[0].sms_fragment_totals == 40 assert results[0].sms_chargeable_units == 40 assert results[0].email_totals == 10 - assert results[0].letter_totals == 10 - assert results[0].letter_sheet_totals == 15 assert results[1].local_date == '2022-02-04' assert results[1].sms_totals == 30 assert results[1].sms_fragment_totals == 60 assert results[1].sms_chargeable_units == 100 assert results[1].email_totals == 50 - assert results[1].letter_totals == 20 - assert results[1].letter_sheet_totals == 40 def test_fetch_daily_sms_provider_volumes_for_platform_groups_values_by_provider( @@ -1010,11 +985,9 @@ def test_fetch_daily_sms_provider_volumes_for_platform_for_platform_searches_dat def test_fetch_daily_sms_provider_volumes_for_platform_for_platform_only_returns_sms( sample_template, sample_email_template, - sample_letter_template ): create_ft_billing('2022-02-01', sample_template, notifications_sent=1) create_ft_billing('2022-02-01', sample_email_template, notifications_sent=2) - create_ft_billing('2022-02-01', sample_letter_template, notifications_sent=4) results = fetch_daily_sms_provider_volumes_for_platform(start_date='2022-02-01', end_date='2022-02-01') diff --git a/tests/app/dao/test_fact_notification_status_dao.py b/tests/app/dao/test_fact_notification_status_dao.py index d3e563f8c..162bb2723 100644 --- a/tests/app/dao/test_fact_notification_status_dao.py +++ b/tests/app/dao/test_fact_notification_status_dao.py @@ -21,7 +21,6 @@ from app.models import ( EMAIL_TYPE, KEY_TYPE_TEAM, KEY_TYPE_TEST, - LETTER_TYPE, NOTIFICATION_CREATED, NOTIFICATION_DELIVERED, NOTIFICATION_FAILED, @@ -144,7 +143,6 @@ def test_fetch_notification_status_for_service_for_today_and_7_previous_days(not create_ft_notification_status(date(2018, 10, 25), 'sms', service_1, count=8) create_ft_notification_status(date(2018, 10, 29), 'sms', service_1, notification_status='created') create_ft_notification_status(date(2018, 10, 29), 'email', service_1, count=3) - create_ft_notification_status(date(2018, 10, 26), 'letter', service_1, count=5) create_notification(sms_template, created_at=datetime(2018, 10, 31, 11, 0, 0)) create_notification(sms_template_2, created_at=datetime(2018, 10, 31, 11, 0, 0)) @@ -159,23 +157,19 @@ def test_fetch_notification_status_for_service_for_today_and_7_previous_days(not key=lambda x: (x.notification_type, x.status) ) - assert len(results) == 4 + assert len(results) == 3 assert results[0].notification_type == 'email' assert results[0].status == 'delivered' assert results[0].count == 4 - assert results[1].notification_type == 'letter' - assert results[1].status == 'delivered' - assert results[1].count == 5 + assert results[1].notification_type == 'sms' + assert results[1].status == 'created' + assert results[1].count == 3 assert results[2].notification_type == 'sms' - assert results[2].status == 'created' - assert results[2].count == 3 - - assert results[3].notification_type == 'sms' - assert results[3].status == 'delivered' - assert results[3].count == 19 + assert results[2].status == 'delivered' + assert results[2].count == 19 @freeze_time('2018-10-31T18:00:00') @@ -193,7 +187,6 @@ def test_fetch_notification_status_by_template_for_service_for_today_and_7_previ create_ft_notification_status(date(2018, 10, 25), 'sms', service_1, count=8) create_ft_notification_status(date(2018, 10, 29), 'sms', service_1, notification_status='created') create_ft_notification_status(date(2018, 10, 29), 'email', service_1, count=3) - create_ft_notification_status(date(2018, 10, 26), 'letter', service_1, count=5) create_notification(sms_template, created_at=datetime(2018, 10, 31, 11, 0, 0)) create_notification(sms_template, created_at=datetime(2018, 10, 31, 12, 0, 0), status='delivered') @@ -208,7 +201,6 @@ def test_fetch_notification_status_by_template_for_service_for_today_and_7_previ assert [ ('email Template Name', False, mock.ANY, 'email', 'delivered', 1), ('email Template Name', False, mock.ANY, 'email', 'delivered', 3), - ('letter Template Name', False, mock.ANY, 'letter', 'delivered', 5), ('sms Template 1', False, mock.ANY, 'sms', 'created', 1), ('sms Template Name', False, mock.ANY, 'sms', 'created', 1), ('sms Template 1', False, mock.ANY, 'sms', 'delivered', 1), @@ -220,11 +212,11 @@ def test_fetch_notification_status_by_template_for_service_for_today_and_7_previ @pytest.mark.parametrize( - "start_date, end_date, expected_email, expected_letters, expected_sms, expected_created_sms", + "start_date, end_date, expected_email, expected_sms, expected_created_sms", [ - (29, 30, 3, 10, 10, 1), # not including today - (29, 31, 4, 10, 11, 2), # today included - (26, 31, 4, 15, 11, 2), + (29, 30, 3, 10, 1), # not including today + (29, 31, 4, 11, 2), # today included + (26, 31, 4, 11, 2), ] ) @@ -234,7 +226,6 @@ def test_fetch_notification_status_totals_for_all_services( start_date, end_date, expected_email, - expected_letters, expected_sms, expected_created_sms ): @@ -246,23 +237,19 @@ def test_fetch_notification_status_totals_for_all_services( key=lambda x: (x.notification_type, x.status) ) - assert len(results) == 4 + assert len(results) == 3 assert results[0].notification_type == 'email' assert results[0].status == 'delivered' assert results[0].count == expected_email - assert results[1].notification_type == 'letter' - assert results[1].status == 'delivered' - assert results[1].count == expected_letters + assert results[1].notification_type == 'sms' + assert results[1].status == 'created' + assert results[1].count == expected_created_sms assert results[2].notification_type == 'sms' - assert results[2].status == 'created' - assert results[2].count == expected_created_sms - - assert results[3].notification_type == 'sms' - assert results[3].status == 'delivered' - assert results[3].count == expected_sms + assert results[2].status == 'delivered' + assert results[2].count == expected_sms @freeze_time('2018-04-21 14:00') @@ -302,16 +289,13 @@ def test_fetch_notification_status_totals_for_all_services_works_in_est( def set_up_data(): service_2 = create_service(service_name='service_2') - create_template(service=service_2, template_type=LETTER_TYPE) service_1 = create_service(service_name='service_1') sms_template = create_template(service=service_1, template_type=SMS_TYPE) email_template = create_template(service=service_1, template_type=EMAIL_TYPE) create_ft_notification_status(date(2018, 10, 24), 'sms', service_1, count=8) - create_ft_notification_status(date(2018, 10, 26), 'letter', service_1, count=5) create_ft_notification_status(date(2018, 10, 29), 'sms', service_1, count=10) create_ft_notification_status(date(2018, 10, 29), 'sms', service_1, notification_status='created') create_ft_notification_status(date(2018, 10, 29), 'email', service_1, count=3) - create_ft_notification_status(date(2018, 10, 29), 'letter', service_2, count=10) create_notification(service_1.templates[0], created_at=datetime(2018, 10, 30, 12, 0, 0), status='delivered') create_notification(sms_template, created_at=datetime(2018, 10, 31, 11, 0, 0)) @@ -340,7 +324,7 @@ def test_fetch_stats_for_all_services_by_date_range(notify_db_session): service_1, service_2 = set_up_data() results = fetch_stats_for_all_services_by_date_range(start_date=date(2018, 10, 29), end_date=date(2018, 10, 31)) - assert len(results) == 5 + assert len(results) == 4 assert results[0].service_id == service_1.id assert results[0].notification_type == 'email' @@ -358,21 +342,15 @@ def test_fetch_stats_for_all_services_by_date_range(notify_db_session): assert results[2].count == 11 assert results[3].service_id == service_2.id - assert results[3].notification_type == 'letter' - assert results[3].status == 'delivered' - assert results[3].count == 10 - - assert results[4].service_id == service_2.id - assert not results[4].notification_type - assert not results[4].status - assert not results[4].count + assert not results[3].notification_type + assert not results[3].status + assert not results[3].count @freeze_time('2018-03-30 14:00') def test_fetch_monthly_template_usage_for_service(sample_service): template_one = create_template(service=sample_service, template_type='sms', template_name='a') template_two = create_template(service=sample_service, template_type='email', template_name='b') - template_three = create_template(service=sample_service, template_type='letter', template_name='c') create_ft_notification_status(local_date=date(2017, 12, 10), service=sample_service, @@ -390,10 +368,10 @@ def test_fetch_monthly_template_usage_for_service(sample_service): create_ft_notification_status(local_date=date(2018, 3, 1), service=sample_service, - template=template_three, + template=template_two, count=5) - create_notification(template=template_three, created_at=datetime.utcnow() - timedelta(days=1)) - create_notification(template=template_three, created_at=datetime.utcnow()) + create_notification(template=template_two, created_at=datetime.utcnow() - timedelta(days=1)) + create_notification(template=template_two, created_at=datetime.utcnow()) results = fetch_monthly_template_usage_for_service( datetime(2017, 4, 1), datetime(2018, 3, 31), sample_service.id ) @@ -420,9 +398,9 @@ def test_fetch_monthly_template_usage_for_service(sample_service): assert results[2].year == 2018 assert results[2].count == 4 - assert results[3].template_id == template_three.id - assert results[3].name == template_three.name - assert results[3].template_type == template_three.template_type + assert results[3].template_id == template_two.id + assert results[3].name == template_two.name + assert results[3].template_type == template_two.template_type assert results[3].month == 3 assert results[3].year == 2018 assert results[3].count == 6 @@ -510,7 +488,7 @@ def test_fetch_monthly_notification_statuses_per_service(notify_db_session): service_one = create_service(service_name='service one', service_id=UUID('e4e34c4e-73c1-4802-811c-3dd273f21da4')) service_two = create_service(service_name='service two', service_id=UUID('b19d7aad-6f09-4198-8b62-f6cf126b87e5')) - create_ft_notification_status(date(2019, 4, 30), notification_type='letter', service=service_one, + create_ft_notification_status(date(2019, 4, 30), notification_type='sms', service=service_one, notification_status=NOTIFICATION_DELIVERED) create_ft_notification_status(date(2019, 3, 1), notification_type='email', service=service_one, notification_status=NOTIFICATION_SENDING, count=4) @@ -520,28 +498,27 @@ def test_fetch_monthly_notification_statuses_per_service(notify_db_session): notification_status=NOTIFICATION_TECHNICAL_FAILURE, count=2) create_ft_notification_status(date(2019, 3, 7), notification_type='email', service=service_one, notification_status=NOTIFICATION_FAILED, count=1) - create_ft_notification_status(date(2019, 3, 10), notification_type='letter', service=service_two, + create_ft_notification_status(date(2019, 3, 10), notification_type='sms', service=service_two, notification_status=NOTIFICATION_PERMANENT_FAILURE, count=1) - create_ft_notification_status(date(2019, 3, 10), notification_type='letter', service=service_two, + create_ft_notification_status(date(2019, 3, 10), notification_type='sms', service=service_two, notification_status=NOTIFICATION_PERMANENT_FAILURE, count=1) create_ft_notification_status(date(2019, 3, 13), notification_type='sms', service=service_one, notification_status=NOTIFICATION_SENT, count=1) - create_ft_notification_status(date(2019, 4, 1), notification_type='letter', service=service_two, + create_ft_notification_status(date(2019, 4, 1), notification_type='sms', service=service_two, notification_status=NOTIFICATION_TEMPORARY_FAILURE, count=10) - create_ft_notification_status(date(2019, 3, 31), notification_type='letter', service=service_one, + create_ft_notification_status(date(2019, 3, 31), notification_type='sms', service=service_one, notification_status=NOTIFICATION_DELIVERED) results = fetch_monthly_notification_statuses_per_service(date(2019, 3, 1), date(2019, 4, 30)) - assert len(results) == 6 + assert len(results) == 5 # column order: date, service_id, service_name, notifaction_type, count_sending, count_delivered, # count_technical_failure, count_temporary_failure, count_permanent_failure, count_sent - assert [x for x in results[0]] == [date(2019, 3, 1), service_two.id, 'service two', 'letter', 0, 0, 0, 0, 2, 0] + assert [x for x in results[0]] == [date(2019, 3, 1), service_two.id, 'service two', 'sms', 0, 0, 0, 0, 2, 0] assert [x for x in results[1]] == [date(2019, 3, 1), service_one.id, 'service one', 'email', 5, 0, 3, 0, 0, 0] - assert [x for x in results[2]] == [date(2019, 3, 1), service_one.id, 'service one', 'letter', 0, 1, 0, 0, 0, 0] - assert [x for x in results[3]] == [date(2019, 3, 1), service_one.id, 'service one', 'sms', 0, 0, 0, 0, 0, 1] - assert [x for x in results[4]] == [date(2019, 4, 1), service_two.id, 'service two', 'letter', 0, 0, 0, 10, 0, 0] - assert [x for x in results[5]] == [date(2019, 4, 1), service_one.id, 'service one', 'letter', 0, 1, 0, 0, 0, 0] + assert [x for x in results[2]] == [date(2019, 3, 1), service_one.id, 'service one', 'sms', 0, 1, 0, 0, 0, 1] + assert [x for x in results[3]] == [date(2019, 4, 1), service_two.id, 'service two', 'sms', 0, 0, 0, 10, 0, 0] + assert [x for x in results[4]] == [date(2019, 4, 1), service_one.id, 'service one', 'sms', 0, 1, 0, 0, 0, 0] @freeze_time('2019-04-10 14:00') @@ -572,7 +549,6 @@ def test_fetch_monthly_notification_statuses_per_service_for_rows_that_should_be def test_get_total_notifications_for_date_range(sample_service): template_sms = create_template(service=sample_service, template_type='sms', template_name='a') template_email = create_template(service=sample_service, template_type='email', template_name='b') - template_letter = create_template(service=sample_service, template_type='letter', template_name='c') create_ft_notification_status(local_date=date(2021, 2, 28), service=template_email.service, template=template_email, @@ -581,10 +557,6 @@ def test_get_total_notifications_for_date_range(sample_service): service=template_sms.service, template=template_sms, count=20) - create_ft_notification_status(local_date=date(2021, 2, 28), - service=template_letter.service, - template=template_letter, - count=3) create_ft_notification_status(local_date=date(2021, 3, 1), service=template_email.service, @@ -594,15 +566,11 @@ def test_get_total_notifications_for_date_range(sample_service): service=template_sms.service, template=template_sms, count=20) - create_ft_notification_status(local_date=date(2021, 3, 1), - service=template_letter.service, - template=template_letter, - count=3) results = get_total_notifications_for_date_range(start_date=datetime(2021, 3, 1), end_date=datetime(2021, 3, 1)) assert len(results) == 1 - assert results[0] == ("2021-03-01", 15, 20, 3) + assert results[0] == ("2021-03-01", 15, 20) @pytest.mark.skip(reason="Need a better way to test variable DST date") diff --git a/tests/app/dao/test_jobs_dao.py b/tests/app/dao/test_jobs_dao.py index 75a8de7a8..75aa8614c 100644 --- a/tests/app/dao/test_jobs_dao.py +++ b/tests/app/dao/test_jobs_dao.py @@ -19,9 +19,7 @@ from app.dao.jobs_dao import ( find_missing_row_for_job, ) from app.models import ( - EMAIL_TYPE, JOB_STATUS_FINISHED, - LETTER_TYPE, SMS_TYPE, Job, ) @@ -305,37 +303,18 @@ def test_get_jobs_for_service_doesnt_return_test_messages( assert jobs == [sample_job] -@freeze_time('2016-10-31 10:00:00') -def test_should_get_jobs_seven_days_old_filters_type(sample_service): - eight_days_ago = datetime.utcnow() - timedelta(days=8) - letter_template = create_template(sample_service, template_type=LETTER_TYPE) - sms_template = create_template(sample_service, template_type=SMS_TYPE) - email_template = create_template(sample_service, template_type=EMAIL_TYPE) - - job_to_remain = create_job(letter_template, created_at=eight_days_ago) - create_job(sms_template, created_at=eight_days_ago) - create_job(email_template, created_at=eight_days_ago) - - jobs = dao_get_jobs_older_than_data_retention( - notification_types=[EMAIL_TYPE, SMS_TYPE] - ) - - assert len(jobs) == 2 - assert job_to_remain.id not in [job.id for job in jobs] - - @freeze_time('2016-10-31 10:00:00') def test_should_get_jobs_seven_days_old_by_scheduled_for_date(sample_service): six_days_ago = datetime.utcnow() - timedelta(days=6) eight_days_ago = datetime.utcnow() - timedelta(days=8) - letter_template = create_template(sample_service, template_type=LETTER_TYPE) + sms_template = create_template(sample_service, template_type=SMS_TYPE) - create_job(letter_template, created_at=eight_days_ago) - create_job(letter_template, created_at=eight_days_ago, scheduled_for=eight_days_ago) - job_to_remain = create_job(letter_template, created_at=eight_days_ago, scheduled_for=six_days_ago) + create_job(sms_template, created_at=eight_days_ago) + create_job(sms_template, created_at=eight_days_ago, scheduled_for=eight_days_ago) + job_to_remain = create_job(sms_template, created_at=eight_days_ago, scheduled_for=six_days_ago) jobs = dao_get_jobs_older_than_data_retention( - notification_types=[LETTER_TYPE] + notification_types=[SMS_TYPE] ) assert len(jobs) == 2 diff --git a/tests/app/dao/test_services_dao.py b/tests/app/dao/test_services_dao.py index 68a591909..1ff31bcab 100644 --- a/tests/app/dao/test_services_dao.py +++ b/tests/app/dao/test_services_dao.py @@ -14,10 +14,7 @@ from app.dao.inbound_numbers_dao import ( dao_set_inbound_number_to_service, ) from app.dao.organisation_dao import dao_add_service_to_organisation -from app.dao.service_permissions_dao import ( - dao_add_service_permission, - dao_remove_service_permission, -) +from app.dao.service_permissions_dao import dao_remove_service_permission from app.dao.service_user_dao import ( dao_get_service_user, dao_update_service_user, @@ -50,7 +47,6 @@ from app.models import ( KEY_TYPE_NORMAL, KEY_TYPE_TEAM, KEY_TYPE_TEST, - LETTER_TYPE, SMS_TYPE, ApiKey, InvitedUser, @@ -402,8 +398,6 @@ def test_dao_fetch_live_services_data(sample_user): create_service(service_name='not_active', active=False) create_service(service_name='not_live', count_as_live=False) email_template = create_template(service=service, template_type='email') - template_letter_1 = create_template(service=service, template_type='letter') - template_letter_2 = create_template(service=service_2, template_type='letter') dao_add_service_to_organisation(service=service, organisation_id=org.id) # two sms billing records for 1st service within current financial year: create_ft_billing(local_date='2019-04-20', template=sms_template) @@ -412,10 +406,6 @@ def test_dao_fetch_live_services_data(sample_user): create_ft_billing(local_date='2018-04-20', template=sms_template) # one email billing record for 1st service within current financial year: create_ft_billing(local_date='2019-04-20', template=email_template) - # one letter billing record for 1st service within current financial year: - create_ft_billing(local_date='2019-04-15', template=template_letter_1) - # one letter billing record for 2nd service within current financial year: - create_ft_billing(local_date='2019-04-16', template=template_letter_2) # 1st service: billing from 2018 and 2019 create_annual_billing(service.id, 500, 2018) @@ -433,7 +423,7 @@ def test_dao_fetch_live_services_data(sample_user): 'organisation_type': 'federal', 'consent_to_research': None, 'contact_name': 'Test User', 'contact_email': 'notify@digital.cabinet-office.gov.uk', 'contact_mobile': '+12028675309', 'live_date': datetime(2014, 4, 20, 10, 0), 'sms_volume_intent': None, 'email_volume_intent': None, - 'letter_volume_intent': None, 'sms_totals': 2, 'email_totals': 1, 'letter_totals': 1, + 'letter_volume_intent': None, 'sms_totals': 2, 'email_totals': 1, 'letter_totals': 0, 'free_sms_fragment_limit': 100}, {'service_id': mock.ANY, 'service_name': 'third', 'organisation_name': None, 'consent_to_research': None, 'organisation_type': None, 'contact_name': None, 'contact_email': None, @@ -445,7 +435,7 @@ def test_dao_fetch_live_services_data(sample_user): '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, 'letter_volume_intent': None, - 'sms_totals': 0, 'email_totals': 0, 'letter_totals': 1, + 'sms_totals': 0, 'email_totals': 0, 'letter_totals': 0, 'free_sms_fragment_limit': 300} ] @@ -492,32 +482,12 @@ def test_removing_all_permission_returns_service_with_no_permissions(notify_db_s service = create_service() dao_remove_service_permission(service_id=service.id, permission=SMS_TYPE) dao_remove_service_permission(service_id=service.id, permission=EMAIL_TYPE) - dao_remove_service_permission(service_id=service.id, permission=LETTER_TYPE) dao_remove_service_permission(service_id=service.id, permission=INTERNATIONAL_SMS_TYPE) service = dao_fetch_service_by_id(service.id) assert len(service.permissions) == 0 -def test_create_service_by_id_adding_and_removing_letter_returns_service_without_letter(service_factory): - service = service_factory.get('testing', email_from='testing') - - dao_remove_service_permission(service_id=service.id, permission=LETTER_TYPE) - dao_add_service_permission(service_id=service.id, permission=LETTER_TYPE) - - service = dao_fetch_service_by_id(service.id) - _assert_service_permissions(service.permissions, ( - SMS_TYPE, EMAIL_TYPE, LETTER_TYPE, INTERNATIONAL_SMS_TYPE, - )) - - dao_remove_service_permission(service_id=service.id, permission=LETTER_TYPE) - service = dao_fetch_service_by_id(service.id) - - _assert_service_permissions(service.permissions, ( - SMS_TYPE, EMAIL_TYPE, INTERNATIONAL_SMS_TYPE, - )) - - def test_create_service_creates_a_history_record_with_current_data(notify_db_session): user = create_user() assert Service.query.count() == 0 @@ -582,11 +552,13 @@ def test_update_service_permission_creates_a_history_record_with_current_data(no created_by=user) dao_create_service(service, user, service_permissions=[ SMS_TYPE, - EMAIL_TYPE, + # EMAIL_TYPE, INTERNATIONAL_SMS_TYPE, ]) - service.permissions.append(ServicePermission(service_id=service.id, permission='letter')) + assert Service.query.count() == 1 + + service.permissions.append(ServicePermission(service_id=service.id, permission=EMAIL_TYPE)) dao_update_service(service) assert Service.query.count() == 1 @@ -597,7 +569,7 @@ def test_update_service_permission_creates_a_history_record_with_current_data(no assert service_from_db.version == 2 _assert_service_permissions(service.permissions, ( - SMS_TYPE, EMAIL_TYPE, INTERNATIONAL_SMS_TYPE, LETTER_TYPE, + SMS_TYPE, EMAIL_TYPE, INTERNATIONAL_SMS_TYPE, )) permission = [p for p in service.permissions if p.permission == 'sms'][0] @@ -610,7 +582,7 @@ def test_update_service_permission_creates_a_history_record_with_current_data(no service_from_db = Service.query.first() assert service_from_db.version == 3 _assert_service_permissions(service.permissions, ( - EMAIL_TYPE, INTERNATIONAL_SMS_TYPE, LETTER_TYPE, + EMAIL_TYPE, INTERNATIONAL_SMS_TYPE, )) history = Service.get_history_model().query.filter_by(name='service_name').order_by('version').all() @@ -1109,14 +1081,6 @@ def _assert_service_permissions(service_permissions, expected): assert set(expected) == set(p.permission for p in service_permissions) -def create_email_sms_letter_template(): - service = create_service() - template_one = create_template(service=service, template_name='1', template_type='email') - template_two = create_template(service=service, template_name='2', template_type='sms') - template_three = create_template(service=service, template_name='3', template_type='letter') - return template_one, template_three, template_two - - @freeze_time("2019-12-02 12:00:00.000000") def test_dao_find_services_sending_to_tv_numbers(notify_db_session, fake_uuid): service_1 = create_service(service_name="Service 1", service_id=fake_uuid) diff --git a/tests/app/dao/test_templates_dao.py b/tests/app/dao/test_templates_dao.py index 04dc311c5..17ac05b37 100644 --- a/tests/app/dao/test_templates_dao.py +++ b/tests/app/dao/test_templates_dao.py @@ -19,7 +19,6 @@ from tests.app.db import create_template @pytest.mark.parametrize('template_type, subject', [ ('sms', None), ('email', 'subject'), - ('letter', 'subject'), ]) def test_create_template(sample_service, sample_user, template_type, subject): data = { diff --git a/tests/app/dao/test_uploads_dao.py b/tests/app/dao/test_uploads_dao.py index 95887b393..ea166638f 100644 --- a/tests/app/dao/test_uploads_dao.py +++ b/tests/app/dao/test_uploads_dao.py @@ -14,302 +14,302 @@ 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) +# @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) +# @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') +# 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) +# 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) +# 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) +# @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) +# @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) +# @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 == [] +# 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/notifications/test_process_notification.py b/tests/app/notifications/test_process_notification.py index ae6297221..3af595b1e 100644 --- a/tests/app/notifications/test_process_notification.py +++ b/tests/app/notifications/test_process_notification.py @@ -11,7 +11,7 @@ from notifications_utils.recipients import ( ) from sqlalchemy.exc import SQLAlchemyError -from app.models import LETTER_TYPE, Notification, NotificationHistory +from app.models import SMS_TYPE, Notification, NotificationHistory from app.notifications.process_notifications import ( create_content_for_notification, persist_notification, @@ -453,13 +453,13 @@ def test_persist_email_notification_stores_normalised_email( def test_persist_notification_with_billable_units_stores_correct_info( mocker ): - service = create_service(service_permissions=[LETTER_TYPE]) - template = create_template(service, template_type=LETTER_TYPE) + service = create_service(service_permissions=[SMS_TYPE]) + template = create_template(service, template_type=SMS_TYPE) mocker.patch('app.dao.templates_dao.dao_get_template_by_id', return_value=template) persist_notification( template_id=template.id, template_version=template.version, - recipient="123 Main Street", + recipient="+12028675309", service=template.service, personalisation=None, notification_type=template.template_type, diff --git a/tests/app/notifications/test_rest.py b/tests/app/notifications/test_rest.py index 44b893363..15d0a501c 100644 --- a/tests/app/notifications/test_rest.py +++ b/tests/app/notifications/test_rest.py @@ -13,20 +13,17 @@ from tests import create_service_authorization_header from tests.app.db import create_api_key, create_notification -@pytest.mark.parametrize('type', ('email', 'sms', 'letter')) +@pytest.mark.parametrize('type', ('email', 'sms')) def test_get_notification_by_id( client, sample_notification, sample_email_notification, - sample_letter_notification, type ): if type == 'email': notification_to_get = sample_email_notification if type == 'sms': notification_to_get = sample_notification - if type == 'letter': - notification_to_get = sample_letter_notification auth_header = create_service_authorization_header(service_id=notification_to_get.service_id) response = client.get( diff --git a/tests/app/platform_stats/test_rest.py b/tests/app/platform_stats/test_rest.py index 9d2fa20d2..5df831047 100644 --- a/tests/app/platform_stats/test_rest.py +++ b/tests/app/platform_stats/test_rest.py @@ -143,7 +143,7 @@ def test_get_data_for_billing_report(notify_db_session, admin_request): def test_daily_volumes_report( - notify_db_session, sample_template, sample_email_template, sample_letter_template, admin_request + notify_db_session, sample_template, sample_email_template, admin_request ): set_up_usage_data(datetime(2022, 3, 1)) response = admin_request.get( @@ -162,7 +162,7 @@ def test_daily_volumes_report( def test_volumes_by_service_report( - notify_db_session, sample_template, sample_email_template, sample_letter_template, admin_request + notify_db_session, sample_template, sample_email_template, admin_request ): fixture = set_up_usage_data(datetime(2022, 3, 1)) response = admin_request.get( diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index c4cd84a77..c0de5d2b7 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -1970,7 +1970,6 @@ def test_get_services_with_detailed_flag(client, sample_template): assert data[0]['statistics'] == { EMAIL_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0}, SMS_TYPE: {'delivered': 0, 'failed': 0, 'requested': 3}, - # LETTER_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0} } @@ -1993,7 +1992,6 @@ def test_get_services_with_detailed_flag_excluding_from_test_key(client, sample_ assert data[0]['statistics'] == { EMAIL_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0}, SMS_TYPE: {'delivered': 0, 'failed': 0, 'requested': 2}, - # LETTER_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0} } @@ -2054,13 +2052,11 @@ def test_get_detailed_services_groups_by_service(notify_db_session): assert data[0]['statistics'] == { EMAIL_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0}, SMS_TYPE: {'delivered': 1, 'failed': 0, 'requested': 3}, - # LETTER_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0} } assert data[1]['id'] == str(service_2.id) assert data[1]['statistics'] == { EMAIL_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0}, SMS_TYPE: {'delivered': 0, 'failed': 0, 'requested': 1}, - # LETTER_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0} } @@ -2083,13 +2079,11 @@ def test_get_detailed_services_includes_services_with_no_notifications(notify_db assert data[0]['statistics'] == { EMAIL_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0}, SMS_TYPE: {'delivered': 0, 'failed': 0, 'requested': 1}, - # LETTER_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0} } assert data[1]['id'] == str(service_2.id) assert data[1]['statistics'] == { EMAIL_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0}, SMS_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0}, - # LETTER_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0} } @@ -2109,7 +2103,6 @@ def test_get_detailed_services_only_includes_todays_notifications(sample_templat assert data[0]['statistics'] == { EMAIL_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0}, SMS_TYPE: {'delivered': 0, 'failed': 0, 'requested': 3}, - # LETTER_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0} } @@ -2143,7 +2136,6 @@ def test_get_detailed_services_for_date_range(sample_template, start_date_delta, assert len(data) == 1 assert data[0]['statistics'][EMAIL_TYPE] == {'delivered': 0, 'failed': 0, 'requested': 0} assert data[0]['statistics'][SMS_TYPE] == {'delivered': 2, 'failed': 0, 'requested': 2} - # assert data[0]['statistics'][LETTER_TYPE] == {'delivered': 0, 'failed': 0, 'requested': 0} def test_search_for_notification_by_to_field(client, sample_template, sample_email_template): @@ -2237,29 +2229,6 @@ def test_search_for_notification_by_to_field_returns_no_next_link_if_50_or_less( assert response_json['links'] == {} -def test_search_for_notification_by_to_field_for_letter( - client, - notify_db_session, - sample_letter_template, - sample_email_template, - sample_template, -): - letter_notification = create_notification(sample_letter_template, to_field='A. Name', normalised_to='a.name') - create_notification(sample_email_template, to_field='A.Name@example.com', normalised_to='a.name@example.com') - create_notification(sample_template, to_field='44770900123', normalised_to='44770900123') - response = client.get( - '/service/{}/notifications?to={}&template_type={}'.format( - sample_letter_template.service_id, 'A. Name', 'letter', - ), - headers=[create_admin_authorization_header()] - ) - notifications = json.loads(response.get_data(as_text=True))['notifications'] - - assert response.status_code == 200 - assert len(notifications) == 1 - assert notifications[0]['id'] == str(letter_notification.id) - - def test_update_service_calls_send_notification_as_service_becomes_live(notify_db_session, client, mocker): send_notification_mock = mocker.patch('app.service.rest.send_notification_to_service_users') @@ -3073,7 +3042,7 @@ def test_cancel_notification_for_service_raises_invalid_request_when_notificatio def test_get_monthly_notification_data_by_service(sample_service, admin_request): - create_ft_notification_status(date(2019, 4, 17), notification_type='letter', service=sample_service, + create_ft_notification_status(date(2019, 4, 17), notification_type='sms', service=sample_service, notification_status='delivered') create_ft_notification_status(date(2019, 3, 5), notification_type='email', service=sample_service, notification_status='sending', count=4) @@ -3085,5 +3054,5 @@ def test_get_monthly_notification_data_by_service(sample_service, admin_request) assert response == [ ['2019-03-01', str(sample_service.id), 'Sample service', 'email', 4, 0, 0, 0, 0, 0], - ['2019-04-01', str(sample_service.id), 'Sample service', 'letter', 0, 1, 0, 0, 0, 0], + ['2019-04-01', str(sample_service.id), 'Sample service', 'sms', 0, 1, 0, 0, 0, 0], ] diff --git a/tests/app/template/test_rest.py b/tests/app/template/test_rest.py index 5170290ce..777a20b18 100644 --- a/tests/app/template/test_rest.py +++ b/tests/app/template/test_rest.py @@ -11,7 +11,6 @@ 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, - LETTER_TYPE, SMS_TYPE, Template, TemplateHistory, @@ -165,7 +164,6 @@ def test_should_raise_error_if_service_does_not_exist_on_create(client, sample_u @pytest.mark.parametrize('permissions, template_type, subject, expected_error', [ ([EMAIL_TYPE], SMS_TYPE, None, {'template_type': ['Creating text message templates is not allowed']}), ([SMS_TYPE], EMAIL_TYPE, 'subject', {'template_type': ['Creating email templates is not allowed']}), - ([SMS_TYPE], LETTER_TYPE, 'subject', {'template_type': ['Creating letter templates is not allowed']}), ]) def test_should_raise_error_on_create_if_no_permission( client, sample_user, permissions, template_type, subject, expected_error): @@ -196,8 +194,7 @@ def test_should_raise_error_on_create_if_no_permission( @pytest.mark.parametrize('template_type, permissions, expected_error', [ (SMS_TYPE, [EMAIL_TYPE], {'template_type': ['Updating text message templates is not allowed']}), - (EMAIL_TYPE, [LETTER_TYPE], {'template_type': ['Updating email templates is not allowed']}), - (LETTER_TYPE, [SMS_TYPE], {'template_type': ['Updating letter templates is not allowed']}) + (EMAIL_TYPE, [SMS_TYPE], {'template_type': ['Updating email templates is not allowed']}), ]) def test_should_be_error_on_update_if_no_permission( client, @@ -482,7 +479,6 @@ def test_should_get_return_all_fields_by_default( @pytest.mark.parametrize('template_type, expected_content', ( (EMAIL_TYPE, None), (SMS_TYPE, None), - (LETTER_TYPE, None), )) def test_should_not_return_content_and_subject_if_requested( admin_request, @@ -522,11 +518,6 @@ def test_should_not_return_content_and_subject_if_requested( None, 'hello ((name)) we’ve received your ((thing))', SMS_TYPE - ), - ( - 'about your ((thing))', - 'hello ((name)) we’ve received your ((thing))', - LETTER_TYPE ) ] ) diff --git a/tests/app/test_model.py b/tests/app/test_model.py index 6a3107e88..5c9824992 100644 --- a/tests/app/test_model.py +++ b/tests/app/test_model.py @@ -119,11 +119,6 @@ def test_notification_for_csv_returns_correct_job_row_number(sample_job): ('sms', 'temporary-failure', 'Phone not accepting messages right now'), ('sms', 'permanent-failure', 'Phone number doesn’t exist'), ('sms', 'sent', 'Sent internationally'), - ('letter', 'created', 'Accepted'), - ('letter', 'sending', 'Accepted'), - ('letter', 'technical-failure', 'Technical failure'), - ('letter', 'permanent-failure', 'Permanent failure'), - ('letter', 'delivered', 'Received') ]) def test_notification_for_csv_returns_formatted_status( sample_service, @@ -182,7 +177,7 @@ def test_notification_subject_is_none_for_sms(sample_service): assert notification.subject is None -@pytest.mark.parametrize('template_type', ['email', 'letter']) +@pytest.mark.parametrize('template_type', ['email']) def test_notification_subject_fills_in_placeholders(sample_service, template_type): template = create_template(service=sample_service, template_type=template_type, subject='((name))') notification = create_notification(template=template, personalisation={'name': 'hello'}) diff --git a/tests/app/v2/notifications/test_get_notifications.py b/tests/app/v2/notifications/test_get_notifications.py index 7032200b7..6b792699c 100644 --- a/tests/app/v2/notifications/test_get_notifications.py +++ b/tests/app/v2/notifications/test_get_notifications.py @@ -550,11 +550,10 @@ def test_get_all_notifications_filter_multiple_query_parameters(client, sample_e def test_get_all_notifications_renames_letter_statuses( client, - sample_letter_notification, sample_notification, sample_email_notification, ): - auth_header = create_service_authorization_header(service_id=sample_letter_notification.service_id) + auth_header = create_service_authorization_header(service_id=sample_email_notification.service_id) response = client.get( path=url_for('v2_notifications.get_notifications'), headers=[('Content-Type', 'application/json'), auth_header] @@ -566,7 +565,5 @@ def test_get_all_notifications_renames_letter_statuses( for noti in json_response['notifications']: if noti['type'] == 'sms' or noti['type'] == 'email': assert noti['status'] == 'created' - elif noti['type'] == 'letter': - assert noti['status'] == 'accepted' else: pytest.fail() diff --git a/tests/app/v2/template/test_post_template.py b/tests/app/v2/template/test_post_template.py index 944a3ae07..223b24dc6 100644 --- a/tests/app/v2/template/test_post_template.py +++ b/tests/app/v2/template/test_post_template.py @@ -1,7 +1,7 @@ import pytest from flask import json -from app.models import EMAIL_TYPE, LETTER_TYPE, TEMPLATE_TYPES +from app.models import EMAIL_TYPE, TEMPLATE_TYPES from tests import create_service_authorization_header from tests.app.db import create_template @@ -105,15 +105,13 @@ def test_valid_post_template_returns_200( assert expected_content in resp_json['body'] -@pytest.mark.parametrize("template_type", (EMAIL_TYPE, LETTER_TYPE)) -def test_email_and_letter_templates_not_rendered_into_content( +def test_email_templates_not_rendered_into_content( client, - sample_service, - template_type, + sample_service ): template = create_template( sample_service, - template_type=template_type, + template_type=EMAIL_TYPE, subject='Test', content=( 'Hello\n' diff --git a/tests/app/v2/templates/test_get_templates.py b/tests/app/v2/templates/test_get_templates.py index 29eacc6dc..67e8d705c 100644 --- a/tests/app/v2/templates/test_get_templates.py +++ b/tests/app/v2/templates/test_get_templates.py @@ -112,7 +112,7 @@ def test_get_all_templates_for_invalid_type_returns_400(client, sample_service): 'status_code': 400, 'errors': [ { - 'message': 'type coconut is not one of [sms, email, letter]', + 'message': 'type coconut is not one of [sms, email]', 'error': 'ValidationError' } ] diff --git a/tests/app/v2/templates/test_templates_schemas.py b/tests/app/v2/templates/test_templates_schemas.py index edcf9d629..d5f49f881 100644 --- a/tests/app/v2/templates/test_templates_schemas.py +++ b/tests/app/v2/templates/test_templates_schemas.py @@ -241,7 +241,7 @@ def test_get_all_template_request_schema_against_invalid_args_is_invalid(templat assert errors['status_code'] == 400 assert len(errors['errors']) == 1 - assert errors['errors'][0]['message'] == 'type unknown is not one of [sms, email, letter]' + assert errors['errors'][0]['message'] == 'type unknown is not one of [sms, email]' @pytest.mark.parametrize("response", valid_json_get_all_response)