From 8adf1a19bb134aefd6113c70e9a6ab3f70b1af38 Mon Sep 17 00:00:00 2001 From: stvnrlly Date: Tue, 28 Feb 2023 15:29:36 -0500 Subject: [PATCH] clean up after model update --- migrations/versions/0389_no_more_letters.py | 56 +++++++++++++++++++ .../versions/0390_drop_dvla_provider.py | 33 +++++++++++ .../dao/test_service_data_retention_dao.py | 12 +--- tests/app/provider_details/test_rest.py | 2 +- tests/app/test_model.py | 4 -- 5 files changed, 93 insertions(+), 14 deletions(-) create mode 100644 migrations/versions/0389_no_more_letters.py create mode 100644 migrations/versions/0390_drop_dvla_provider.py diff --git a/migrations/versions/0389_no_more_letters.py b/migrations/versions/0389_no_more_letters.py new file mode 100644 index 000000000..e69c4615b --- /dev/null +++ b/migrations/versions/0389_no_more_letters.py @@ -0,0 +1,56 @@ +""" + +Revision ID: 0389_no_more_letters.py +Revises: 0388_no_serv_letter_contact.py +Create Date: 2023-02-28 08:58:38.310095 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +revision = '0389_no_more_letters.py' +down_revision = '0388_no_serv_letter_contact.py' + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index('ix_returned_letters_service_id', table_name='returned_letters') + op.drop_table('returned_letters') + op.drop_index('ix_daily_sorted_letter_billing_day', table_name='daily_sorted_letter') + op.drop_index('ix_daily_sorted_letter_file_name', table_name='daily_sorted_letter') + op.drop_table('daily_sorted_letter') + op.drop_column('services', 'volume_letter') + op.drop_column('services_history', 'volume_letter') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('services_history', sa.Column('volume_letter', sa.INTEGER(), autoincrement=False, nullable=True)) + op.add_column('services', sa.Column('volume_letter', sa.INTEGER(), autoincrement=False, nullable=True)) + op.create_table('daily_sorted_letter', + sa.Column('id', postgresql.UUID(), autoincrement=False, nullable=False), + sa.Column('billing_day', sa.DATE(), autoincrement=False, nullable=False), + sa.Column('unsorted_count', sa.INTEGER(), autoincrement=False, nullable=False), + sa.Column('sorted_count', sa.INTEGER(), autoincrement=False, nullable=False), + sa.Column('updated_at', postgresql.TIMESTAMP(), autoincrement=False, nullable=True), + sa.Column('file_name', sa.VARCHAR(), autoincrement=False, nullable=True), + sa.PrimaryKeyConstraint('id', name='daily_sorted_letter_pkey'), + sa.UniqueConstraint('file_name', 'billing_day', name='uix_file_name_billing_day') + ) + op.create_index('ix_daily_sorted_letter_file_name', 'daily_sorted_letter', ['file_name'], unique=False) + op.create_index('ix_daily_sorted_letter_billing_day', 'daily_sorted_letter', ['billing_day'], unique=False) + op.create_table('returned_letters', + sa.Column('id', postgresql.UUID(), autoincrement=False, nullable=False), + sa.Column('reported_at', sa.DATE(), autoincrement=False, nullable=False), + sa.Column('service_id', postgresql.UUID(), autoincrement=False, nullable=False), + sa.Column('notification_id', postgresql.UUID(), autoincrement=False, nullable=False), + sa.Column('created_at', postgresql.TIMESTAMP(), autoincrement=False, nullable=False), + sa.Column('updated_at', postgresql.TIMESTAMP(), autoincrement=False, nullable=True), + sa.ForeignKeyConstraint(['service_id'], ['services.id'], name='returned_letters_service_id_fkey'), + sa.PrimaryKeyConstraint('id', name='returned_letters_pkey'), + sa.UniqueConstraint('notification_id', name='returned_letters_notification_id_key') + ) + op.create_index('ix_returned_letters_service_id', 'returned_letters', ['service_id'], unique=False) + # ### end Alembic commands ### diff --git a/migrations/versions/0390_drop_dvla_provider.py b/migrations/versions/0390_drop_dvla_provider.py new file mode 100644 index 000000000..5c642cc78 --- /dev/null +++ b/migrations/versions/0390_drop_dvla_provider.py @@ -0,0 +1,33 @@ +""" + +Revision ID: 0390_drop_dvla_provider.py +Revises: 0389_no_more_letters.py +Create Date: 2023-02-28 14:25:50.751952 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +revision = '0390_drop_dvla_provider.py' +down_revision = '0389_no_more_letters.py' + + +def upgrade(): + # op.execute("DELETE FROM provider_rates where provider_id = (SELECT id from provider_details where display_name='DVLA')") + op.execute("DELETE FROM provider_details_history where display_name = 'DVLA'") + op.execute("DELETE FROM provider_details where display_name = 'DVLA'") + # ### end Alembic commands ### + + +def downgrade(): + # migration 0066 in reverse + provider_id = str(uuid.uuid4()) + op.execute( + "INSERT INTO provider_details (id, display_name, identifier, priority, notification_type, active, version) values ('{}', 'DVLA', 'dvla', 50, 'letter', true, 1)".format(provider_id) + ) + op.execute( + "INSERT INTO provider_details_history (id, display_name, identifier, priority, notification_type, active, version) values ('{}', 'DVLA', 'dvla', 50, 'letter', true, 1)".format(provider_id) + ) + op.execute("INSERT INTO provider_rates (id, valid_from, rate, provider_id) VALUES ('{}', '{}', 1.0, '{}')".format(uuid.uuid4(), datetime.utcnow(), provider_id)) + # ### end Alembic commands ### diff --git a/tests/app/dao/test_service_data_retention_dao.py b/tests/app/dao/test_service_data_retention_dao.py index 6997b5e26..c640d06c9 100644 --- a/tests/app/dao/test_service_data_retention_dao.py +++ b/tests/app/dao/test_service_data_retention_dao.py @@ -17,27 +17,23 @@ from tests.app.db import create_service, create_service_data_retention def test_fetch_service_data_retention(sample_service): email_data_retention = insert_service_data_retention(sample_service.id, 'email', 3) - letter_data_retention = insert_service_data_retention(sample_service.id, 'letter', 30) sms_data_retention = insert_service_data_retention(sample_service.id, 'sms', 5) list_of_data_retention = fetch_service_data_retention(sample_service.id) - assert len(list_of_data_retention) == 3 + assert len(list_of_data_retention) == 2 assert list_of_data_retention[0] == email_data_retention assert list_of_data_retention[1] == sms_data_retention - assert list_of_data_retention[2] == letter_data_retention def test_fetch_service_data_retention_only_returns_row_for_service(sample_service): another_service = create_service(service_name="Another service") email_data_retention = insert_service_data_retention(sample_service.id, 'email', 3) - letter_data_retention = insert_service_data_retention(sample_service.id, 'letter', 30) insert_service_data_retention(another_service.id, 'sms', 5) list_of_data_retention = fetch_service_data_retention(sample_service.id) - assert len(list_of_data_retention) == 2 + assert len(list_of_data_retention) == 1 assert list_of_data_retention[0] == email_data_retention - assert list_of_data_retention[1] == letter_data_retention def test_fetch_service_data_retention_returns_empty_list_when_no_rows_for_service(sample_service): @@ -136,9 +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'), - ('letter', 'email'), - ('letter', '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) diff --git a/tests/app/provider_details/test_rest.py b/tests/app/provider_details/test_rest.py index 4e2c001e9..0e0da6004 100644 --- a/tests/app/provider_details/test_rest.py +++ b/tests/app/provider_details/test_rest.py @@ -11,7 +11,7 @@ def test_get_provider_details_returns_all_providers(admin_request, notify_db_ses json_resp = admin_request.get('provider_details.get_providers')['provider_details'] assert len(json_resp) > 0 - assert {'ses', 'sns', 'dvla'} == {x['identifier'] for x in json_resp} + assert {'ses', 'sns'} == {x['identifier'] for x in json_resp} def test_get_provider_details_by_id(client, notify_db_session): diff --git a/tests/app/test_model.py b/tests/app/test_model.py index a8cb0e5b5..d46d5b46c 100644 --- a/tests/app/test_model.py +++ b/tests/app/test_model.py @@ -69,10 +69,6 @@ def test_should_not_build_service_guest_list_from_invalid_contact(recipient_type ([NOTIFICATION_FAILED, NOTIFICATION_CREATED], NOTIFICATION_STATUS_TYPES_FAILED + [NOTIFICATION_CREATED]), ([NOTIFICATION_CREATED, NOTIFICATION_PENDING], [NOTIFICATION_CREATED, NOTIFICATION_PENDING]), ([NOTIFICATION_CREATED, NOTIFICATION_TECHNICAL_FAILURE], [NOTIFICATION_CREATED, NOTIFICATION_TECHNICAL_FAILURE]), - ( - [NOTIFICATION_FAILED, NOTIFICATION_SENDING], - NOTIFICATION_STATUS_TYPES_FAILED + [NOTIFICATION_SENDING, NOTIFICATION_CREATED] - ), # checking we don't end up with duplicates ( [NOTIFICATION_FAILED, NOTIFICATION_CREATED, NOTIFICATION_TECHNICAL_FAILURE],