mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-30 12:23:04 -05:00
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
132 lines
4.6 KiB
Python
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)
|
|
]
|