Files
notifications-api/tests/app/dao/test_broadcast_message_dao.py
Ben Thorner ec1171f85c Switch "areas" field to "areas_2" format
The Admin app is now temporarily using the "areas_2" field while
we migrate "areas" to the new format [1].

[1]: https://github.com/alphagov/notifications-admin/pull/4004
2021-08-27 14:22:11 +01:00

132 lines
4.6 KiB
Python

from datetime import datetime
from app.dao.broadcast_message_dao import (
create_broadcast_provider_message,
dao_get_all_broadcast_messages,
get_earlier_events_for_broadcast_event,
)
from app.dao.broadcast_service_dao import (
insert_or_update_service_broadcast_settings,
)
from app.models import BROADCAST_TYPE, BroadcastEventMessageType
from tests.app.db import (
create_broadcast_event,
create_broadcast_message,
create_service,
create_template,
)
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]]
def test_create_broadcast_provider_message_creates_in_correct_state(sample_broadcast_service):
t = create_template(sample_broadcast_service, BROADCAST_TYPE)
broadcast_message = create_broadcast_message(t)
broadcast_event = create_broadcast_event(
broadcast_message,
sent_at=datetime(2020, 1, 1, 12, 0, 0),
message_type=BroadcastEventMessageType.ALERT,
transmitted_content={'body': 'Initial content'}
)
broadcast_provider_message = create_broadcast_provider_message(broadcast_event, 'fake-provider')
assert broadcast_provider_message.status == 'sending'
assert broadcast_provider_message.broadcast_event_id == broadcast_event.id
assert broadcast_provider_message.created_at is not None
assert broadcast_provider_message.updated_at is None
def test_dao_get_all_broadcast_messages(sample_broadcast_service):
template_1 = create_template(sample_broadcast_service, BROADCAST_TYPE)
# older message, should appear second in list
broadcast_message_1 = create_broadcast_message(
template_1,
starts_at=datetime(2021, 6, 15, 12, 0, 0),
status='cancelled')
service_2 = create_service(
service_name="broadcast service 2",
service_permissions=[BROADCAST_TYPE]
)
insert_or_update_service_broadcast_settings(service_2, channel="severe")
template_2 = create_template(service_2, BROADCAST_TYPE)
# newer message, should appear first in list
broadcast_message_2 = create_broadcast_message(
template_2,
stubbed=False,
status='broadcasting',
starts_at=datetime(2021, 6, 20, 12, 0, 0),
)
# broadcast_message_stubbed
create_broadcast_message(
template_2,
stubbed=True,
status='broadcasting',
starts_at=datetime(2021, 6, 15, 12, 0, 0),
)
# broadcast_message_old
create_broadcast_message(
template_2,
stubbed=False,
status='completed',
starts_at=datetime(2021, 5, 20, 12, 0, 0),
)
# broadcast_message_rejected
create_broadcast_message(
template_2,
stubbed=False,
status='rejected',
starts_at=datetime(2021, 6, 15, 12, 0, 0),
)
broadcast_messages = dao_get_all_broadcast_messages()
assert len(broadcast_messages) == 2
assert broadcast_messages == [
(
broadcast_message_2.id, None, 'severe', 'Dear Sir/Madam, Hello. Yours Truly, The Government.',
{'ids': [], 'simple_polygons': []}, 'broadcasting', datetime(2021, 6, 20, 12, 0),
None, None, None),
(
broadcast_message_1.id, None, 'severe', 'Dear Sir/Madam, Hello. Yours Truly, The Government.',
{'ids': [], 'simple_polygons': []}, 'cancelled', datetime(2021, 6, 15, 12, 0),
None, None, None)
]