diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index 5f581f5cf..0852a3419 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -1064,6 +1064,7 @@ def _get_request_to_go_live_tags(service, agreement_signed): for test, tag in ( (True, ''), + (not service.volumes, '_volumes'), (not service.go_live_checklist_completed, '_checklist'), (not agreement_signed, '_mou'), (service.needs_to_add_email_reply_to_address, '_email_reply_to'), diff --git a/app/models/service.py b/app/models/service.py index 7dd75925e..06c1403f7 100644 --- a/app/models/service.py +++ b/app/models/service.py @@ -294,9 +294,18 @@ class Service(): def get_letter_contact_block(self, id): return service_api_client.get_letter_contact(self.id, id) + @property + def volumes(self): + return sum(filter(None, ( + self.volume_email, + self.volume_sms, + self.volume_letter, + ))) + @property def go_live_checklist_completed(self): return all(( + bool(self.volumes), self.has_team_members, self.has_templates, not self.needs_to_add_email_reply_to_address, diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py index 3974a6bea..681d0c379 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -1017,7 +1017,7 @@ def test_non_gov_users_cant_request_to_go_live( ) -@pytest.mark.parametrize('volumes, displayed_volumes, formatted_displayed_volumes', ( +@pytest.mark.parametrize('volumes, displayed_volumes, formatted_displayed_volumes, extra_tags', ( ( (('email', None), ('sms', None), ('letter', None)), ', , ', @@ -1026,6 +1026,7 @@ def test_non_gov_users_cant_request_to_go_live( 'Text messages in next year: \n' 'Letters in next year: \n' ), + ['notify_request_to_go_live_incomplete_volumes'] ), ( (('email', 1234), ('sms', 0), ('letter', 999)), @@ -1035,6 +1036,7 @@ def test_non_gov_users_cant_request_to_go_live( 'Text messages in next year: 0\n' 'Letters in next year: 999\n' ), + [], ), )) @freeze_time("2012-12-21") @@ -1053,6 +1055,7 @@ def test_should_redirect_after_request_to_go_live( volumes, displayed_volumes, formatted_displayed_volumes, + extra_tags, ): for channel, volume in volumes: mocker.patch( @@ -1076,6 +1079,7 @@ def test_should_redirect_after_request_to_go_live( tags=[ 'notify_request_to_go_live', 'notify_request_to_go_live_incomplete', + ] + extra_tags + [ 'notify_request_to_go_live_incomplete_checklist', 'notify_request_to_go_live_incomplete_mou', 'notify_request_to_go_live_incomplete_team_member', @@ -1119,6 +1123,9 @@ def test_should_redirect_after_request_to_go_live( 'has_email_reply_to_address,' 'shouldnt_use_govuk_as_sms_sender,' 'sms_sender_is_govuk,' + 'volume_email,' + 'volume_sms,' + 'volume_letter,' 'expected_readyness,' 'agreement_signed,' 'expected_tags,' @@ -1132,6 +1139,7 @@ def test_should_redirect_after_request_to_go_live( True, True, True, + 1, 1, 1, 'Yes', True, [ @@ -1147,6 +1155,7 @@ def test_should_redirect_after_request_to_go_live( False, True, True, + 1, 1, 1, 'No', True, [ @@ -1164,6 +1173,7 @@ def test_should_redirect_after_request_to_go_live( True, True, False, + 1, 1, 1, 'Yes', True, [ @@ -1179,6 +1189,7 @@ def test_should_redirect_after_request_to_go_live( True, True, True, + 1, 1, 1, 'No', True, [ @@ -1196,6 +1207,7 @@ def test_should_redirect_after_request_to_go_live( True, True, False, + 1, 1, 1, 'No', True, [ @@ -1213,6 +1225,7 @@ def test_should_redirect_after_request_to_go_live( True, True, False, + 1, 1, 1, 'No', True, [ @@ -1230,11 +1243,13 @@ def test_should_redirect_after_request_to_go_live( False, True, True, + 0, None, 0, 'No', False, [ 'notify_request_to_go_live', 'notify_request_to_go_live_incomplete', + 'notify_request_to_go_live_incomplete_volumes', 'notify_request_to_go_live_incomplete_checklist', 'notify_request_to_go_live_incomplete_mou', 'notify_request_to_go_live_incomplete_email_reply_to', @@ -1255,6 +1270,9 @@ def test_ready_to_go_live( has_email_reply_to_address, shouldnt_use_govuk_as_sms_sender, sms_sender_is_govuk, + volume_email, + volume_sms, + volume_letter, expected_readyness, agreement_signed, expected_tags, @@ -1273,6 +1291,15 @@ def test_ready_to_go_live( new_callable=PropertyMock ).return_value = locals()[prop] + mocker.patch( + 'app.models.service.Service.__getattr__', + side_effect=lambda prop: { + 'volume_email': volume_email, + 'volume_sms': volume_sms, + 'volume_letter': volume_letter, + }.get(prop) + ) + assert app.models.service.Service({ 'id': SERVICE_ONE_ID }).go_live_checklist_completed_as_yes_no == expected_readyness