Merge pull request #3730 from alphagov/add-govuk-radios-4

Add GOVUK radios [part 4]
This commit is contained in:
Tom Byers
2020-12-11 11:31:58 +00:00
committed by GitHub
7 changed files with 36 additions and 42 deletions

View File

@@ -426,26 +426,6 @@ class ForgivingIntegerField(GovukTextInputField):
return super().__call__(value=value, **kwargs)
class OrganisationTypeField(RadioField):
def __init__(
self,
*args,
include_only=None,
validators=None,
**kwargs
):
super().__init__(
*args,
choices=[
(value, label) for value, label in Organisation.TYPES
if not include_only or value in include_only
],
thing='the type of organisation',
validators=validators or [],
**kwargs
)
class FieldWithNoneOption():
# This is a special value that is specific to our forms. This is
@@ -951,6 +931,26 @@ class OnOffField(GovukRadiosField):
)
class OrganisationTypeField(GovukRadiosField):
def __init__(
self,
*args,
include_only=None,
validators=None,
**kwargs
):
super().__init__(
*args,
choices=[
(value, label) for value, label in Organisation.TYPES
if not include_only or value in include_only
],
thing='the type of organisation',
validators=validators or [],
**kwargs
)
# guard against data entries that aren't a role in permissions
def filter_by_permissions(valuelist):
if valuelist is None:
@@ -1168,10 +1168,8 @@ class OrganisationOrganisationTypeForm(StripWhitespaceForm):
class OrganisationCrownStatusForm(StripWhitespaceForm):
crown_status = RadioField(
(
'Is this organisation a crown body?'
),
crown_status = GovukRadiosField(
'Is this organisation a crown body?',
choices=[
('crown', 'Yes'),
('non-crown', 'No'),

View File

@@ -1,5 +1,4 @@
{% extends "withoutnav_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 %}
@@ -20,7 +19,7 @@
{{ form.name(param_extensions={"hint": {"text": "You can change this later"}}) }}
{% if not default_organisation_type %}
{{ radios(form.organisation_type) }}
{{ form.organisation_type }}
{% endif %}
{{ page_footer('Add service') }}

View File

@@ -1,7 +1,6 @@
{% extends "withoutnav_template.html" %}
{% from "components/page-header.html" import page_header %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/radios.html" import radios %}
{% from "components/form.html" import form_wrapper %}
{% block per_page_title %}
@@ -26,8 +25,8 @@
{{ page_header('New organisation') }}
{% call form_wrapper() %}
{{ form.name }}
{{ radios(form.organisation_type) }}
{{ radios(form.crown_status) }}
{{ form.organisation_type }}
{{ form.crown_status }}
{{ page_footer('Save') }}
{% endcall %}
{% endblock %}

View File

@@ -1,4 +1,3 @@
{% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/form.html" import form_wrapper %}
@@ -17,7 +16,7 @@
<div class="govuk-grid-row">
<div class="govuk-grid-column-five-sixths">
{% call form_wrapper() %}
{{ radios(form.crown_status) }}
{{ form.crown_status }}
{{ page_footer('Save') }}
{% endcall %}
</div>

View File

@@ -1,4 +1,3 @@
{% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/form.html" import form_wrapper %}
@@ -15,7 +14,7 @@
back_link=url_for('.organisation_settings', org_id=current_org.id)
) }}
{% call form_wrapper() %}
{{ radios(form.organisation_type) }}
{{ form.organisation_type }}
{{ page_footer('Save') }}
{% endcall %}
{% endblock %}

View File

@@ -155,11 +155,11 @@ def test_create_new_organisation_validates(
)
assert [
(error['data-error-label'], normalize_spaces(error.text))
for error in page.select('.govuk-error-message, .error-message')
for error in page.select('.govuk-error-message')
] == [
('name', 'Error: Cannot be empty'),
('organisation_type', 'Select the type of organisation'),
('crown_status', 'Select whether this organisation is a crown body'),
('organisation_type', 'Error: Select the type of organisation'),
('crown_status', 'Error: Select whether this organisation is a crown body'),
]
assert mock_create_organisation.called is False

View File

@@ -37,7 +37,7 @@ def test_get_should_render_add_service_template(
assert page.select_one('h1').text.strip() == 'About your service'
assert page.select_one('input[name=name]').get('value') is None
assert [
label.text.strip() for label in page.select('.multiple-choice label')
label.text.strip() for label in page.select('.govuk-radios__item label')
] == [
'Central government',
'Local government',
@@ -49,7 +49,7 @@ def test_get_should_render_add_service_template(
'Other',
]
assert [
radio['value'] for radio in page.select('.multiple-choice input')
radio['value'] for radio in page.select('.govuk-radios__item input')
] == [
'central',
'local',
@@ -193,8 +193,8 @@ def test_add_service_has_to_choose_org_type(
},
_expected_status=200,
)
assert normalize_spaces(page.select_one('.error-message').text) == (
'Select the type of organisation'
assert normalize_spaces(page.select_one('.govuk-error-message').text) == (
'Error: Select the type of organisation'
)
assert mock_create_service.called is False
assert mock_create_service_template.called is False
@@ -223,14 +223,14 @@ def test_get_should_only_show_nhs_org_types_radios_if_user_has_nhs_email(
assert page.select_one('h1').text.strip() == 'About your service'
assert page.select_one('input[name=name]').get('value') is None
assert [
label.text.strip() for label in page.select('.multiple-choice label')
label.text.strip() for label in page.select('.govuk-radios__item label')
] == [
'NHS central government agency or public body',
'NHS Trust or Clinical Commissioning Group',
'GP practice',
]
assert [
radio['value'] for radio in page.select('.multiple-choice input')
radio['value'] for radio in page.select('.govuk-radios__item input')
] == [
'nhs_central',
'nhs_local',