From f810daa3c56fca4a262d4abe365b191eb673ca7b Mon Sep 17 00:00:00 2001 From: Katie Smith Date: Wed, 25 Apr 2018 12:33:10 +0100 Subject: [PATCH] Only return non-archived letter contact blocks Changed DAO functions which return one letter contact block and all letter contact blocks for a service to only return non-archived ones. --- app/dao/service_letter_contact_dao.py | 6 +++-- .../dao/test_service_letter_contact_dao.py | 26 +++++++++++++++++++ tests/app/db.py | 8 +++--- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/app/dao/service_letter_contact_dao.py b/app/dao/service_letter_contact_dao.py index 893046adf..9c422ef7c 100644 --- a/app/dao/service_letter_contact_dao.py +++ b/app/dao/service_letter_contact_dao.py @@ -10,7 +10,8 @@ def dao_get_letter_contacts_by_service_id(service_id): letter_contacts = db.session.query( ServiceLetterContact ).filter( - ServiceLetterContact.service_id == service_id + ServiceLetterContact.service_id == service_id, + ServiceLetterContact.archived == False # noqa ).order_by( desc(ServiceLetterContact.is_default), desc(ServiceLetterContact.created_at) @@ -24,7 +25,8 @@ def dao_get_letter_contact_by_id(service_id, letter_contact_id): ServiceLetterContact ).filter( ServiceLetterContact.service_id == service_id, - ServiceLetterContact.id == letter_contact_id + ServiceLetterContact.id == letter_contact_id, + ServiceLetterContact.archived == False # noqa ).one() return letter_contact diff --git a/tests/app/dao/test_service_letter_contact_dao.py b/tests/app/dao/test_service_letter_contact_dao.py index fba1c449d..812aa7fba 100644 --- a/tests/app/dao/test_service_letter_contact_dao.py +++ b/tests/app/dao/test_service_letter_contact_dao.py @@ -27,6 +27,23 @@ def test_dao_get_letter_contacts_by_service_id(notify_db_session): assert second_letter_contact == results[2] +def test_dao_get_letter_contacts_by_service_id_does_not_return_archived_contacts(notify_db_session): + service = create_service() + create_letter_contact(service=service, contact_block='Edinburgh, ED1 1AA') + create_letter_contact(service=service, contact_block='Cardiff, CA1 2DB', is_default=False) + archived_contact = create_letter_contact( + service=service, + contact_block='London, E1 8QS', + is_default=False, + archived=True + ) + + results = dao_get_letter_contacts_by_service_id(service_id=service.id) + + assert len(results) == 2 + assert archived_contact not in results + + def test_add_letter_contact_for_service_creates_additional_letter_contact_for_service(notify_db_session): service = create_service() @@ -164,6 +181,15 @@ def test_dao_get_letter_contact_by_id_raises_sqlalchemy_error_when_letter_contac dao_get_letter_contact_by_id(service_id=sample_service.id, letter_contact_id=uuid.uuid4()) +def test_dao_get_letter_contact_by_id_raises_sqlalchemy_error_when_letter_contact_is_archived(sample_service): + archived_contact = create_letter_contact( + service=sample_service, + contact_block='Aberdeen, AB12 23X', + archived=True) + with pytest.raises(SQLAlchemyError): + dao_get_letter_contact_by_id(service_id=sample_service.id, letter_contact_id=archived_contact.id) + + def test_dao_get_letter_contact_by_id_raises_sqlalchemy_error_when_service_does_not_exist(sample_service): letter_contact = create_letter_contact(service=sample_service, contact_block='Some address') with pytest.raises(SQLAlchemyError): diff --git a/tests/app/db.py b/tests/app/db.py index 622083a10..998997730 100644 --- a/tests/app/db.py +++ b/tests/app/db.py @@ -438,14 +438,16 @@ def create_service_sms_sender( def create_letter_contact( - service, - contact_block, - is_default=True + service, + contact_block, + is_default=True, + archived=False ): data = { 'service': service, 'contact_block': contact_block, 'is_default': is_default, + 'archived': archived, } letter_content = ServiceLetterContact(**data)