def test_check_provider_message_should_send_raises_if_older_event_hasnt_started_sending_yet(sample_template): broadcast_message = create_broadcast_message(sample_template) # event approved at midnight past_succesful_event = create_broadcast_event( broadcast_message, message_type='alert', sent_at=datetime(2021, 1, 1, 0, 0), ) # event updated at 5am past_still_sending_event = create_broadcast_event( broadcast_message, message_type='update', sent_at=datetime(2021, 1, 1, 5, 0), ) # event updated at 7am current_event = create_broadcast_event( broadcast_message, message_type='update', sent_at=datetime(2021, 1, 1, 7, 0), ) # no provider message for past_still_sending_event create_broadcast_provider_message(past_succesful_event, provider='ee', status=BroadcastProviderMessageStatus.ACK) # we shouldn't send the update now, because a previous event is still stuck in sending with pytest.raises(CBCProxyFatalException) as exc: check_provider_message_should_send(current_event, 'ee') assert f'Previous event {past_still_sending_event.id} (type update) has no provider_message for provider ee' in str(exc.value) # noqa
def test_check_provider_message_should_send_raises_if_older_event_still_sending(sample_template): broadcast_message = create_broadcast_message(sample_template) # event approved at midnight past_succesful_event = create_broadcast_event( broadcast_message, message_type='alert', sent_at=datetime(2021, 1, 1, 0, 0), ) # event updated at 5am (this event is still sending) past_still_sending_event = create_broadcast_event( broadcast_message, message_type='update', sent_at=datetime(2021, 1, 1, 5, 0), ) # event updated again at 7am current_event = create_broadcast_event( broadcast_message, message_type='update', sent_at=datetime(2021, 1, 1, 7, 0), ) create_broadcast_provider_message(past_succesful_event, provider='ee', status=BroadcastProviderMessageStatus.ACK) create_broadcast_provider_message(past_still_sending_event, provider='ee', status=BroadcastProviderMessageStatus.SENDING) # noqa # we havent sent the previous update yet - it's still in sending - so don't try and send this one. with pytest.raises(CBCProxyFatalException) as exc: check_provider_message_should_send(current_event, 'ee') assert f'Previous event {past_still_sending_event.id} (type update) has not finished sending to provider ee' in str(exc.value) # noqa
def test_check_provider_message_should_send_doesnt_raise_if_event_hasnt_expired_yet(sample_template): broadcast_message = create_broadcast_message(sample_template) current_event = create_broadcast_event( broadcast_message, transmitted_starts_at=datetime(2021, 1, 1, 0, 0), transmitted_finishes_at=datetime(2021, 1, 1, 12, 1), ) check_provider_message_should_send(current_event, 'ee')
def test_check_provider_message_should_send_raises_if_current_event_already_has_provider_message_not_in_sending( sample_template, existing_message_status ): broadcast_message = create_broadcast_message(sample_template) current_event = create_broadcast_event(broadcast_message, message_type='alert') create_broadcast_provider_message(current_event, provider='ee', status=existing_message_status) check_provider_message_should_send(current_event, 'ee')
def test_check_provider_message_should_send_raises_if_event_has_expired(sample_template): broadcast_message = create_broadcast_message(sample_template) current_event = create_broadcast_event( broadcast_message, transmitted_starts_at=datetime(2021, 1, 1, 0, 0), transmitted_finishes_at=datetime(2021, 1, 1, 11, 59), ) with pytest.raises(CBCProxyFatalException) as exc: check_provider_message_should_send(current_event, 'ee') assert 'The expiry time of 2021-01-01 11:59:00 has already passed' in str(exc.value)
def test_check_provider_message_should_send_doesnt_raise_if_newer_event_not_acked_yet(sample_template): broadcast_message = create_broadcast_message(sample_template) # event approved at midnight current_event = create_broadcast_event( broadcast_message, message_type='alert', sent_at=datetime(2021, 1, 1, 0, 0), ) # create a future event create_broadcast_event( broadcast_message, message_type='cancel', sent_at=datetime(2021, 1, 1, 10, 0), ) # this doesn't raise, because the alert event got an ack. The cancel doesn't have an event yet # but this task is only interested in the current task (the update) so doesn't worry about that check_provider_message_should_send(current_event, 'ee')