mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-02 04:38:38 -04:00
Use sample_broadcast_service fixture
Now that every service has a row in the service_broadcast_settings table, we want all our tests to use the `sample_broadcast_service` fixture as this ensures it has a row in that table and is correctly representitive of what a real broadcast service looks like.
This commit is contained in:
@@ -2533,16 +2533,7 @@ class BroadcastProviderMessageNumber(db.Model):
|
||||
|
||||
class ServiceBroadcastSettings(db.Model):
|
||||
"""
|
||||
For the moment, broadcasts services CAN have a row in this table which will configure which broadcast
|
||||
channel they will send to. If they don't then we will assume they should send to the test channel.
|
||||
|
||||
There should only be one row per service in this table, and this is enforced by
|
||||
the service_id being a primary key.
|
||||
|
||||
TODO: We should enforce that every broadcast service will have a row in this table. We will need to do
|
||||
this when the admin turns a service into a broadcast service, it inserts a row into this table and adds
|
||||
the service permission for broadcasts for the service. Once that is up and running, we then should write
|
||||
a DB migration to create rows for all broadcast services that do not have one yet in this table.
|
||||
Every broadcast service should have one and only one row in this table.
|
||||
"""
|
||||
__tablename__ = "service_broadcast_settings"
|
||||
|
||||
|
||||
@@ -10,8 +10,7 @@ from app.models import (
|
||||
BROADCAST_TYPE,
|
||||
BroadcastStatusType,
|
||||
BroadcastEventMessageType,
|
||||
BroadcastProviderMessageStatus,
|
||||
ServiceBroadcastSettings,
|
||||
BroadcastProviderMessageStatus
|
||||
)
|
||||
from app.clients.cbc_proxy import CBCProxyRetryableException, CBCProxyFatalException
|
||||
from app.celery.broadcast_message_tasks import (
|
||||
@@ -31,8 +30,8 @@ from tests.app.db import (
|
||||
from tests.conftest import set_config
|
||||
|
||||
|
||||
def test_send_broadcast_event_queues_up_for_active_providers(mocker, notify_api, sample_service):
|
||||
template = create_template(sample_service, BROADCAST_TYPE)
|
||||
def test_send_broadcast_event_queues_up_for_active_providers(mocker, notify_api, sample_broadcast_service):
|
||||
template = create_template(sample_broadcast_service, BROADCAST_TYPE)
|
||||
broadcast_message = create_broadcast_message(template, status=BroadcastStatusType.BROADCASTING)
|
||||
event = create_broadcast_event(broadcast_message)
|
||||
|
||||
@@ -53,12 +52,10 @@ def test_send_broadcast_event_only_sends_to_one_provider_if_set_on_service(
|
||||
mocker,
|
||||
notify_db,
|
||||
notify_api,
|
||||
sample_service
|
||||
sample_broadcast_service
|
||||
):
|
||||
settings = ServiceBroadcastSettings(service=sample_service, channel="test", provider="vodafone")
|
||||
notify_db.session.add(settings)
|
||||
|
||||
template = create_template(sample_service, BROADCAST_TYPE)
|
||||
sample_broadcast_service.allowed_broadcast_provider = "vodafone"
|
||||
template = create_template(sample_broadcast_service, BROADCAST_TYPE)
|
||||
broadcast_message = create_broadcast_message(template, status=BroadcastStatusType.BROADCASTING)
|
||||
event = create_broadcast_event(broadcast_message)
|
||||
|
||||
@@ -78,12 +75,10 @@ def test_send_broadcast_event_does_nothing_if_provider_set_on_service_isnt_enabl
|
||||
mocker,
|
||||
notify_db,
|
||||
notify_api,
|
||||
sample_service
|
||||
sample_broadcast_service
|
||||
):
|
||||
settings = ServiceBroadcastSettings(service=sample_service, channel="test", provider="three")
|
||||
notify_db.session.add(settings)
|
||||
|
||||
template = create_template(sample_service, BROADCAST_TYPE)
|
||||
sample_broadcast_service.allowed_broadcast_provider = "three"
|
||||
template = create_template(sample_broadcast_service, BROADCAST_TYPE)
|
||||
broadcast_message = create_broadcast_message(template, status=BroadcastStatusType.BROADCASTING)
|
||||
event = create_broadcast_event(broadcast_message)
|
||||
|
||||
@@ -117,9 +112,9 @@ def test_send_broadcast_event_does_nothing_if_cbc_proxy_disabled(mocker, notify_
|
||||
['vodafone', 'Vodafone'],
|
||||
])
|
||||
def test_send_broadcast_provider_message_sends_data_correctly(
|
||||
mocker, sample_service, provider, provider_capitalised
|
||||
mocker, sample_broadcast_service, provider, provider_capitalised
|
||||
):
|
||||
template = create_template(sample_service, BROADCAST_TYPE)
|
||||
template = create_template(sample_broadcast_service, BROADCAST_TYPE)
|
||||
broadcast_message = create_broadcast_message(
|
||||
template,
|
||||
areas={
|
||||
@@ -160,7 +155,7 @@ def test_send_broadcast_provider_message_sends_data_correctly(
|
||||
}],
|
||||
sent=event.sent_at_as_cap_datetime_string,
|
||||
expires=event.transmitted_finishes_at_as_cap_datetime_string,
|
||||
channel="test",
|
||||
channel="severe",
|
||||
)
|
||||
|
||||
|
||||
@@ -173,9 +168,10 @@ def test_send_broadcast_provider_message_sends_data_correctly(
|
||||
])
|
||||
@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
|
||||
notify_db, mocker, sample_broadcast_service, provider, provider_capitalised, channel
|
||||
):
|
||||
template = create_template(sample_service, BROADCAST_TYPE)
|
||||
sample_broadcast_service.broadcast_channel = channel
|
||||
template = create_template(sample_broadcast_service, BROADCAST_TYPE)
|
||||
broadcast_message = create_broadcast_message(
|
||||
template,
|
||||
areas={
|
||||
@@ -188,7 +184,6 @@ def test_send_broadcast_provider_message_uses_channel_set_on_broadcast_service(
|
||||
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',
|
||||
@@ -249,8 +244,8 @@ def test_send_broadcast_provider_message_defaults_to_test_channel_if_no_service_
|
||||
)
|
||||
|
||||
|
||||
def test_send_broadcast_provider_message_works_if_we_retried_previously(mocker, sample_service):
|
||||
template = create_template(sample_service, BROADCAST_TYPE)
|
||||
def test_send_broadcast_provider_message_works_if_we_retried_previously(mocker, sample_broadcast_service):
|
||||
template = create_template(sample_broadcast_service, BROADCAST_TYPE)
|
||||
broadcast_message = create_broadcast_message(
|
||||
template,
|
||||
areas={'areas': [], 'simple_polygons': [], },
|
||||
@@ -287,7 +282,7 @@ def test_send_broadcast_provider_message_works_if_we_retried_previously(mocker,
|
||||
areas=[],
|
||||
sent=event.sent_at_as_cap_datetime_string,
|
||||
expires=event.transmitted_finishes_at_as_cap_datetime_string,
|
||||
channel='test',
|
||||
channel='severe',
|
||||
)
|
||||
|
||||
|
||||
@@ -299,10 +294,10 @@ def test_send_broadcast_provider_message_works_if_we_retried_previously(mocker,
|
||||
['vodafone', 'Vodafone'],
|
||||
])
|
||||
def test_send_broadcast_provider_message_sends_data_correctly_when_broadcast_message_has_no_template(
|
||||
mocker, sample_service, provider, provider_capitalised
|
||||
mocker, sample_broadcast_service, provider, provider_capitalised
|
||||
):
|
||||
broadcast_message = create_broadcast_message(
|
||||
service=sample_service,
|
||||
service=sample_broadcast_service,
|
||||
template=None,
|
||||
content='this is an emergency broadcast message',
|
||||
areas={
|
||||
@@ -332,7 +327,7 @@ def test_send_broadcast_provider_message_sends_data_correctly_when_broadcast_mes
|
||||
areas=mocker.ANY,
|
||||
sent=mocker.ANY,
|
||||
expires=mocker.ANY,
|
||||
channel="test"
|
||||
channel="severe"
|
||||
)
|
||||
|
||||
|
||||
@@ -343,9 +338,9 @@ def test_send_broadcast_provider_message_sends_data_correctly_when_broadcast_mes
|
||||
['vodafone', 'Vodafone'],
|
||||
])
|
||||
def test_send_broadcast_provider_message_sends_update_with_references(
|
||||
mocker, sample_service, provider, provider_capitalised
|
||||
mocker, sample_broadcast_service, provider, provider_capitalised
|
||||
):
|
||||
template = create_template(sample_service, BROADCAST_TYPE, content='content')
|
||||
template = create_template(sample_broadcast_service, BROADCAST_TYPE, content='content')
|
||||
|
||||
broadcast_message = create_broadcast_message(
|
||||
template,
|
||||
@@ -384,7 +379,7 @@ def test_send_broadcast_provider_message_sends_update_with_references(
|
||||
],
|
||||
sent=update_event.sent_at_as_cap_datetime_string,
|
||||
expires=update_event.transmitted_finishes_at_as_cap_datetime_string,
|
||||
channel="test"
|
||||
channel="severe"
|
||||
)
|
||||
|
||||
|
||||
@@ -395,9 +390,9 @@ def test_send_broadcast_provider_message_sends_update_with_references(
|
||||
['vodafone', 'Vodafone'],
|
||||
])
|
||||
def test_send_broadcast_provider_message_sends_cancel_with_references(
|
||||
mocker, sample_service, provider, provider_capitalised
|
||||
mocker, sample_broadcast_service, provider, provider_capitalised
|
||||
):
|
||||
template = create_template(sample_service, BROADCAST_TYPE, content='content')
|
||||
template = create_template(sample_broadcast_service, BROADCAST_TYPE, content='content')
|
||||
|
||||
broadcast_message = create_broadcast_message(
|
||||
template,
|
||||
@@ -443,8 +438,8 @@ def test_send_broadcast_provider_message_sends_cancel_with_references(
|
||||
['o2', 'O2'],
|
||||
['vodafone', 'Vodafone'],
|
||||
])
|
||||
def test_send_broadcast_provider_message_errors(mocker, sample_service, provider, provider_capitalised):
|
||||
template = create_template(sample_service, BROADCAST_TYPE)
|
||||
def test_send_broadcast_provider_message_errors(mocker, sample_broadcast_service, provider, provider_capitalised):
|
||||
template = create_template(sample_broadcast_service, BROADCAST_TYPE)
|
||||
|
||||
broadcast_message = create_broadcast_message(
|
||||
template,
|
||||
@@ -485,7 +480,7 @@ def test_send_broadcast_provider_message_errors(mocker, sample_service, provider
|
||||
}],
|
||||
sent=event.sent_at_as_cap_datetime_string,
|
||||
expires=event.transmitted_finishes_at_as_cap_datetime_string,
|
||||
channel="test"
|
||||
channel="severe"
|
||||
)
|
||||
mock_retry.assert_called_once_with(
|
||||
countdown=1,
|
||||
@@ -503,11 +498,11 @@ def test_send_broadcast_provider_message_errors(mocker, sample_service, provider
|
||||
])
|
||||
def test_send_broadcast_provider_message_delays_retry_exponentially(
|
||||
mocker,
|
||||
sample_service,
|
||||
sample_broadcast_service,
|
||||
num_retries,
|
||||
expected_countdown
|
||||
):
|
||||
template = create_template(sample_service, BROADCAST_TYPE)
|
||||
template = create_template(sample_broadcast_service, BROADCAST_TYPE)
|
||||
|
||||
broadcast_message = create_broadcast_message(template, status=BroadcastStatusType.BROADCASTING)
|
||||
event = create_broadcast_event(broadcast_message)
|
||||
@@ -536,7 +531,7 @@ def test_send_broadcast_provider_message_delays_retry_exponentially(
|
||||
areas=[],
|
||||
sent=event.sent_at_as_cap_datetime_string,
|
||||
expires=event.transmitted_finishes_at_as_cap_datetime_string,
|
||||
channel='test',
|
||||
channel='severe',
|
||||
)
|
||||
mock_retry.assert_called_once_with(
|
||||
countdown=expected_countdown,
|
||||
|
||||
@@ -282,23 +282,22 @@ def test_get_service_by_id(admin_request, sample_service):
|
||||
}
|
||||
|
||||
|
||||
def test_get_service_by_id_returns_allowed_broadcast_provider(notify_db, admin_request, sample_service):
|
||||
settings = ServiceBroadcastSettings(service=sample_service, channel="severe", provider="ee")
|
||||
notify_db.session.add(settings)
|
||||
|
||||
json_resp = admin_request.get('service.get_service_by_id', service_id=sample_service.id)
|
||||
assert json_resp['data']['id'] == str(sample_service.id)
|
||||
assert json_resp['data']['allowed_broadcast_provider'] == 'ee'
|
||||
|
||||
|
||||
def test_get_service_by_id_for_broadcast_service_takes_channel_from_service_broadcast_settings(
|
||||
admin_request, sample_broadcast_service
|
||||
@pytest.mark.parametrize('broadcast_channel,allowed_broadcast_provider', (
|
||||
('test', None),
|
||||
('severe', None),
|
||||
('test', 'ee'),
|
||||
('severe', 'three'),
|
||||
))
|
||||
def test_get_service_by_id_for_broadcast_service_returns_broadcast_keys(
|
||||
notify_db, admin_request, sample_broadcast_service, broadcast_channel, allowed_broadcast_provider
|
||||
):
|
||||
assert sample_broadcast_service.broadcast_channel == 'severe'
|
||||
sample_broadcast_service.broadcast_channel = broadcast_channel
|
||||
sample_broadcast_service.allowed_broadcast_provider = allowed_broadcast_provider
|
||||
|
||||
json_resp = admin_request.get('service.get_service_by_id', service_id=sample_broadcast_service.id)
|
||||
assert json_resp['data']['id'] == str(sample_broadcast_service.id)
|
||||
assert json_resp['data']['broadcast_channel'] == 'severe'
|
||||
assert json_resp['data']['allowed_broadcast_provider'] == allowed_broadcast_provider
|
||||
assert json_resp['data']['broadcast_channel'] == broadcast_channel
|
||||
|
||||
|
||||
def test_get_service_by_id_for_service_with_broadcast_permission_sets_channel_as_test_if_no_service_broadcast_settings(
|
||||
|
||||
Reference in New Issue
Block a user