mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-25 00:33:58 -04:00
Merge pull request #1909 from alphagov/request-to-go-live-automation
Add a checklist to the request to go live page
This commit is contained in:
@@ -163,7 +163,23 @@ def service_name_change_confirm(service_id):
|
|||||||
@login_required
|
@login_required
|
||||||
@user_has_permissions('manage_service')
|
@user_has_permissions('manage_service')
|
||||||
def request_to_go_live(service_id):
|
def request_to_go_live(service_id):
|
||||||
return render_template('views/service-settings/request-to-go-live.html')
|
return render_template(
|
||||||
|
'views/service-settings/request-to-go-live.html',
|
||||||
|
has_team_members=(
|
||||||
|
user_api_client.get_count_of_users_with_permission(
|
||||||
|
service_id, 'manage_settings'
|
||||||
|
) > 1
|
||||||
|
),
|
||||||
|
has_templates=(
|
||||||
|
service_api_client.count_service_templates(service_id) > 0
|
||||||
|
),
|
||||||
|
has_email_templates=(
|
||||||
|
service_api_client.count_service_templates(service_id, template_type='email') > 0
|
||||||
|
),
|
||||||
|
has_email_reply_to_address=bool(
|
||||||
|
service_api_client.get_reply_to_email_addresses(service_id)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@main.route("/services/<service_id>/service-settings/submit-request-to-go-live", methods=['GET', 'POST'])
|
@main.route("/services/<service_id>/service-settings/submit-request-to-go-live", methods=['GET', 'POST'])
|
||||||
|
|||||||
@@ -1,15 +1,20 @@
|
|||||||
{% macro tick_cross(yes, label) %}
|
{% macro tick_cross(yes, label, truthy_hint='Can', falsey_hint='Can’t') %}
|
||||||
<li>
|
<li>
|
||||||
{% if yes %}
|
{% if yes %}
|
||||||
<span class="tick-cross-tick">
|
<span class="tick-cross-tick">
|
||||||
<span class="visually-hidden">Can</span>
|
<span class="visually-hidden">{{ truthy_hint }}</span>
|
||||||
{{ label}}
|
{{ label}}
|
||||||
</span>
|
</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="tick-cross-cross">
|
<span class="tick-cross-cross">
|
||||||
<span class="visually-hidden">Can’t</span>
|
<span class="visually-hidden">{{ falsey_hint }}</span>
|
||||||
{{ label}}
|
{{ label}}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
|
|
||||||
|
{% macro tick_cross_done_not_done(yes, label) %}
|
||||||
|
{{ tick_cross(yes, label, truthy_hint='Done: ', falsey_hint='Not done: ') }}
|
||||||
|
{% endmacro %}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
{% from "components/radios.html" import radios %}
|
{% from "components/radios.html" import radios %}
|
||||||
{% from "components/page-footer.html" import page_footer %}
|
{% from "components/page-footer.html" import page_footer %}
|
||||||
{% from "components/banner.html" import banner_wrapper %}
|
{% from "components/banner.html" import banner_wrapper %}
|
||||||
|
{% from "components/tick-cross.html" import tick_cross_done_not_done %}
|
||||||
|
|
||||||
{% block service_page_title %}
|
{% block service_page_title %}
|
||||||
Request to go live
|
Request to go live
|
||||||
@@ -14,21 +15,35 @@
|
|||||||
<div class="column-five-sixths">
|
<div class="column-five-sixths">
|
||||||
<h1 class="heading-large">Request to go live</h1>
|
<h1 class="heading-large">Request to go live</h1>
|
||||||
<p>
|
<p>
|
||||||
Before you request to go live, make sure you’ve:
|
Before you request to go live, make sure that:
|
||||||
|
</p>
|
||||||
|
<ul class='bottom-gutter'>
|
||||||
|
{{ tick_cross_done_not_done(
|
||||||
|
has_team_members,
|
||||||
|
'Another person in your team has the ‘Manage service’ permission',
|
||||||
|
) }}
|
||||||
|
{{ tick_cross_done_not_done(
|
||||||
|
has_templates,
|
||||||
|
'You’ve added some templates',
|
||||||
|
) }}
|
||||||
|
{% if has_email_templates %}
|
||||||
|
{{ tick_cross_done_not_done(
|
||||||
|
has_email_reply_to_address,
|
||||||
|
'You’ve added an email reply to address on the <a href="{}">settings</a> page'.format(
|
||||||
|
url_for('main.service_settings', service_id=current_service.id)
|
||||||
|
)|safe,
|
||||||
|
) }}
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
You also need to:
|
||||||
</p>
|
</p>
|
||||||
<ul class="list list-bullet bottom-gutter">
|
<ul class="list list-bullet bottom-gutter">
|
||||||
<li>
|
<li>
|
||||||
read our <a href="{{ url_for('.terms') }}">terms of use</a>
|
read our <a href="{{ url_for('.terms') }}">terms of use</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
added <a href="{{ url_for('main.manage_users', service_id=current_service.id) }}">team members</a> to your account
|
make sure your messages follow the GOV.UK Service Manual standards for
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
specified your reply to email address or text message sender in your
|
|
||||||
<a href="{{ url_for('main.service_settings', service_id=current_service.id) }}">settings</a> page
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
added the templates you want to start with, making sure they follow the GOV.UK Service Manual standards for
|
|
||||||
<a href="https://www.gov.uk/service-manual/design/sending-emails-and-text-messages">writing text messages and emails</a>
|
<a href="https://www.gov.uk/service-manual/design/sending-emails-and-text-messages">writing text messages and emails</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -455,18 +455,76 @@ def test_should_raise_duplicate_name_handled(
|
|||||||
assert mock_verify_password.called
|
assert mock_verify_password.called
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('count_of_users_with_manage_service, expected_user_checklist_item', [
|
||||||
|
(1, 'Not done: Another person in your team has the ‘Manage service’ permission'),
|
||||||
|
(2, 'Done: Another person in your team has the ‘Manage service’ permission'),
|
||||||
|
])
|
||||||
|
@pytest.mark.parametrize('count_of_templates, expected_templates_checklist_item', [
|
||||||
|
(0, 'Not done: You’ve added some templates'),
|
||||||
|
(1, 'Done: You’ve added some templates'),
|
||||||
|
(2, 'Done: You’ve added some templates'),
|
||||||
|
])
|
||||||
|
@pytest.mark.parametrize('count_of_email_templates, reply_to_email_addresses, expected_reply_to_checklist_item', [
|
||||||
|
pytest.mark.xfail((0, [], ''), raises=IndexError),
|
||||||
|
pytest.mark.xfail((0, [{}], ''), raises=IndexError),
|
||||||
|
(1, [], 'Not done: You’ve added an email reply to address on the settings page'),
|
||||||
|
(1, [{}], 'Done: You’ve added an email reply to address on the settings page'),
|
||||||
|
])
|
||||||
def test_should_show_request_to_go_live_checklist(
|
def test_should_show_request_to_go_live_checklist(
|
||||||
client_request,
|
client_request,
|
||||||
|
mocker,
|
||||||
|
count_of_users_with_manage_service,
|
||||||
|
expected_user_checklist_item,
|
||||||
|
count_of_templates,
|
||||||
|
expected_templates_checklist_item,
|
||||||
|
count_of_email_templates,
|
||||||
|
reply_to_email_addresses,
|
||||||
|
expected_reply_to_checklist_item,
|
||||||
):
|
):
|
||||||
|
|
||||||
|
def _count_templates(service_id, template_type=None):
|
||||||
|
return {
|
||||||
|
'email': count_of_email_templates
|
||||||
|
}.get(template_type, count_of_templates)
|
||||||
|
|
||||||
|
mock_count_users = mocker.patch(
|
||||||
|
'app.main.views.service_settings.user_api_client.get_count_of_users_with_permission',
|
||||||
|
return_value=count_of_users_with_manage_service
|
||||||
|
)
|
||||||
|
mock_count_templates = mocker.patch(
|
||||||
|
'app.main.views.service_settings.service_api_client.count_service_templates',
|
||||||
|
side_effect=_count_templates
|
||||||
|
)
|
||||||
|
mock_get_reply_to_email_addresses = mocker.patch(
|
||||||
|
'app.main.views.service_settings.service_api_client.get_reply_to_email_addresses',
|
||||||
|
return_value=reply_to_email_addresses
|
||||||
|
)
|
||||||
|
|
||||||
page = client_request.get(
|
page = client_request.get(
|
||||||
'main.request_to_go_live', service_id=SERVICE_ONE_ID
|
'main.request_to_go_live', service_id=SERVICE_ONE_ID
|
||||||
)
|
)
|
||||||
assert page.h1.text == 'Request to go live'
|
assert page.h1.text == 'Request to go live'
|
||||||
|
|
||||||
|
checklist_items = page.select('main ul[class=bottom-gutter] li')
|
||||||
|
|
||||||
|
assert normalize_spaces(checklist_items[0].text) == expected_user_checklist_item
|
||||||
|
assert normalize_spaces(checklist_items[1].text) == expected_templates_checklist_item
|
||||||
|
assert normalize_spaces(checklist_items[2].text) == expected_reply_to_checklist_item
|
||||||
|
|
||||||
assert page.select_one('main .button')['href'] == url_for(
|
assert page.select_one('main .button')['href'] == url_for(
|
||||||
'main.submit_request_to_go_live',
|
'main.submit_request_to_go_live',
|
||||||
service_id=SERVICE_ONE_ID,
|
service_id=SERVICE_ONE_ID,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
mock_count_users.assert_called_once_with(SERVICE_ONE_ID, 'manage_settings')
|
||||||
|
assert mock_count_templates.call_args_list == [
|
||||||
|
call(SERVICE_ONE_ID),
|
||||||
|
call(SERVICE_ONE_ID, template_type='email'),
|
||||||
|
]
|
||||||
|
|
||||||
|
if count_of_email_templates:
|
||||||
|
mock_get_reply_to_email_addresses.assert_called_once_with(SERVICE_ONE_ID)
|
||||||
|
|
||||||
|
|
||||||
def test_should_show_request_to_go_live(
|
def test_should_show_request_to_go_live(
|
||||||
client_request,
|
client_request,
|
||||||
@@ -564,6 +622,7 @@ def test_route_permissions(
|
|||||||
single_sms_sender,
|
single_sms_sender,
|
||||||
route,
|
route,
|
||||||
mock_get_service_settings_page_common,
|
mock_get_service_settings_page_common,
|
||||||
|
mock_get_service_templates,
|
||||||
):
|
):
|
||||||
validate_route_permission(
|
validate_route_permission(
|
||||||
mocker,
|
mocker,
|
||||||
@@ -593,6 +652,7 @@ def test_route_invalid_permissions(
|
|||||||
api_user_active,
|
api_user_active,
|
||||||
service_one,
|
service_one,
|
||||||
route,
|
route,
|
||||||
|
mock_get_service_templates,
|
||||||
):
|
):
|
||||||
validate_route_permission(
|
validate_route_permission(
|
||||||
mocker,
|
mocker,
|
||||||
@@ -624,6 +684,7 @@ def test_route_for_platform_admin(
|
|||||||
single_sms_sender,
|
single_sms_sender,
|
||||||
route,
|
route,
|
||||||
mock_get_service_settings_page_common,
|
mock_get_service_settings_page_common,
|
||||||
|
mock_get_service_templates,
|
||||||
):
|
):
|
||||||
validate_route_permission(mocker,
|
validate_route_permission(mocker,
|
||||||
app_,
|
app_,
|
||||||
|
|||||||
Reference in New Issue
Block a user