Add info about checklist to ticket

So that someone picking up a ticket can be warned that they should be
checking these things.
This commit is contained in:
Chris Hill-Scott
2018-09-20 10:06:56 +01:00
parent 45b1b11abb
commit f29c6c90c0
3 changed files with 132 additions and 2 deletions

View File

@@ -199,6 +199,7 @@ def submit_request_to_go_live(service_id):
'\n---' '\n---'
'\nOrganisation type: {organisation_type}' '\nOrganisation type: {organisation_type}'
'\nAgreement signed: {agreement}' '\nAgreement signed: {agreement}'
'\nChecklist completed: {checklist}'
'\nEmails in next year: {volume_email}' '\nEmails in next year: {volume_email}'
'\nText messages in next year: {volume_sms}' '\nText messages in next year: {volume_sms}'
'\nLetters in next year: {volume_letter}' '\nLetters in next year: {volume_letter}'
@@ -221,6 +222,7 @@ def submit_request_to_go_live(service_id):
service_dashboard=url_for('main.service_dashboard', service_id=current_service.id, _external=True), service_dashboard=url_for('main.service_dashboard', service_id=current_service.id, _external=True),
organisation_type=str(current_service.organisation_type).title(), organisation_type=str(current_service.organisation_type).title(),
agreement=AgreementInfo.from_current_user().as_human_readable, agreement=AgreementInfo.from_current_user().as_human_readable,
checklist='Yes' if current_service.go_live_checklist_completed else 'No',
volume_email=form.volume_email.data, volume_email=form.volume_email.data,
volume_sms=form.volume_sms.data, volume_sms=form.volume_sms.data,
volume_letter=form.volume_letter.data, volume_letter=form.volume_letter.data,

View File

@@ -355,3 +355,23 @@ class Service(dict):
return get_default_sms_sender( return get_default_sms_sender(
service_api_client.get_sms_senders(self.id) service_api_client.get_sms_senders(self.id)
) in {'GOVUK', 'None'} ) in {'GOVUK', 'None'}
@property
def go_live_checklist_completed(self):
return all((
self.has_team_members,
self.has_templates,
any((
not self.has_email_templates,
self.has_email_reply_to_address,
)),
any((
not self.has_sms_templates,
not self.shouldnt_use_govuk_as_sms_sender,
not self.sms_sender_is_govuk,
))
))
@property
def go_live_checklist_completed_as_yes_no(self):
return 'Yes' if self.go_live_checklist_completed else 'No'

View File

@@ -1,6 +1,6 @@
import uuid import uuid
from functools import partial from functools import partial
from unittest.mock import ANY, call from unittest.mock import ANY, PropertyMock, call
from urllib.parse import parse_qs, urlparse from urllib.parse import parse_qs, urlparse
import pytest import pytest
@@ -737,7 +737,9 @@ def test_should_redirect_after_request_to_go_live(
single_letter_contact_block, single_letter_contact_block,
mock_get_service_organisation, mock_get_service_organisation,
single_sms_sender, single_sms_sender,
mock_get_service_settings_page_common mock_get_service_settings_page_common,
mock_get_service_templates,
mock_get_users_by_service,
): ):
mock_post = mocker.patch('app.main.views.service_settings.zendesk_client.create_ticket', autospec=True) mock_post = mocker.patch('app.main.views.service_settings.zendesk_client.create_ticket', autospec=True)
page = client_request.post( page = client_request.post(
@@ -765,6 +767,7 @@ def test_should_redirect_after_request_to_go_live(
'---\n' '---\n'
'Organisation type: Central\n' 'Organisation type: Central\n'
'Agreement signed: Cant tell (domain is user.gov.uk)\n' 'Agreement signed: Cant tell (domain is user.gov.uk)\n'
'Checklist completed: No\n'
'Emails in next year: 111\n' 'Emails in next year: 111\n'
'Text messages in next year: 222\n' 'Text messages in next year: 222\n'
'Letters in next year: 333\n' 'Letters in next year: 333\n'
@@ -782,6 +785,111 @@ def test_should_redirect_after_request_to_go_live(
) )
@pytest.mark.parametrize(
(
'has_team_members,'
'has_templates,'
'has_email_templates,'
'has_sms_templates,'
'has_email_reply_to_address,'
'shouldnt_use_govuk_as_sms_sender,'
'sms_sender_is_govuk,'
'expected,'
),
(
( # Just sending email
True,
True,
True,
False,
True,
True,
True,
'Yes',
),
( # Needs to set reply to address
True,
True,
True,
False,
False,
True,
True,
'No',
),
( # Just sending SMS
True,
True,
False,
True,
True,
True,
False,
'Yes',
),
( # Needs to change SMS sender
True,
True,
False,
True,
True,
True,
True,
'No',
),
( # Needs team members
False,
True,
False,
True,
True,
True,
False,
'No',
),
( # Needs templates
True,
False,
False,
True,
True,
True,
False,
'No',
),
),
)
def test_ready_to_go_live(
client_request,
mocker,
has_team_members,
has_templates,
has_email_templates,
has_sms_templates,
has_email_reply_to_address,
shouldnt_use_govuk_as_sms_sender,
sms_sender_is_govuk,
expected,
):
for prop in {
'has_team_members',
'has_templates',
'has_email_templates',
'has_sms_templates',
'has_email_reply_to_address',
'shouldnt_use_govuk_as_sms_sender',
'sms_sender_is_govuk',
}:
mocker.patch(
'app.notify_client.models.Service.{}'.format(prop),
new_callable=PropertyMock
).return_value = locals()[prop]
assert app.notify_client.models.Service({
'id': fake_uuid()
}).go_live_checklist_completed_as_yes_no == expected
@pytest.mark.parametrize('route', [ @pytest.mark.parametrize('route', [
'main.service_settings', 'main.service_settings',
'main.service_name_change', 'main.service_name_change',