flash up prompt when archiving a service

same way as we do when deleting templates

(also rename button from deactivate -> archive)
This commit is contained in:
Leo Hemsted
2016-11-08 14:33:53 +00:00
parent a982144821
commit 7a48e25dbb
3 changed files with 22 additions and 6 deletions

View File

@@ -188,8 +188,12 @@ def service_switch_can_send_letters(service_id):
@login_required
@user_has_permissions('manage_settings', admin_override=True)
def deactivate_service(service_id):
service_api_client.deactivate_service(service_id)
return redirect(url_for('.service_settings', service_id=service_id))
if request.method == 'POST':
service_api_client.deactivate_service(service_id)
return redirect(url_for('.service_settings', service_id=service_id))
else:
flash('There\'s no way to reverse this! Are you sure you want to archive this service?', 'delete')
return service_settings(service_id)
@main.route("/services/<service_id>/service-settings/set-reply-to-email", methods=['GET', 'POST'])

View File

@@ -101,7 +101,7 @@
{% if current_service.active %}
<li class="bottom-gutter">
<a href="{{ url_for('.deactivate_service', service_id=current_service.id) }}" class="button">
Deactivate service
Archive service
</a>
</li>
{% endif %}

View File

@@ -394,6 +394,7 @@ def test_log_error_on_request_to_go_live(
'main.service_name_change',
'main.service_name_change_confirm',
'main.service_request_to_go_live',
'main.deactivate_service'
])
def test_route_permissions(mocker, app_, api_user_active, service_one, route):
with app_.test_request_context():
@@ -453,7 +454,6 @@ def test_route_for_platform_admin(mocker, app_, platform_admin_user, service_one
'main.service_switch_live',
'main.service_switch_research_mode',
'main.service_switch_can_send_letters',
'main.deactivate_service',
])
def test_route_for_platform_admin_update_service(mocker, app_, platform_admin_user, service_one, route):
mocker.patch('app.service_api_client.deactivate_service')
@@ -752,17 +752,29 @@ def test_switch_service_disable_letters(client, platform_admin_user, mocker):
assert mocked_fn.call_args == call(service['id'], {"can_send_letters": False})
def test_deactivate_service(client, platform_admin_user, service_one, mocker):
def test_deactivate_service_after_confirm(client, platform_admin_user, service_one, mocker):
mocked_fn = mocker.patch('app.service_api_client.post', return_value=service_one)
client.login(platform_admin_user, mocker, service_one)
response = client.get(url_for('main.deactivate_service', service_id=service_one['id']))
response = client.post(url_for('main.deactivate_service', service_id=service_one['id']))
assert response.status_code == 302
assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True)
assert mocked_fn.call_args == call('/service/{}/deactivate'.format(service_one['id']), data=None)
def test_deactivate_service_prompts_user(client, platform_admin_user, service_one, mocker):
mocked_fn = mocker.patch('app.service_api_client.post')
client.login(platform_admin_user, mocker, service_one)
response = client.get(url_for('main.deactivate_service', service_id=service_one['id']))
assert response.status_code == 200
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert 'Are you sure you want to archive this service?' in page.find('div', class_='banner-dangerous').text
assert mocked_fn.called is False
def test_cant_deactivate_inactive_service(client, platform_admin_user, service_one, mocker):
service_one['active'] = False