diff --git a/app/assets/javascripts/templateFolderForm.js b/app/assets/javascripts/templateFolderForm.js
index f3adfe5cf..5f9079fbf 100644
--- a/app/assets/javascripts/templateFolderForm.js
+++ b/app/assets/javascripts/templateFolderForm.js
@@ -111,6 +111,12 @@
$('.template-list-selected-counter-count').html(numSelected);
+ $('.template-list-selected-counter').toggle(this.hasCheckboxes());
+
+ };
+
+ this.hasCheckboxes = function() {
+ return !!this.$form.find('input:checkbox').length;
};
this.countSelectedCheckboxes = function() {
diff --git a/app/templates/views/templates/_template_list.html b/app/templates/views/templates/_template_list.html
index e4c030e76..b1be5f719 100644
--- a/app/templates/views/templates/_template_list.html
+++ b/app/templates/views/templates/_template_list.html
@@ -1,7 +1,7 @@
{% from "components/checkbox.html" import unlabelled_checkbox %}
{% from "components/message-count-label.html" import folder_contents_count, message_count_label %}
-{% if not template_list.templates_to_show %}
+{% if template_list.template_folder_id and not template_list.templates_to_show %}
{% if template_list.folder_is_empty %}
This folder is empty
diff --git a/app/templates/views/templates/choose.html b/app/templates/views/templates/choose.html
index 0b0b0afc3..1ef5c1c80 100644
--- a/app/templates/views/templates/choose.html
+++ b/app/templates/views/templates/choose.html
@@ -26,7 +26,7 @@
{{ page_title }}
{% if current_user.has_permissions('manage_templates') %}
-
+
You need a template before you can send
{% if 'letter' in current_service.permissions %}
emails, text messages or letters
@@ -34,9 +34,8 @@
emails or text messages
{%- endif %}.
- Add a new template
{% else %}
-
+
You need to ask your service manager to add templates before you can send
{% if 'letter' in current_service.permissions %}
emails, text messages or letters
@@ -71,7 +70,7 @@
{% endif %}
{% endif %}
-
+ {% endif %}
{% if show_template_nav %}
{{ pill(template_nav_items, current_value=template_type, show_count=False) }}
@@ -91,7 +90,10 @@
{% else %}
{% include 'views/templates/_template_list.html' %}
+ {% if (not current_service.all_templates) and (not current_service.all_template_folders) and current_user.has_permissions('manage_templates') %}
+
Add a new template
+ {% endif %}
{% endif %}
- {% endif %}
+
{% endblock %}
diff --git a/tests/app/main/views/test_templates.py b/tests/app/main/views/test_templates.py
index 786d9dfbc..7eb5ef86f 100644
--- a/tests/app/main/views/test_templates.py
+++ b/tests/app/main/views/test_templates.py
@@ -35,21 +35,14 @@ from tests.conftest import service_one as create_sample_service
from tests.conftest import single_letter_contact_block
-@pytest.mark.parametrize('extra_permissions', (
- [],
- ['edit_folders'],
-))
def test_should_show_empty_page_when_no_templates(
client_request,
service_one,
mock_get_organisations_and_services_for_user,
mock_get_service_templates_when_no_templates_exist,
mock_get_template_folders,
- extra_permissions,
):
- service_one['permissions'] += extra_permissions
-
page = client_request.get(
'main.choose_template',
service_id=service_one['id'],
@@ -68,6 +61,36 @@ def test_should_show_empty_page_when_no_templates(
assert len(page.select('main a')) == 1
+def test_should_show_add_template_form_if_service_has_folder_permission(
+ client_request,
+ service_one,
+ mock_get_organisations_and_services_for_user,
+ mock_get_service_templates_when_no_templates_exist,
+ mock_get_template_folders,
+):
+
+ service_one['permissions'] += ['edit_folders']
+
+ page = client_request.get(
+ 'main.choose_template',
+ service_id=service_one['id'],
+ )
+
+ assert normalize_spaces(page.select_one('h1').text) == (
+ 'Templates'
+ )
+ assert normalize_spaces(page.select_one('main p').text) == (
+ 'You need a template before you can send emails or text messages.'
+ )
+ assert [
+ (item['name'], item['value']) for item in page.select('[type=radio]')
+ ] == [
+ ('add_template_by_template_type', 'email'),
+ ('add_template_by_template_type', 'sms'),
+ ]
+ assert not page.select('main a')
+
+
@pytest.mark.parametrize(
'user, expected_page_title, extra_args, expected_nav_links, expected_templates',
[