Convert radios on SMS prefix page

Includes changing form.enabled to use
OnOffField, for consistency with other on/off
fields.

OnOffField's data is a boolean, not a string, so
some of the logic using it needed to be changed.
This commit is contained in:
Tom Byers
2020-07-03 11:48:17 +01:00
parent 1612812c5d
commit 58149ce34c
4 changed files with 10 additions and 20 deletions

View File

@@ -1942,13 +1942,7 @@ class CallbackForm(StripWhitespaceForm):
class SMSPrefixForm(StripWhitespaceForm):
enabled = RadioField(
'',
choices=[
('on', 'On'),
('off', 'Off'),
],
)
enabled = OnOffField('') # label is assigned on instantiation
def get_placeholder_form_instance(

View File

@@ -630,15 +630,13 @@ def service_set_inbound_number(service_id):
@user_has_permissions('manage_service')
def service_set_sms_prefix(service_id):
form = SMSPrefixForm(enabled=(
'on' if current_service.prefix_sms else 'off'
))
form = SMSPrefixForm(enabled=current_service.prefix_sms)
form.enabled.label.text = 'Start all text messages with {}:'.format(current_service.name)
if form.validate_on_submit():
current_service.update(
prefix_sms=(form.enabled.data == 'on')
prefix_sms=form.enabled.data
)
return redirect(url_for('.service_settings', service_id=service_id))

View File

@@ -1,5 +1,4 @@
{% extends "withnav_template.html" %}
{% from "components/radios.html" import radios %}
{% from "components/page-header.html" import page_header %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/form.html" import form_wrapper %}
@@ -16,7 +15,7 @@
) }}
{% call form_wrapper() %}
{{ radios(form.enabled) }}
{{ form.enabled }}
{{ page_footer('Save') }}
{% endcall %}

View File

@@ -4450,22 +4450,21 @@ def test_show_sms_prefixing_setting_page(
)
radios = page.select('input[type=radio]')
assert len(radios) == 2
assert radios[0]['value'] == 'on'
assert radios[0]['value'] == 'True'
assert radios[0]['checked'] == ''
assert radios[1]['value'] == 'off'
assert radios[1]['value'] == 'False'
with pytest.raises(KeyError):
assert radios[1]['checked']
@pytest.mark.parametrize('post_value, expected_api_argument', [
('on', True),
('off', False),
@pytest.mark.parametrize('post_value', [
True,
False,
])
def test_updates_sms_prefixing(
client_request,
mock_update_service,
post_value,
expected_api_argument,
):
client_request.post(
'main.service_set_sms_prefix', service_id=SERVICE_ONE_ID,
@@ -4477,7 +4476,7 @@ def test_updates_sms_prefixing(
)
mock_update_service.assert_called_once_with(
SERVICE_ONE_ID,
prefix_sms=expected_api_argument,
prefix_sms=post_value,
)