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', [