Compare commits

...

2 Commits

Author SHA1 Message Date
Pea Tyczynska
253a9c9bc6 WIP trying to make end to end test 2022-04-08 16:34:22 +01:00
Pea Tyczynska
b8de45128b WIP integration test for cancel broadcast 2022-04-06 14:43:00 +01:00

View File

@@ -2,6 +2,7 @@ import uuid
import pytest
from freezegun import freeze_time
from unittest.mock import ANY, Mock, call
from app.dao.broadcast_message_dao import (
dao_get_broadcast_message_by_id_and_service_id,
@@ -18,6 +19,8 @@ from tests.app.db import (
create_user,
)
from tests.conftest import set_config
def test_get_broadcast_message(
admin_request,
@@ -383,6 +386,57 @@ def test_create_broadcast_message_400s_if_no_content_or_template(
)
# here we test that flow for cancelling broadcast works correctly from hitting the endpoint up util calling
# lambdas with correct payloads
def test_integration_for_cancel_broadcast_message(
admin_request, sample_broadcast_service, mocker, notify_api
):
template = create_template(sample_broadcast_service, BROADCAST_TYPE, content='emergency broadcast')
broadcast_message = create_broadcast_message(template, status=BroadcastStatusType.BROADCASTING)
canceller = create_user(email='canceller@gov.uk')
sample_broadcast_service.users.append(canceller)
mocker.patch('app.celery.broadcast_message_tasks.notify_celery.send_task')
mock_send_ticket_to_zendesk = mocker.patch(
'app.celery.broadcast_message_tasks.zendesk_client.send_ticket_to_zendesk',
autospec=True,
)
mock_send_broadcast_provider_message = mocker.patch(
'app.celery.broadcast_message_tasks.send_broadcast_provider_message',
)
with set_config(notify_api, 'ENABLED_CBCS', ['ee', 'vodafone']):
response = admin_request.post(
'broadcast_message.update_broadcast_message_status',
_data={'status': BroadcastStatusType.CANCELLED, 'created_by': str(canceller.id)},
service_id=template.service_id,
broadcast_message_id=broadcast_message.id,
_expected_status=200
)
assert len(broadcast_message.events) == 1
cancel_event = broadcast_message.events[0]
assert response['status'] == BroadcastStatusType.CANCELLED
assert response['cancelled_at'] is not None
assert response['cancelled_by_id'] == str(canceller.id)
assert cancel_event.service_id == sample_broadcast_service.id
assert cancel_event.transmitted_areas == broadcast_message.areas
assert cancel_event.message_type == BroadcastEventMessageType.CANCEL
assert cancel_event.transmitted_finishes_at == broadcast_message.finishes_at
assert cancel_event.transmitted_content == {"body": "emergency broadcast"}
assert mock_send_broadcast_provider_message.apply_async.call_args_list == [
call(kwargs={'broadcast_event_id': cancel_event.id, 'provider': 'ee'}, queue='broadcast-tasks'),
call(kwargs={'broadcast_event_id': cancel_event.id, 'provider': 'vodafone'}, queue='broadcast-tasks')
]
# we're on test env so this isn't called
assert mock_send_ticket_to_zendesk.called is False
@pytest.mark.parametrize('status', [
BroadcastStatusType.DRAFT,
BroadcastStatusType.PENDING_APPROVAL,
@@ -492,7 +546,9 @@ def test_update_broadcast_message_allows_sensible_datetime_formats(admin_request
assert response['updated_at'] is not None
def test_update_broadcast_message_doesnt_let_you_update_status(admin_request, sample_broadcast_service):
def test_update_broadcast_message_doesnt_let_you_update_status_when_you_already_update_areas(
admin_request, sample_broadcast_service
):
t = create_template(sample_broadcast_service, BROADCAST_TYPE)
bm = create_broadcast_message(t)
@@ -519,7 +575,7 @@ def test_update_broadcast_message_doesnt_let_you_update_status(admin_request, sa
{"areas": {"ids": ["cardiff"]}},
{"areas": {"simple_polygons": [[[51.28, -3.11], [51.29, -3.12], [51.27, -3.10]]]}},
])
def test_update_broadcast_message_doesnt_let_you_update_areas_but_not_polygons(
def test_update_broadcast_message_doesnt_let_you_update_areas_without_updating_polygons(
admin_request, sample_broadcast_service, incomplete_area_data
):
template = create_template(sample_broadcast_service, BROADCAST_TYPE)