mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-21 07:51:13 -05:00
Use service setting to pick broadcast channel
This falls back to the "test" channel if they do not have a ServiceBroadcastSetting for the moment, but we intend in future PRs to enforce that all broadcast services will have this property.
This commit is contained in:
@@ -48,6 +48,10 @@ def send_broadcast_provider_message(broadcast_event_id, provider):
|
|||||||
for polygon in broadcast_event.transmitted_areas["simple_polygons"]
|
for polygon in broadcast_event.transmitted_areas["simple_polygons"]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
channel = "test"
|
||||||
|
if broadcast_event.service.broadcast_channel:
|
||||||
|
channel = broadcast_event.service.broadcast_channel
|
||||||
|
|
||||||
cbc_proxy_provider_client = cbc_proxy_client.get_proxy(provider)
|
cbc_proxy_provider_client = cbc_proxy_client.get_proxy(provider)
|
||||||
|
|
||||||
if broadcast_event.message_type == BroadcastEventMessageType.ALERT:
|
if broadcast_event.message_type == BroadcastEventMessageType.ALERT:
|
||||||
@@ -59,7 +63,7 @@ def send_broadcast_provider_message(broadcast_event_id, provider):
|
|||||||
areas=areas,
|
areas=areas,
|
||||||
sent=broadcast_event.sent_at_as_cap_datetime_string,
|
sent=broadcast_event.sent_at_as_cap_datetime_string,
|
||||||
expires=broadcast_event.transmitted_finishes_at_as_cap_datetime_string,
|
expires=broadcast_event.transmitted_finishes_at_as_cap_datetime_string,
|
||||||
channel="test"
|
channel=channel
|
||||||
)
|
)
|
||||||
elif broadcast_event.message_type == BroadcastEventMessageType.UPDATE:
|
elif broadcast_event.message_type == BroadcastEventMessageType.UPDATE:
|
||||||
cbc_proxy_provider_client.update_and_send_broadcast(
|
cbc_proxy_provider_client.update_and_send_broadcast(
|
||||||
@@ -71,7 +75,7 @@ def send_broadcast_provider_message(broadcast_event_id, provider):
|
|||||||
previous_provider_messages=broadcast_event.get_earlier_provider_messages(provider),
|
previous_provider_messages=broadcast_event.get_earlier_provider_messages(provider),
|
||||||
sent=broadcast_event.sent_at_as_cap_datetime_string,
|
sent=broadcast_event.sent_at_as_cap_datetime_string,
|
||||||
expires=broadcast_event.transmitted_finishes_at_as_cap_datetime_string,
|
expires=broadcast_event.transmitted_finishes_at_as_cap_datetime_string,
|
||||||
channel="test"
|
channel=channel
|
||||||
)
|
)
|
||||||
elif broadcast_event.message_type == BroadcastEventMessageType.CANCEL:
|
elif broadcast_event.message_type == BroadcastEventMessageType.CANCEL:
|
||||||
cbc_proxy_provider_client.cancel_broadcast(
|
cbc_proxy_provider_client.cancel_broadcast(
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ from app.models import (
|
|||||||
BroadcastStatusType,
|
BroadcastStatusType,
|
||||||
BroadcastEventMessageType,
|
BroadcastEventMessageType,
|
||||||
BroadcastProviderMessageStatus,
|
BroadcastProviderMessageStatus,
|
||||||
ServiceBroadcastProviderRestriction
|
ServiceBroadcastProviderRestriction,
|
||||||
|
ServiceBroadcastSettings,
|
||||||
)
|
)
|
||||||
from app.celery.broadcast_message_tasks import send_broadcast_event, send_broadcast_provider_message, trigger_link_test
|
from app.celery.broadcast_message_tasks import send_broadcast_event, send_broadcast_provider_message, trigger_link_test
|
||||||
|
|
||||||
@@ -159,6 +160,91 @@ def test_send_broadcast_provider_message_sends_data_correctly(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@freeze_time('2020-08-01 12:00')
|
||||||
|
@pytest.mark.parametrize('provider,provider_capitalised', [
|
||||||
|
['ee', 'EE'],
|
||||||
|
['three', 'Three'],
|
||||||
|
['o2', 'O2'],
|
||||||
|
['vodafone', 'Vodafone'],
|
||||||
|
])
|
||||||
|
@pytest.mark.parametrize('channel', ['test', 'severe'])
|
||||||
|
def test_send_broadcast_provider_message_uses_channel_set_on_broadcast_service(
|
||||||
|
notify_db, mocker, sample_service, provider, provider_capitalised, channel
|
||||||
|
):
|
||||||
|
template = create_template(sample_service, BROADCAST_TYPE)
|
||||||
|
broadcast_message = create_broadcast_message(
|
||||||
|
template,
|
||||||
|
areas={
|
||||||
|
'areas': ['london', 'glasgow'],
|
||||||
|
'simple_polygons': [
|
||||||
|
[[50.12, 1.2], [50.13, 1.2], [50.14, 1.21]],
|
||||||
|
[[-4.53, 55.72], [-3.88, 55.72], [-3.88, 55.96], [-4.53, 55.96]],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
status=BroadcastStatusType.BROADCASTING
|
||||||
|
)
|
||||||
|
event = create_broadcast_event(broadcast_message)
|
||||||
|
notify_db.session.add(ServiceBroadcastSettings(service=sample_service, channel=channel))
|
||||||
|
|
||||||
|
mock_create_broadcast = mocker.patch(
|
||||||
|
f'app.clients.cbc_proxy.CBCProxy{provider_capitalised}.create_and_send_broadcast',
|
||||||
|
)
|
||||||
|
|
||||||
|
send_broadcast_provider_message(provider=provider, broadcast_event_id=str(event.id))
|
||||||
|
|
||||||
|
mock_create_broadcast.assert_called_once_with(
|
||||||
|
identifier=mocker.ANY,
|
||||||
|
message_number=mocker.ANY,
|
||||||
|
headline='GOV.UK Notify Broadcast',
|
||||||
|
description='this is an emergency broadcast message',
|
||||||
|
areas=mocker.ANY,
|
||||||
|
sent=mocker.ANY,
|
||||||
|
expires=mocker.ANY,
|
||||||
|
channel=channel,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@freeze_time('2020-08-01 12:00')
|
||||||
|
@pytest.mark.parametrize('provider,provider_capitalised', [
|
||||||
|
['ee', 'EE'],
|
||||||
|
['three', 'Three'],
|
||||||
|
['o2', 'O2'],
|
||||||
|
['vodafone', 'Vodafone'],
|
||||||
|
])
|
||||||
|
def test_send_broadcast_provider_message_defaults_to_test_channel_if_no_service_broadcast_settings(
|
||||||
|
notify_db, mocker, sample_service, provider, provider_capitalised
|
||||||
|
):
|
||||||
|
template = create_template(sample_service, BROADCAST_TYPE)
|
||||||
|
broadcast_message = create_broadcast_message(
|
||||||
|
template,
|
||||||
|
areas={
|
||||||
|
'areas': ['london', 'glasgow'],
|
||||||
|
'simple_polygons': [
|
||||||
|
[[50.12, 1.2], [50.13, 1.2], [50.14, 1.21]],
|
||||||
|
[[-4.53, 55.72], [-3.88, 55.72], [-3.88, 55.96], [-4.53, 55.96]],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
status=BroadcastStatusType.BROADCASTING
|
||||||
|
)
|
||||||
|
event = create_broadcast_event(broadcast_message)
|
||||||
|
mock_create_broadcast = mocker.patch(
|
||||||
|
f'app.clients.cbc_proxy.CBCProxy{provider_capitalised}.create_and_send_broadcast',
|
||||||
|
)
|
||||||
|
|
||||||
|
send_broadcast_provider_message(provider=provider, broadcast_event_id=str(event.id))
|
||||||
|
|
||||||
|
mock_create_broadcast.assert_called_once_with(
|
||||||
|
identifier=mocker.ANY,
|
||||||
|
message_number=mocker.ANY,
|
||||||
|
headline='GOV.UK Notify Broadcast',
|
||||||
|
description='this is an emergency broadcast message',
|
||||||
|
areas=mocker.ANY,
|
||||||
|
sent=mocker.ANY,
|
||||||
|
expires=mocker.ANY,
|
||||||
|
channel="test",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@freeze_time('2020-08-01 12:00')
|
@freeze_time('2020-08-01 12:00')
|
||||||
@pytest.mark.parametrize('provider,provider_capitalised', [
|
@pytest.mark.parametrize('provider,provider_capitalised', [
|
||||||
['ee', 'EE'],
|
['ee', 'EE'],
|
||||||
|
|||||||
Reference in New Issue
Block a user