Launch first class postage feature

This commit makes it available to everyone. Available just means they
can select 1st class for all their letters, if they want it.
This commit is contained in:
Chris Hill-Scott
2018-11-26 15:53:14 +00:00
parent 6e56a4d517
commit 84a3c80eb4
3 changed files with 41 additions and 33 deletions

View File

@@ -552,8 +552,12 @@ def service_set_letters(service_id):
@main.route("/services/<service_id>/service-settings/set-postage", methods=['GET', 'POST']) @main.route("/services/<service_id>/service-settings/set-postage", methods=['GET', 'POST'])
@login_required @login_required
@user_is_platform_admin @user_has_permissions('manage_service')
def service_set_postage(service_id): def service_set_postage(service_id):
if not current_service.has_permission('letter'):
abort(404)
form = ServicePostageForm(postage=current_service.postage) form = ServicePostageForm(postage=current_service.postage)
if form.validate_on_submit(): if form.validate_on_submit():

View File

@@ -234,20 +234,18 @@
)}} )}}
{% endcall %} {% endcall %}
{% if current_user.platform_admin %} {% call settings_row(if_has_permission='letter') %}
{% call settings_row(if_has_permission='letter') %} {{ text_field('Postage') }}
{{ text_field('Postage') }} {% set postage = {'first': 'First class only', 'second': 'Second class only'} %}
{% set postage = {'first': 'First class only', 'second': 'Second class only'} %} {{ text_field(postage[current_service.postage]) }}
{{ text_field(postage[current_service.postage]) }} {{ edit_field(
{{ edit_field( 'Change',
'Change', url_for('.service_set_postage',
url_for('.service_set_postage', service_id=current_service.id),
service_id=current_service.id), permissions=['manage_service']
permissions=['manage_service'] )
) }}
}} {% endcall %}
{% endcall %}
{% endif %}
{% endcall %} {% endcall %}
</div> </div>

View File

@@ -216,7 +216,7 @@ def test_should_show_overview_for_service_with_more_things_set(
def test_if_cant_send_letters_then_cant_see_postage( def test_if_cant_send_letters_then_cant_see_postage(
logged_in_platform_admin_client, client_request,
service_one, service_one,
single_reply_to_email_address, single_reply_to_email_address,
single_letter_contact_block, single_letter_contact_block,
@@ -224,8 +224,7 @@ def test_if_cant_send_letters_then_cant_see_postage(
single_sms_sender, single_sms_sender,
mock_get_service_settings_page_common, mock_get_service_settings_page_common,
): ):
response = logged_in_platform_admin_client.get(url_for('main.service_settings', service_id=SERVICE_ONE_ID)) page = client_request.get('main.service_settings', service_id=SERVICE_ONE_ID)
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
letter_table = page.find_all('table')[3] letter_table = page.find_all('table')[3]
rows = letter_table.find_all('tr') rows = letter_table.find_all('tr')
@@ -2148,35 +2147,42 @@ def test_set_letter_branding_saves(
mock_update_service.assert_called_once_with(service_one['id'], dvla_organisation='500') mock_update_service.assert_called_once_with(service_one['id'], dvla_organisation='500')
def test_set_postage_platform_admin_only( def test_set_postage_only_for_letter_services(
logged_in_client, client_request,
service_one,
): ):
response = logged_in_client.get(url_for('main.service_set_postage', service_id=SERVICE_ONE_ID)) client_request.get(
assert response.status_code == 403 'main.service_set_postage',
service_id=SERVICE_ONE_ID,
_expected_status=404,
)
def test_set_postage_prepopulates( def test_set_postage_prepopulates(
logged_in_platform_admin_client, client_request,
service_one, service_one,
): ):
response = logged_in_platform_admin_client.get(url_for('main.service_set_postage', service_id=SERVICE_ONE_ID)) service_one['permissions'] += ['letter']
assert response.status_code == 200 page = client_request.get('main.service_set_postage', service_id=SERVICE_ONE_ID)
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.select('input[checked]')[0]['value'] == 'second' assert page.select('input[checked]')[0]['value'] == 'second'
def test_set_postage_saves( def test_set_postage_saves(
logged_in_platform_admin_client, client_request,
service_one, service_one,
mock_update_service, mock_update_service,
): ):
response = logged_in_platform_admin_client.post( service_one['permissions'] += ['letter']
url_for('main.service_set_postage', service_id=SERVICE_ONE_ID), client_request.post(
data={'postage': 'first'} 'main.service_set_postage',
service_id=SERVICE_ONE_ID,
_data={'postage': 'first'},
_expected_status=302,
expected_redirect=url_for(
'main.service_settings',
service_id=SERVICE_ONE_ID,
_external=True,
)
) )
assert response.status_code == 302
assert response.location == url_for('main.service_settings', service_id=SERVICE_ONE_ID, _external=True)
mock_update_service.assert_called_once_with(SERVICE_ONE_ID, postage='first') mock_update_service.assert_called_once_with(SERVICE_ONE_ID, postage='first')