2020-07-06 10:53:14 +01:00
|
|
|
import pytest
|
|
|
|
|
from flask import url_for
|
2020-07-09 10:33:50 +01:00
|
|
|
from freezegun import freeze_time
|
2020-07-06 10:53:14 +01:00
|
|
|
|
2020-07-09 10:33:50 +01:00
|
|
|
from tests import sample_uuid
|
2020-07-08 16:02:16 +01:00
|
|
|
from tests.conftest import SERVICE_ONE_ID, normalize_spaces
|
2020-07-06 10:53:14 +01:00
|
|
|
|
2020-07-09 10:33:50 +01:00
|
|
|
sample_uuid = sample_uuid()
|
|
|
|
|
|
2020-07-06 10:53:14 +01:00
|
|
|
|
|
|
|
|
@pytest.mark.parametrize('endpoint, extra_args', (
|
2020-07-08 11:34:16 +01:00
|
|
|
('.broadcast_dashboard', {}),
|
2020-07-09 10:33:50 +01:00
|
|
|
('.broadcast', {'template_id': sample_uuid}),
|
|
|
|
|
('.preview_broadcast_areas', {'broadcast_message_id': sample_uuid}),
|
|
|
|
|
('.choose_broadcast_library', {'broadcast_message_id': sample_uuid}),
|
|
|
|
|
('.choose_broadcast_area', {'broadcast_message_id': sample_uuid, 'library_slug': 'countries'}),
|
|
|
|
|
('.remove_broadcast_area', {'broadcast_message_id': sample_uuid, 'area_slug': 'england'}),
|
|
|
|
|
('.preview_broadcast_message', {'broadcast_message_id': sample_uuid}),
|
2020-07-06 10:53:14 +01:00
|
|
|
))
|
|
|
|
|
def test_broadcast_pages_403_without_permission(
|
|
|
|
|
client_request,
|
|
|
|
|
endpoint,
|
|
|
|
|
extra_args,
|
|
|
|
|
):
|
|
|
|
|
client_request.get(
|
|
|
|
|
endpoint,
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
|
|
|
|
_expected_status=403,
|
|
|
|
|
**extra_args
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2020-07-08 11:39:04 +01:00
|
|
|
def test_dashboard_redirects_to_broadcast_dashboard(
|
|
|
|
|
client_request,
|
|
|
|
|
service_one,
|
|
|
|
|
):
|
|
|
|
|
service_one['permissions'] += ['broadcast']
|
|
|
|
|
client_request.get(
|
|
|
|
|
'.service_dashboard',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
|
|
|
|
_expected_redirect=url_for(
|
|
|
|
|
'.broadcast_dashboard',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
|
|
|
|
_external=True,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
|
2020-07-08 11:34:16 +01:00
|
|
|
def test_broadcast_dashboard(
|
|
|
|
|
client_request,
|
|
|
|
|
service_one,
|
|
|
|
|
):
|
|
|
|
|
service_one['permissions'] += ['broadcast']
|
|
|
|
|
client_request.get(
|
|
|
|
|
'.broadcast_dashboard',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
|
2020-07-06 10:53:14 +01:00
|
|
|
def test_broadcast_page(
|
|
|
|
|
client_request,
|
|
|
|
|
service_one,
|
2020-07-09 10:33:50 +01:00
|
|
|
fake_uuid,
|
|
|
|
|
mock_create_broadcast_message,
|
2020-07-06 10:53:14 +01:00
|
|
|
):
|
|
|
|
|
service_one['permissions'] += ['broadcast']
|
|
|
|
|
client_request.get(
|
|
|
|
|
'.broadcast',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
2020-07-09 10:33:50 +01:00
|
|
|
template_id=fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
_expected_redirect=url_for(
|
|
|
|
|
'.preview_broadcast_areas',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
2020-07-09 10:33:50 +01:00
|
|
|
broadcast_message_id=fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
_external=True,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_preview_broadcast_areas_page(
|
|
|
|
|
client_request,
|
|
|
|
|
service_one,
|
2020-07-09 10:33:50 +01:00
|
|
|
fake_uuid,
|
|
|
|
|
mock_get_draft_broadcast_message,
|
2020-07-06 10:53:14 +01:00
|
|
|
):
|
|
|
|
|
service_one['permissions'] += ['broadcast']
|
|
|
|
|
client_request.get(
|
|
|
|
|
'.preview_broadcast_areas',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
2020-07-09 10:33:50 +01:00
|
|
|
broadcast_message_id=fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_choose_broadcast_library_page(
|
|
|
|
|
client_request,
|
|
|
|
|
service_one,
|
2020-07-09 10:33:50 +01:00
|
|
|
mock_get_draft_broadcast_message,
|
|
|
|
|
fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
):
|
|
|
|
|
service_one['permissions'] += ['broadcast']
|
2020-07-08 16:02:16 +01:00
|
|
|
page = client_request.get(
|
2020-07-06 10:53:14 +01:00
|
|
|
'.choose_broadcast_library',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
2020-07-09 10:33:50 +01:00
|
|
|
broadcast_message_id=fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
)
|
2020-07-08 16:02:16 +01:00
|
|
|
assert [
|
|
|
|
|
(normalize_spaces(title.text), normalize_spaces(hint.text))
|
|
|
|
|
for title, hint in list(zip(
|
|
|
|
|
page.select('.file-list-filename-large'), page.select('.file-list-hint-large')
|
|
|
|
|
))
|
|
|
|
|
] == [
|
|
|
|
|
(
|
|
|
|
|
'Counties and Unitary Authorities in England and Wales',
|
|
|
|
|
'Barking and Dagenham, Barnet, Barnsley and 171 more…',
|
|
|
|
|
),
|
|
|
|
|
(
|
|
|
|
|
'Countries',
|
|
|
|
|
'England, Northern Ireland, Scotland and Wales',
|
|
|
|
|
),
|
|
|
|
|
(
|
|
|
|
|
'Regions of England',
|
|
|
|
|
'East Midlands, East of England, London and 6 more…',
|
|
|
|
|
),
|
|
|
|
|
]
|
|
|
|
|
assert page.select_one('a.file-list-filename-large.govuk-link')['href'] == url_for(
|
|
|
|
|
'.choose_broadcast_area',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
2020-07-09 10:33:50 +01:00
|
|
|
broadcast_message_id=fake_uuid,
|
2020-07-08 16:02:16 +01:00
|
|
|
library_slug='counties-and-unitary-authorities-in-england-and-wales',
|
|
|
|
|
)
|
2020-07-06 10:53:14 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_choose_broadcast_area_page(
|
|
|
|
|
client_request,
|
|
|
|
|
service_one,
|
2020-07-09 10:33:50 +01:00
|
|
|
mock_get_draft_broadcast_message,
|
|
|
|
|
fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
):
|
|
|
|
|
service_one['permissions'] += ['broadcast']
|
|
|
|
|
client_request.get(
|
|
|
|
|
'.choose_broadcast_area',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
2020-07-09 10:33:50 +01:00
|
|
|
broadcast_message_id=fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
library_slug='countries',
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2020-07-09 10:33:50 +01:00
|
|
|
def test_add_broadcast_area(
|
|
|
|
|
client_request,
|
|
|
|
|
service_one,
|
|
|
|
|
mock_get_draft_broadcast_message,
|
|
|
|
|
mock_update_broadcast_message,
|
|
|
|
|
fake_uuid,
|
|
|
|
|
):
|
|
|
|
|
service_one['permissions'] += ['broadcast']
|
|
|
|
|
client_request.post(
|
|
|
|
|
'.choose_broadcast_area',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
|
|
|
|
broadcast_message_id=fake_uuid,
|
|
|
|
|
library_slug='countries',
|
|
|
|
|
_data={
|
|
|
|
|
'areas': ['england', 'wales']
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
mock_update_broadcast_message.assert_called_once_with(
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
|
|
|
|
broadcast_message_id=fake_uuid,
|
|
|
|
|
data={
|
|
|
|
|
'areas': ['england', 'scotland', 'wales']
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2020-07-06 10:53:14 +01:00
|
|
|
def test_remove_broadcast_area_page(
|
|
|
|
|
client_request,
|
|
|
|
|
service_one,
|
2020-07-09 10:33:50 +01:00
|
|
|
mock_get_draft_broadcast_message,
|
|
|
|
|
mock_update_broadcast_message,
|
|
|
|
|
fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
):
|
|
|
|
|
service_one['permissions'] += ['broadcast']
|
|
|
|
|
client_request.get(
|
|
|
|
|
'.remove_broadcast_area',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
2020-07-09 10:33:50 +01:00
|
|
|
broadcast_message_id=fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
area_slug='england',
|
|
|
|
|
_expected_redirect=url_for(
|
|
|
|
|
'.preview_broadcast_areas',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
2020-07-09 10:33:50 +01:00
|
|
|
broadcast_message_id=fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
_external=True,
|
|
|
|
|
),
|
2020-07-09 10:33:50 +01:00
|
|
|
)
|
|
|
|
|
mock_update_broadcast_message.assert_called_once_with(
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
|
|
|
|
broadcast_message_id=fake_uuid,
|
|
|
|
|
data={
|
|
|
|
|
'areas': ['scotland']
|
|
|
|
|
},
|
|
|
|
|
)
|
2020-07-06 10:53:14 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_preview_broadcast_message_page(
|
|
|
|
|
client_request,
|
|
|
|
|
service_one,
|
2020-07-09 10:33:50 +01:00
|
|
|
mock_get_draft_broadcast_message,
|
|
|
|
|
mock_get_broadcast_template,
|
|
|
|
|
fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
):
|
|
|
|
|
service_one['permissions'] += ['broadcast']
|
|
|
|
|
client_request.get(
|
|
|
|
|
'.preview_broadcast_message',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
2020-07-09 10:33:50 +01:00
|
|
|
broadcast_message_id=fake_uuid,
|
2020-07-06 10:53:14 +01:00
|
|
|
),
|
2020-07-09 10:33:50 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@freeze_time('2020-02-02 02:02:02.222222')
|
|
|
|
|
def test_start_broadcasting(
|
|
|
|
|
client_request,
|
|
|
|
|
service_one,
|
|
|
|
|
mock_get_draft_broadcast_message,
|
|
|
|
|
mock_get_broadcast_template,
|
|
|
|
|
mock_update_broadcast_message,
|
|
|
|
|
mock_update_broadcast_message_status,
|
|
|
|
|
fake_uuid,
|
|
|
|
|
):
|
|
|
|
|
service_one['permissions'] += ['broadcast']
|
|
|
|
|
client_request.post(
|
|
|
|
|
'.preview_broadcast_message',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
|
|
|
|
broadcast_message_id=fake_uuid,
|
|
|
|
|
),
|
|
|
|
|
mock_update_broadcast_message.assert_called_once_with(
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
|
|
|
|
broadcast_message_id=fake_uuid,
|
|
|
|
|
data={
|
|
|
|
|
'starts_at': '2020-02-02T02:02:02.222222',
|
|
|
|
|
'finishes_at': '2020-02-05T02:02:02.222222',
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
mock_update_broadcast_message_status.assert_called_once_with(
|
|
|
|
|
'broadcasting',
|
|
|
|
|
service_id=SERVICE_ONE_ID,
|
|
|
|
|
broadcast_message_id=fake_uuid,
|
|
|
|
|
)
|