From bdf221a42181828e35380e0e84c34b2927bab3ab Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Mon, 27 Jul 2020 15:33:29 +0100 Subject: [PATCH] add tests for get_earlier_events_for_broadcast_event --- app/dao/broadcast_message_dao.py | 7 ++-- tests/app/dao/test_broadcast_message_dao.py | 43 +++++++++++++++++++++ tests/app/db.py | 27 +++++++++++++ 3 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 tests/app/dao/test_broadcast_message_dao.py diff --git a/app/dao/broadcast_message_dao.py b/app/dao/broadcast_message_dao.py index 325f44e16..c40c1bdab 100644 --- a/app/dao/broadcast_message_dao.py +++ b/app/dao/broadcast_message_dao.py @@ -30,14 +30,15 @@ def dao_get_broadcast_messages_for_service(service_id): ).order_by(BroadcastMessage.created_at) -def dao_get_earlier_events_for_broadcast_event(broadcast_event_id): +def get_earlier_events_for_broadcast_event(broadcast_event_id): """ This is used to build up the references list. """ this_event = BroadcastEvent.query.get(broadcast_event_id) + return BroadcastEvent.query.filter( - BroadcastEvent.broadcast_message_id == this_event.id, + BroadcastEvent.broadcast_message_id == this_event.broadcast_message_id, BroadcastEvent.sent_at < this_event.sent_at ).order_by( BroadcastEvent.sent_at.asc() - ) + ).all() diff --git a/tests/app/dao/test_broadcast_message_dao.py b/tests/app/dao/test_broadcast_message_dao.py new file mode 100644 index 000000000..cefebbbd7 --- /dev/null +++ b/tests/app/dao/test_broadcast_message_dao.py @@ -0,0 +1,43 @@ +from datetime import datetime +from app.models import BROADCAST_TYPE +from app.models import BroadcastEventMessageType +from app.dao.broadcast_message_dao import get_earlier_events_for_broadcast_event + +from tests.app.db import create_broadcast_message, create_template, create_broadcast_event + + +def test_get_earlier_events_for_broadcast_event(sample_service): + t = create_template(sample_service, BROADCAST_TYPE) + bm = create_broadcast_message(t) + + events = [ + create_broadcast_event( + bm, + sent_at=datetime(2020, 1, 1, 12, 0, 0), + message_type=BroadcastEventMessageType.ALERT, + transmitted_content={'body': 'Initial content'} + ), + create_broadcast_event( + bm, + sent_at=datetime(2020, 1, 1, 13, 0, 0), + message_type=BroadcastEventMessageType.UPDATE, + transmitted_content={'body': 'Updated content'} + ), + create_broadcast_event( + bm, + sent_at=datetime(2020, 1, 1, 14, 0, 0), + message_type=BroadcastEventMessageType.UPDATE, + transmitted_content={'body': 'Updated content'}, + transmitted_areas=['wales'] + ), + create_broadcast_event( + bm, + sent_at=datetime(2020, 1, 1, 15, 0, 0), + message_type=BroadcastEventMessageType.CANCEL, + transmitted_finishes_at=datetime(2020, 1, 1, 15, 0, 0), + ) + ] + + # only fetches earlier events, and they're in time order + earlier_events = get_earlier_events_for_broadcast_event(events[2].id) + assert earlier_events == [events[0], events[1]] diff --git a/tests/app/db.py b/tests/app/db.py index 1501c730b..953db68e5 100644 --- a/tests/app/db.py +++ b/tests/app/db.py @@ -62,6 +62,7 @@ from app.models import ( ServiceContactList, BroadcastMessage, BroadcastStatusType, + BroadcastEvent ) @@ -1021,3 +1022,29 @@ def create_broadcast_message( db.session.add(broadcast_message) db.session.commit() return broadcast_message + + +def create_broadcast_event( + broadcast_message, + sent_at=None, + message_type='alert', + transmitted_content=None, + transmitted_areas=None, + transmitted_sender=None, + transmitted_starts_at=None, + transmitted_finishes_at=None, +): + b_e = BroadcastEvent( + service=broadcast_message.service, + broadcast_message=broadcast_message, + sent_at=sent_at or datetime.utcnow(), + message_type=message_type, + transmitted_content=transmitted_content or {'body': 'this is an emergency broadcast message'}, + transmitted_areas=transmitted_areas or ['london'], + transmitted_sender=transmitted_sender or 'www.notifications.service.gov.uk', + transmitted_starts_at=transmitted_starts_at, + transmitted_finishes_at=transmitted_finishes_at, + ) + db.session.add(b_e) + db.session.commit() + return b_e