From 13a962b6bd23948214ede93de2768d38538bb064 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Tue, 20 Nov 2018 10:37:33 +0000 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20hide=20the=20rename=20form=20on?= =?UTF-8?q?=20delete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s weird that this page changes when you click delete – it looks like you’re going to a different page. It should feel like you’re on the same page, just with the confirmation message. The problem we had before is that the rename form would `POST` to `…/delete`, which would then delete the template instead of updating its name. We can fix this by explicitly setting the `action` attribute on the rename form to always post to `…/manage`, even if the user is currently looking at the `…/delete` page. --- app/main/views/templates.py | 5 ++-- .../templates/manage-template-folder.html | 26 ++++++++----------- tests/app/main/views/test_template_folders.py | 19 +++++++++++--- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/app/main/views/templates.py b/app/main/views/templates.py index 70a854143..3dc26d475 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -406,7 +406,9 @@ def manage_template_folder(service_id, template_folder_id): def delete_template_folder(service_id, template_folder_id): if not current_service.has_permission('edit_folders'): abort(403) - form = TemplateFolderForm() + form = TemplateFolderForm( + name=current_service.get_template_folder(template_folder_id)['name'] + ) template_folder_path = current_service.get_template_folder_path(template_folder_id) template_folder_name = template_folder_path[-1]["name"] @@ -450,7 +452,6 @@ def delete_template_folder(service_id, template_folder_id): current_service_id=current_service.id, template_folder_id=template_folder_id, template_type="all", - delete_folder=True ) diff --git a/app/templates/views/templates/manage-template-folder.html b/app/templates/views/templates/manage-template-folder.html index b638e8479..2b14dee9f 100644 --- a/app/templates/views/templates/manage-template-folder.html +++ b/app/templates/views/templates/manage-template-folder.html @@ -21,20 +21,16 @@ - {% if not delete_folder %} - {% call form_wrapper() %} - {{ textbox(form.name) }} - {{ page_footer( - 'Save', - delete_link=url_for( - '.delete_template_folder', - service_id=current_service_id, - template_folder_id=template_folder_id - ), - delete_link_text="Delete this folder") }} - {% endcall %} - {% else %} - Back to manage folder page - {% endif %} + {% call form_wrapper(action=url_for('main.manage_template_folder', service_id=current_service.id, template_folder_id=template_folder_id)) %} + {{ textbox(form.name) }} + {{ page_footer( + 'Save', + delete_link=url_for( + '.delete_template_folder', + service_id=current_service_id, + template_folder_id=template_folder_id + ), + delete_link_text="Delete this folder") }} + {% endcall %} {% endblock %} diff --git a/tests/app/main/views/test_template_folders.py b/tests/app/main/views/test_template_folders.py index 506c80ef3..da3a97b60 100644 --- a/tests/app/main/views/test_template_folders.py +++ b/tests/app/main/views/test_template_folders.py @@ -367,7 +367,7 @@ def test_get_manage_folder_page( assert normalize_spaces(page.select_one('title').text) == ( 'folder_two – Templates – service one – GOV.UK Notify' ) - assert page.select_one('input[name=name]') is not None + assert page.select_one('input[name=name]')['value'] == 'folder_two' delete_link = page.find('a', string="Delete this folder") expected_delete_url = "/services/{}/templates/folders/{}/delete".format(service_one['id'], folder_id) @@ -443,9 +443,20 @@ def test_delete_template_folder_should_request_confirmation( 'Yes, delete' ) - assert len(page.select('label')) == 0 - assert len(page.select('button')) == 1 - assert "Back to manage folder page" in page.text + assert page.select_one('input[name=name]')['value'] == 'sacrifice' + + assert len(page.select('form')) == 2 + assert len(page.select('button')) == 2 + + assert 'action' not in page.select('form')[0] + assert page.select('form button')[0].text == 'Yes, delete' + + assert page.select('form')[1]['action'] == url_for( + 'main.manage_template_folder', + service_id=service_one['id'], + template_folder_id=folder_id, + ) + assert page.select('form button')[1].text == 'Save' def test_delete_template_folder_should_detect_non_empty_folder_on_get(