diff --git a/app/celery/broadcast_message_tasks.py b/app/celery/broadcast_message_tasks.py index 17f989e8f..6d37b871f 100644 --- a/app/celery/broadcast_message_tasks.py +++ b/app/celery/broadcast_message_tasks.py @@ -48,6 +48,10 @@ def send_broadcast_provider_message(broadcast_event_id, provider): 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) if broadcast_event.message_type == BroadcastEventMessageType.ALERT: @@ -59,7 +63,7 @@ def send_broadcast_provider_message(broadcast_event_id, provider): areas=areas, sent=broadcast_event.sent_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: 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), sent=broadcast_event.sent_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: cbc_proxy_provider_client.cancel_broadcast( diff --git a/tests/app/celery/test_broadcast_message_tasks.py b/tests/app/celery/test_broadcast_message_tasks.py index 4e89779a8..ade0d238e 100644 --- a/tests/app/celery/test_broadcast_message_tasks.py +++ b/tests/app/celery/test_broadcast_message_tasks.py @@ -9,7 +9,8 @@ from app.models import ( BroadcastStatusType, BroadcastEventMessageType, BroadcastProviderMessageStatus, - ServiceBroadcastProviderRestriction + ServiceBroadcastProviderRestriction, + ServiceBroadcastSettings, ) 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') @pytest.mark.parametrize('provider,provider_capitalised', [ ['ee', 'EE'],