From 3e3c11f3a0e793fb104ba4a07120378befc004ad Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Wed, 3 Apr 2019 13:59:44 +0100 Subject: [PATCH] fix bug with copying template from folder in other service --- app/main/views/templates.py | 10 +++---- tests/__init__.py | 5 ++-- tests/app/main/views/test_templates.py | 36 ++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/app/main/views/templates.py b/app/main/views/templates.py index 6c0ddd2de..06a8a2250 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -386,15 +386,13 @@ def choose_template_to_copy( @login_required @user_has_permissions('manage_templates') def copy_template(service_id, template_id): + from_service = request.args.get('from_service') - current_user.belongs_to_service_or_403(request.args.get('from_service')) + current_user.belongs_to_service_or_403(from_service) - template = service_api_client.get_service_template( - request.args.get('from_service'), - str(template_id), - )['data'] + template = service_api_client.get_service_template(from_service, str(template_id))['data'] - template_folder = template_folder_api_client.get_template_folder(service_id, template['folder']) + template_folder = template_folder_api_client.get_template_folder(from_service, template['folder']) if ( current_service.has_permission('edit_folder_permissions') and not current_user.has_template_folder_permission(template_folder) diff --git a/tests/__init__.py b/tests/__init__.py index bf3a0811e..c3c934454 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -229,7 +229,8 @@ def template_json(service_id, reply_to=None, reply_to_text=None, is_precompiled_letter=False, - postage=None + postage=None, + folder=None ): template = { 'id': id_, @@ -245,7 +246,7 @@ def template_json(service_id, 'reply_to': reply_to, 'reply_to_text': reply_to_text, 'is_precompiled_letter': is_precompiled_letter, - 'folder': None, + 'folder': folder, 'postage': postage } if content is None: diff --git a/tests/app/main/views/test_templates.py b/tests/app/main/views/test_templates.py index a66d7ac77..b6dcb9578 100644 --- a/tests/app/main/views/test_templates.py +++ b/tests/app/main/views/test_templates.py @@ -1189,6 +1189,42 @@ def test_load_edit_template_with_copy_of_template( ) +def test_copy_template_loads_template_from_within_subfolder( + client_request, + active_user_with_permission_to_two_services, + mock_get_service_templates, + mock_get_non_empty_organisations_and_services_for_user, + mocker +): + template = template_json( + SERVICE_TWO_ID, + TEMPLATE_ONE_ID, + name='foo', + folder=PARENT_FOLDER_ID + ) + + mock_get_service_template = mocker.patch( + 'app.service_api_client.get_service_template', + return_value={'data': template} + ) + mock_get_template_folder = mocker.patch( + 'app.template_folder_api_client.get_template_folder', + return_value=_folder('Parent folder', PARENT_FOLDER_ID), + ) + client_request.login(active_user_with_permission_to_two_services) + + page = client_request.get( + 'main.copy_template', + service_id=SERVICE_ONE_ID, + template_id=TEMPLATE_ONE_ID, + from_service=SERVICE_TWO_ID, + ) + + assert page.select_one('input')['value'] == 'foo (copy)' + mock_get_service_template.assert_called_once_with(SERVICE_TWO_ID, TEMPLATE_ONE_ID) + mock_get_template_folder.assert_called_once_with(SERVICE_TWO_ID, PARENT_FOLDER_ID) + + def test_cant_copy_template_from_non_member_service( client_request, mock_get_service_email_template,