From 69ada9a312f3ff623d714ad06c09752309dd83fa Mon Sep 17 00:00:00 2001 From: Pea Tyczynska Date: Fri, 16 Nov 2018 15:10:12 +0000 Subject: [PATCH] Hide name changing functionality when in folder deletion mode Also add 'back' link Also start work on additional tests for folder deletion flow --- app/main/views/templates.py | 5 +- .../templates/manage-template-folder.html | 27 +++++----- tests/app/main/views/test_template_folders.py | 54 +++++++++++++++++++ 3 files changed, 72 insertions(+), 14 deletions(-) diff --git a/app/main/views/templates.py b/app/main/views/templates.py index b8b1759e6..0ba3dfbef 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -442,14 +442,15 @@ def delete_template_folder(service_id, template_folder_id): else: abort(500, e) - flash("Are you sure you want to delete the '{}' folder?".format(template_folder_name), 'delete') + flash("Are you sure you want to delete the ‘{}’ folder?".format(template_folder_name), 'delete') return render_template( 'views/templates/manage-template-folder.html', form=form, template_folder_path=template_folder_path, current_service_id=current_service.id, template_folder_id=template_folder_id, - template_type="all" + 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 dd6e7db03..7066003ac 100644 --- a/app/templates/views/templates/manage-template-folder.html +++ b/app/templates/views/templates/manage-template-folder.html @@ -22,18 +22,21 @@ Templates {% endfor %} + {% 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") }} - {% 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 %} + {% endcall %} + {% else %} + Back to manage folder page + {% endif %} {% endblock %} diff --git a/tests/app/main/views/test_template_folders.py b/tests/app/main/views/test_template_folders.py index 9aa01d1f3..405cb991e 100644 --- a/tests/app/main/views/test_template_folders.py +++ b/tests/app/main/views/test_template_folders.py @@ -378,6 +378,60 @@ def test_rename_folder(client_request, service_one, mock_get_template_folders, m ) +def test_delete_template_folder_should_request_confirmation( + client_request, service_one, mock_get_template_folders, mocker +): + service_one['permissions'] += ['edit_folders'] + folder_id = str(uuid.uuid4()) + mock_get_template_folders.side_effect = [[ + {'id': folder_id, 'name': 'sacrifice', 'parent_id': None}, + ], []] + mocker.patch( + 'app.models.service.Service.get_templates', + return_value=[], + ) + page = client_request.get( + 'main.delete_template_folder', service_id=service_one['id'], + template_folder_id=folder_id + ) + assert normalize_spaces(page.select('.banner-dangerous')[0].text) == ( + 'Are you sure you want to delete the ‘sacrifice’ folder? ' + 'Yes, delete' + ) + + assert len(page.select('label')) == 0 + assert len(page.select('button')) == 1 + assert "Back to manage folder page" in page.text + + +def test_delete_template_folder_should_detect_non_empty_folder_on_get( + client_request, service_one, mock_get_template_folders, mocker +): + service_one['permissions'] += ['edit_folders'] + folder_id = str(uuid.uuid4()) + child_folder_id = str(uuid.uuid4()) + mock_get_template_folders.side_effect = [[ + {'id': folder_id, 'name': 'sacrifice', 'parent_id': None}, + ], [{'id': child_folder_id, 'name': 'sacrifice', 'parent_id': None}]] + mocker.patch( + 'app.models.service.Service.get_templates', + return_value=[], + ) + page = client_request.get( + 'main.delete_template_folder', service_id=service_one['id'], + template_folder_id=folder_id + ) + import pdb; pdb.set_trace() + assert normalize_spaces(page.select('.banner-dangerous')[0].text) == ( + 'Are you sure you want to delete the ‘sacrifice’ folder? ' + 'Yes, delete' + ) + + assert len(page.select('label')) == 0 + assert len(page.select('button')) == 1 + assert "Back to manage folder page" in page.text + + def test_delete_folder(client_request, service_one, mock_get_template_folders, mocker): mock_delete = mocker.patch('app.template_folder_api_client.delete_template_folder') folder_id = str(uuid.uuid4())