Example #1
0
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
Example #2
0
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
Example #3
0
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')
Example #4
0
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')
Example #5
0
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)
Example #6
0
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')