diff --git a/app/templates/views/broadcast/preview-message.html b/app/templates/views/broadcast/preview-message.html
index bed3cae07..8fa7a771c 100644
--- a/app/templates/views/broadcast/preview-message.html
+++ b/app/templates/views/broadcast/preview-message.html
@@ -1,7 +1,8 @@
{% from "components/button/macro.njk" import govukButton %}
{% from "components/form.html" import form_wrapper %}
{% from "components/page-header.html" import page_header %}
-{% from "components/page-footer.html" import sticky_page_footer %}
+{% from "components/page-footer.html" import page_footer %}
+{% from "components/radios.html" import radio_select %}
{% extends "withnav_template.html" %}
@@ -28,7 +29,11 @@
{{ broadcast_message.template|string }}
{% call form_wrapper() %}
- {{ sticky_page_footer('Submit for approval') }}
+ {{ radio_select(
+ form.finishes_at,
+ show_now_as_default=False
+ ) }}
+ {{ page_footer('Submit for approval') }}
{% endcall %}
{% endblock %}
diff --git a/tests/app/main/test_choose_time_form.py b/tests/app/main/test_choose_time_form.py
index a0f2618c4..41b32f90a 100644
--- a/tests/app/main/test_choose_time_form.py
+++ b/tests/app/main/test_choose_time_form.py
@@ -11,19 +11,19 @@ def test_form_contains_next_24h(app_):
# Friday
assert choices[0] == ('', 'Now')
- assert choices[1] == ('2016-01-01T12:00:00.061258', 'Today at midday')
- assert choices[13] == ('2016-01-02T00:00:00.061258', 'Today at midnight')
+ assert choices[1] == ('2016-01-01T12:00:00', 'Today at midday')
+ assert choices[13] == ('2016-01-02T00:00:00', 'Today at midnight')
# Saturday
- assert choices[14] == ('2016-01-02T01:00:00.061258', 'Tomorrow at 1am')
- assert choices[37] == ('2016-01-03T00:00:00.061258', 'Tomorrow at midnight')
+ assert choices[14] == ('2016-01-02T01:00:00', 'Tomorrow at 1am')
+ assert choices[37] == ('2016-01-03T00:00:00', 'Tomorrow at midnight')
# Sunday
- assert choices[38] == ('2016-01-03T01:00:00.061258', 'Sunday at 1am')
+ assert choices[38] == ('2016-01-03T01:00:00', 'Sunday at 1am')
# Monday
- assert choices[84] == ('2016-01-04T23:00:00.061258', 'Monday at 11pm')
- assert choices[85] == ('2016-01-05T00:00:00.061258', 'Monday at midnight')
+ assert choices[84] == ('2016-01-04T23:00:00', 'Monday at 11pm')
+ assert choices[85] == ('2016-01-05T00:00:00', 'Monday at midnight')
with pytest.raises(IndexError):
assert choices[
diff --git a/tests/app/main/views/test_broadcast.py b/tests/app/main/views/test_broadcast.py
index edad43dd8..e9b2a761d 100644
--- a/tests/app/main/views/test_broadcast.py
+++ b/tests/app/main/views/test_broadcast.py
@@ -278,22 +278,79 @@ def test_remove_broadcast_area_page(
)
+@pytest.mark.parametrize('end_time', (
+
+ # Before now
+ pytest.param('2020-02-02T02:00:00', marks=pytest.mark.xfail),
+
+ # End of the current hour
+ pytest.param('2020-02-02T03:00:00'),
+
+ # Midnight 3 days ahead
+ pytest.param('2020-02-06T00:00:00'),
+
+ # 1am 4 days ahead
+ pytest.param('2020-02-06T01:00:00', marks=pytest.mark.xfail),
+
+))
+@freeze_time('2020-02-02 02:02:02')
def test_preview_broadcast_message_page(
client_request,
service_one,
mock_get_draft_broadcast_message,
mock_get_broadcast_template,
fake_uuid,
+ end_time,
):
service_one['permissions'] += ['broadcast']
- client_request.get(
+
+ page = client_request.get(
'.preview_broadcast_message',
service_id=SERVICE_ONE_ID,
broadcast_message_id=fake_uuid,
- ),
+ )
+
+ assert [
+ normalize_spaces(area.text)
+ for area in page.select('.area-list-item.area-list-item--unremoveable')
+ ] == [
+ 'England',
+ 'Scotland',
+ ]
+
+ assert normalize_spaces(
+ page.select_one('.broadcast-message-wrapper').text
+ ) == (
+ 'This is a test'
+ )
+
+ form = page.select_one('form')
+ assert form['method'] == 'post'
+ assert 'action' not in form
+
+ radio_choices = [
+ choice['value'] for choice in form.select('input[type=radio][name=finishes_at]')
+ ]
+ assert len(radio_choices) == 94
+ assert end_time in radio_choices
-@freeze_time('2020-02-02 02:02:02.222222')
+@pytest.mark.parametrize('end_time', (
+
+ # Before now
+ pytest.param('2020-02-02T02:00:00', marks=pytest.mark.xfail),
+
+ # End of the current hour
+ pytest.param('2020-02-02T03:00:00'),
+
+ # Midnight 3 days ahead
+ pytest.param('2020-02-06T00:00:00'),
+
+ # 1am 4 days ahead
+ pytest.param('2020-02-06T01:00:00', marks=pytest.mark.xfail),
+
+))
+@freeze_time('2020-02-02 02:02:02')
def test_start_broadcasting(
client_request,
service_one,
@@ -302,24 +359,54 @@ def test_start_broadcasting(
mock_update_broadcast_message,
mock_update_broadcast_message_status,
fake_uuid,
+ end_time,
+):
+ service_one['permissions'] += ['broadcast']
+ client_request.post(
+ '.preview_broadcast_message',
+ service_id=SERVICE_ONE_ID,
+ broadcast_message_id=fake_uuid,
+ _data={
+ 'finishes_at': end_time,
+ }
+ ),
+ mock_update_broadcast_message.assert_called_once_with(
+ service_id=SERVICE_ONE_ID,
+ broadcast_message_id=fake_uuid,
+ data={
+ 'finishes_at': end_time,
+ },
+ )
+ mock_update_broadcast_message_status.assert_called_once_with(
+ 'pending-approval',
+ service_id=SERVICE_ONE_ID,
+ broadcast_message_id=fake_uuid,
+ )
+
+
+def test_start_broadcasting_shows_validation_error(
+ 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(
+ page = 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={
- 'finishes_at': '2020-02-05T02:02:02.222222',
- },
+ _data={},
+ _expected_status=200,
)
- mock_update_broadcast_message_status.assert_called_once_with(
- 'pending-approval',
- service_id=SERVICE_ONE_ID,
- broadcast_message_id=fake_uuid,
+ assert mock_update_broadcast_message.called is False
+ assert mock_update_broadcast_message_status.called is False
+ assert normalize_spaces(
+ page.select_one('form fieldset legend .error-message').text
+ ) == (
+ 'Select an option'
)
diff --git a/tests/javascripts/radioSelect.test.js b/tests/javascripts/radioSelect.test.js
index 31b8dba85..c41481208 100644
--- a/tests/javascripts/radioSelect.test.js
+++ b/tests/javascripts/radioSelect.test.js
@@ -99,7 +99,7 @@ describe('RadioSelect', () => {
-