Test sanity checks by calling top-level task

Since the checks are only performed in one place we can easily take
extra care to ensure this in the tests, noting that we don't need to
do any additional setup, except if no exception is raised - I've left
these tests as-is, to avoid doing more setup.

Note that we still check the happy path for when a provider message is
already sending - just in a different test [1].

[1]: 3d71815956/tests/app/celery/test_broadcast_message_tasks.py (L263)
This commit is contained in:
Ben Thorner
2021-04-19 15:58:56 +01:00
parent ee52e3e2c9
commit 936c9ebdfe

View File

@@ -611,7 +611,7 @@ def test_check_provider_message_should_send_doesnt_raise_if_event_hasnt_expired_
@freeze_time('2021-01-01 12:00') @freeze_time('2021-01-01 12:00')
def test_check_provider_message_should_send_raises_if_event_has_expired(sample_template): def test_send_broadcast_provider_message_raises_if_event_has_expired(sample_template):
broadcast_message = create_broadcast_message(sample_template) broadcast_message = create_broadcast_message(sample_template)
current_event = create_broadcast_event( current_event = create_broadcast_event(
broadcast_message, broadcast_message,
@@ -619,12 +619,12 @@ def test_check_provider_message_should_send_raises_if_event_has_expired(sample_t
transmitted_finishes_at=datetime(2021, 1, 1, 11, 59), transmitted_finishes_at=datetime(2021, 1, 1, 11, 59),
) )
with pytest.raises(BroadcastIntegrityError) as exc: with pytest.raises(BroadcastIntegrityError) as exc:
check_provider_message_should_send(current_event, 'ee') send_broadcast_provider_message(current_event.id, 'ee')
assert 'The expiry time of 2021-01-01 11:59:00 has already passed' in str(exc.value) assert 'The expiry time of 2021-01-01 11:59:00 has already passed' in str(exc.value)
@freeze_time('2021-01-01 12:00') @freeze_time('2021-01-01 12:00')
def test_check_provider_message_should_send_raises_if_older_event_still_sending(sample_template): def test_send_broadcast_provider_message_raises_if_older_event_still_sending(sample_template):
broadcast_message = create_broadcast_message(sample_template) broadcast_message = create_broadcast_message(sample_template)
# event approved at midnight # event approved at midnight
past_succesful_event = create_broadcast_event( past_succesful_event = create_broadcast_event(
@@ -650,13 +650,13 @@ def test_check_provider_message_should_send_raises_if_older_event_still_sending(
# we havent sent the previous update yet - it's still in sending - so don't try and send this one. # we havent sent the previous update yet - it's still in sending - so don't try and send this one.
with pytest.raises(BroadcastIntegrityError) as exc: with pytest.raises(BroadcastIntegrityError) as exc:
check_provider_message_should_send(current_event, 'ee') send_broadcast_provider_message(current_event.id, 'ee')
assert f'Previous event {past_still_sending_event.id} (type update) has not finished sending to provider ee' in str(exc.value) # noqa assert f'Previous event {past_still_sending_event.id} (type update) has not finished sending to provider ee' in str(exc.value) # noqa
@freeze_time('2021-01-01 12:00') @freeze_time('2021-01-01 12:00')
def test_check_provider_message_should_send_raises_if_older_event_hasnt_started_sending_yet(sample_template): def test_send_broadcast_provider_message_raises_if_older_event_hasnt_started_sending_yet(sample_template):
broadcast_message = create_broadcast_message(sample_template) broadcast_message = create_broadcast_message(sample_template)
# event approved at midnight # event approved at midnight
past_succesful_event = create_broadcast_event( past_succesful_event = create_broadcast_event(
@@ -682,7 +682,7 @@ def test_check_provider_message_should_send_raises_if_older_event_hasnt_started_
# we shouldn't send the update now, because a previous event is still stuck in sending # we shouldn't send the update now, because a previous event is still stuck in sending
with pytest.raises(BroadcastIntegrityError) as exc: with pytest.raises(BroadcastIntegrityError) as exc:
check_provider_message_should_send(current_event, 'ee') send_broadcast_provider_message(current_event.id, 'ee')
assert f'Previous event {past_still_sending_event.id} (type update) has no provider_message for provider ee' in str(exc.value) # noqa assert f'Previous event {past_still_sending_event.id} (type update) has no provider_message for provider ee' in str(exc.value) # noqa
@@ -709,33 +709,25 @@ def test_check_provider_message_should_send_doesnt_raise_if_newer_event_not_acke
@pytest.mark.parametrize('existing_message_status', [ @pytest.mark.parametrize('existing_message_status', [
BroadcastProviderMessageStatus.SENDING, BroadcastProviderMessageStatus.ACK,
pytest.param( BroadcastProviderMessageStatus.ERR,
BroadcastProviderMessageStatus.ACK, BroadcastProviderMessageStatus.TECHNICAL_FAILURE,
marks=pytest.mark.xfail(raises=BroadcastIntegrityError)
),
pytest.param(
BroadcastProviderMessageStatus.ERR,
marks=pytest.mark.xfail(raises=BroadcastIntegrityError)
),
pytest.param(
BroadcastProviderMessageStatus.TECHNICAL_FAILURE,
marks=pytest.mark.xfail(raises=BroadcastIntegrityError)
),
]) ])
def test_check_provider_message_should_send_raises_if_current_event_already_has_provider_message_not_in_sending( def test_send_broadcast_provider_message_raises_if_current_event_already_has_provider_message_not_in_sending(
sample_template, sample_template,
existing_message_status existing_message_status
): ):
broadcast_message = create_broadcast_message(sample_template) broadcast_message = create_broadcast_message(sample_template)
current_event = create_broadcast_event(broadcast_message, message_type='alert') current_event = create_broadcast_event(broadcast_message, message_type='alert')
create_broadcast_provider_message(current_event, provider='ee', status=existing_message_status) create_broadcast_provider_message(current_event, provider='ee', status=existing_message_status)
check_provider_message_should_send(current_event, 'ee') with pytest.raises(BroadcastIntegrityError) as exc:
send_broadcast_provider_message(current_event.id, 'ee')
assert f'in status {existing_message_status}' in str(exc.value)
def test_check_provider_message_should_send_raises_if_service_is_suspended( def test_send_broadcast_provider_message_raises_if_service_is_suspended(
sample_broadcast_service, sample_broadcast_service,
): ):
sample_broadcast_service.active = False sample_broadcast_service.active = False
@@ -743,12 +735,12 @@ def test_check_provider_message_should_send_raises_if_service_is_suspended(
current_event = create_broadcast_event(broadcast_message, message_type='alert') current_event = create_broadcast_event(broadcast_message, message_type='alert')
with pytest.raises(BroadcastIntegrityError) as exc: with pytest.raises(BroadcastIntegrityError) as exc:
check_provider_message_should_send(current_event, 'ee') send_broadcast_provider_message(current_event.id, 'ee')
assert 'service is suspended' in str(exc.value) assert 'service is suspended' in str(exc.value)
def test_check_provider_message_should_send_raises_if_service_is_not_live( def test_send_broadcast_provider_message_raises_if_service_is_not_live(
sample_broadcast_service, sample_broadcast_service,
): ):
sample_broadcast_service.restricted = True sample_broadcast_service.restricted = True
@@ -756,19 +748,19 @@ def test_check_provider_message_should_send_raises_if_service_is_not_live(
current_event = create_broadcast_event(broadcast_message, message_type='alert') current_event = create_broadcast_event(broadcast_message, message_type='alert')
with pytest.raises(BroadcastIntegrityError) as exc: with pytest.raises(BroadcastIntegrityError) as exc:
check_provider_message_should_send(current_event, 'ee') send_broadcast_provider_message(current_event.id, 'ee')
assert 'service is not live' in str(exc.value) assert 'service is not live' in str(exc.value)
def test_check_provider_message_should_send_raises_if_message_is_stubbed( def test_send_broadcast_provider_message_raises_if_message_is_stubbed(
sample_template, sample_template,
): ):
broadcast_message = create_broadcast_message(sample_template, stubbed=True) broadcast_message = create_broadcast_message(sample_template, stubbed=True)
current_event = create_broadcast_event(broadcast_message, message_type='alert') current_event = create_broadcast_event(broadcast_message, message_type='alert')
with pytest.raises(BroadcastIntegrityError) as exc: with pytest.raises(BroadcastIntegrityError) as exc:
check_provider_message_should_send(current_event, 'ee') send_broadcast_provider_message(current_event.id, 'ee')
assert 'message is stubbed' in str(exc.value) assert 'message is stubbed' in str(exc.value)