mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-09 12:09:49 -04:00
Merge pull request #2535 from alphagov/launch-first-class
Launch first class postage feature
This commit is contained in:
@@ -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():
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user