mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-04-19 16:50:52 -04:00
Build delete folder endpoint that calls template_folders_api_client
This commit is contained in:
@@ -349,6 +349,8 @@ def action_blocked(service_id, notification_type, return_to, template_id):
|
||||
|
||||
@main.route("/services/<service_id>/templates/add-folder", methods=['GET', 'POST'])
|
||||
@main.route("/services/<service_id>/templates/folders/<template_folder_id>/add-folder", methods=['GET', 'POST'])
|
||||
@login_required
|
||||
@user_has_permissions('manage_templates')
|
||||
def add_template_folder(service_id, template_folder_id=None):
|
||||
if not current_service.has_permission('edit_folders'):
|
||||
abort(403)
|
||||
@@ -370,6 +372,8 @@ def add_template_folder(service_id, template_folder_id=None):
|
||||
|
||||
|
||||
@main.route("/services/<service_id>/templates/folders/<template_folder_id>/manage", methods=['GET', 'POST'])
|
||||
@login_required
|
||||
@user_has_permissions('manage_templates')
|
||||
def manage_template_folder(service_id, template_folder_id):
|
||||
if not current_service.has_permission('edit_folders'):
|
||||
abort(403)
|
||||
@@ -395,11 +399,19 @@ def manage_template_folder(service_id, template_folder_id):
|
||||
)
|
||||
|
||||
|
||||
@main.route("/services/<service_id>/templates/folders/<template_folder_id>/delete", methods=['POST'])
|
||||
@main.route("/services/<service_id>/templates/folders/<template_folder_id>/delete", methods=['GET', 'POST'])
|
||||
@login_required
|
||||
@user_has_permissions('manage_templates')
|
||||
def delete_template_folder(service_id, template_folder_id):
|
||||
if not current_service.has_permission('edit_folders'):
|
||||
abort(403)
|
||||
pass
|
||||
form = TemplateFolderForm()
|
||||
|
||||
template_folder_api_client.delete_template_folder(current_service.id, template_folder_id)
|
||||
|
||||
return redirect(
|
||||
url_for('.choose_template', service_id=service_id)
|
||||
)
|
||||
|
||||
|
||||
@main.route("/services/<service_id>/templates/add-<template_type>", methods=['GET', 'POST'])
|
||||
|
||||
@@ -142,6 +142,7 @@ class HeaderNavigation(Navigation):
|
||||
'create_api_key',
|
||||
'data_retention',
|
||||
'delete_service_template',
|
||||
'delete_template_folder',
|
||||
'delivery_and_failure',
|
||||
'delivery_status_callback',
|
||||
'design_content',
|
||||
@@ -409,6 +410,7 @@ class MainNavigation(Navigation):
|
||||
'cookies',
|
||||
'create_email_branding',
|
||||
'data_retention',
|
||||
'delete_template_folder',
|
||||
'delivery_and_failure',
|
||||
'design_content',
|
||||
'documentation',
|
||||
@@ -590,6 +592,7 @@ class CaseworkNavigation(Navigation):
|
||||
'create_email_branding',
|
||||
'data_retention',
|
||||
'delete_service_template',
|
||||
'delete_template_folder',
|
||||
'delivery_and_failure',
|
||||
'delivery_status_callback',
|
||||
'design_content',
|
||||
@@ -827,6 +830,7 @@ class OrgNavigation(Navigation):
|
||||
'create_email_branding',
|
||||
'data_retention',
|
||||
'delete_service_template',
|
||||
'delete_template_folder',
|
||||
'delivery_and_failure',
|
||||
'delivery_status_callback',
|
||||
'design_content',
|
||||
|
||||
@@ -52,7 +52,7 @@ class TemplateFolderAPIClient(NotifyAdminAPIClient):
|
||||
|
||||
@cache.delete('service-{service_id}-template-folders')
|
||||
def delete_template_folder(self, service_id, template_folder_id):
|
||||
self.post('/service/{}/template-folder/{}/delete'.format(service_id, template_folder_id))
|
||||
self.delete('/service/{}/template-folder/{}'.format(service_id, template_folder_id), {})
|
||||
|
||||
|
||||
template_folder_api_client = TemplateFolderAPIClient()
|
||||
|
||||
@@ -376,3 +376,23 @@ def test_rename_folder(client_request, service_one, mock_get_template_folders, m
|
||||
folder_id,
|
||||
name="new beautiful name"
|
||||
)
|
||||
|
||||
|
||||
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())
|
||||
mock_get_template_folders.return_value = [
|
||||
{'id': folder_id, 'name': 'folder_two', 'parent_id': None},
|
||||
]
|
||||
service_one['permissions'] += ['edit_folders']
|
||||
|
||||
client_request.post(
|
||||
'main.delete_template_folder',
|
||||
service_id=service_one['id'],
|
||||
template_folder_id=folder_id,
|
||||
_expected_redirect=url_for("main.choose_template",
|
||||
service_id=service_one['id'],
|
||||
_external=True)
|
||||
)
|
||||
|
||||
mock_delete.assert_called_once_with(service_one['id'], folder_id)
|
||||
|
||||
@@ -128,13 +128,13 @@ def test_delete_template_folder_calls_correct_api_endpoint(mocker, api_user_acti
|
||||
|
||||
some_service_id = uuid.uuid4()
|
||||
template_folder_id = uuid.uuid4()
|
||||
expected_url = '/service/{}/template-folder/{}/delete'.format(some_service_id, template_folder_id)
|
||||
expected_url = '/service/{}/template-folder/{}'.format(some_service_id, template_folder_id)
|
||||
|
||||
client = TemplateFolderAPIClient()
|
||||
|
||||
mock_post = mocker.patch('app.notify_client.template_folder_api_client.TemplateFolderAPIClient.post')
|
||||
mock_delete = mocker.patch('app.notify_client.template_folder_api_client.TemplateFolderAPIClient.delete')
|
||||
|
||||
client.delete_template_folder(some_service_id, template_folder_id)
|
||||
|
||||
mock_post.assert_called_once_with(expected_url)
|
||||
mock_delete.assert_called_once_with(expected_url, {})
|
||||
mock_redis_delete.assert_called_once_with('service-{}-template-folders'.format(some_service_id))
|
||||
|
||||
Reference in New Issue
Block a user