Merge pull request #2535 from alphagov/launch-first-class

Launch first class postage feature
This commit is contained in:
Chris Hill-Scott
2018-11-26 16:33:21 +00:00
committed by GitHub
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')