diff --git a/app/assets/stylesheets/components/table.scss b/app/assets/stylesheets/components/table.scss index 152d209be..c86d5cc12 100644 --- a/app/assets/stylesheets/components/table.scss +++ b/app/assets/stylesheets/components/table.scss @@ -143,6 +143,25 @@ @include bold-16; } + +.table-field-headings { + + th { + padding: 1px; /* needs some height for the grey border to show */ + } + +} + +.table-field-headings-visible { + + height: auto; + + th { + padding: .75em 1.25em .5625em 0; + } + +} + .table-field-headings, .table-field-headings-visible { diff --git a/app/templates/views/service-settings.html b/app/templates/views/service-settings.html index 0d03b5c2f..b945e24ce 100644 --- a/app/templates/views/service-settings.html +++ b/app/templates/views/service-settings.html @@ -11,20 +11,30 @@

Settings

-
+
{% call mapping_table( - caption='Settings', + caption='General', field_headings=['Label', 'Value', 'Action'], field_headings_visible=False, caption_visible=False ) %} + {% call row() %} {{ text_field('Service name') }} {{ text_field(current_service.name) }} {{ edit_field('Change', url_for('.service_name_change', service_id=current_service.id)) }} {% endcall %} + {% endcall %} + + {% call mapping_table( + caption='Email', + field_headings=['Label', 'Value', 'Action'], + field_headings_visible=False, + caption_visible=True + ) %} + {% call row() %} {{ text_field('Send emails') }} {{ boolean_field('email' in current_service.permissions) }} @@ -44,6 +54,15 @@ {% endif %} + {% endcall %} + + {% call mapping_table( + caption='Text messages', + field_headings=['Label', 'Value', 'Action'], + field_headings_visible=False, + caption_visible=True + ) %} + {% call row() %} {{ text_field('Send text messages') }} {{ boolean_field('sms' in current_service.permissions) }} @@ -93,8 +112,17 @@ {% endif %} + {% endcall %} + + {% call mapping_table( + caption='Letters', + field_headings=['Label', 'Value', 'Action'], + field_headings_visible=False, + caption_visible=True + ) %} + {% call row() %} - {{ text_field('Letters') }} + {{ text_field('Send letters') }} {{ boolean_field('letter' in current_service.permissions) }} {{ edit_field('Change', url_for('.service_set_letters', service_id=current_service.id)) }} {% endcall %} diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py index d0d905520..5c43eb6d5 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -16,29 +16,46 @@ from tests.conftest import normalize_spaces @pytest.mark.parametrize('user, expected_rows', [ (active_user_with_permissions, [ + 'Label Value Action', 'Service name service one Change', + + 'Label Value Action', 'Send emails On Change', 'Email reply to address None Change', + + 'Label Value Action', 'Send text messages On Change', 'Text message sender GOVUK Change', 'International text messages Off Change', 'Receive text messages Off Change', - 'Letters Off Change', + + 'Label Value Action', + 'Send letters Off Change', + ]), (platform_admin_user, [ + 'Label Value Action', 'Service name service one Change', + + 'Label Value Action', 'Send emails On Change', 'Email reply to address None Change', + + 'Label Value Action', 'Send text messages On Change', 'Text message sender GOVUK Change', 'International text messages Off Change', 'Receive text messages Off Change', - 'Letters Off Change', + + 'Label Value Action', + 'Send letters Off Change', + 'Label Value Action', 'Email branding GOV.UK Change', 'Letter branding HM Government Change', + ]), ]) def test_should_show_overview( @@ -51,6 +68,7 @@ def test_should_show_overview( expected_rows, mock_get_inbound_number_for_service ): + service_one['permissions'] = ['sms', 'email'] client.login(user(fake_uuid), mocker, service_one) @@ -60,7 +78,7 @@ def test_should_show_overview( assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') assert page.find('h1').text == 'Settings' - rows = page.find_all('tr') + rows = page.select('tr') assert len(rows) == len(expected_rows) for index, row in enumerate(expected_rows): assert row == " ".join(rows[index].text.split()) @@ -69,25 +87,41 @@ def test_should_show_overview( @pytest.mark.parametrize('permissions, expected_rows', [ (['email', 'sms', 'inbound_sms', 'international_sms'], [ + 'Service name service one Change', + + 'Label Value Action', 'Send emails On Change', 'Email reply to address test@example.com Change', + + 'Label Value Action', 'Send text messages On Change', 'Text message sender 0781239871', 'International text messages On Change', 'Receive text messages On Change', 'API endpoint for received text messages None Change', - 'Letters Off Change', + + 'Label Value Action', + 'Send letters Off Change', + ]), (['email', 'sms'], [ + 'Service name service one Change', + + 'Label Value Action', 'Send emails On Change', 'Email reply to address test@example.com Change', + + 'Label Value Action', 'Send text messages On Change', 'Text message sender elevenchars Change', 'International text messages Off Change', 'Receive text messages Off Change', - 'Letters Off Change', + + 'Label Value Action', + 'Send letters Off Change', + ]), ]) def test_should_show_overview_for_service_with_more_things_set( @@ -191,7 +225,7 @@ def test_letter_contact_block_shows_none_if_not_set( )) page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') - div = page.find_all('tr')[5].find_all('td')[1].div + div = page.find_all('tr')[8].find_all('td')[1].div assert div.text.strip() == 'None' assert 'default' in div.attrs['class'][0] @@ -210,7 +244,7 @@ def test_escapes_letter_contact_block( )) page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') - div = str(page.find_all('tr')[5].find_all('td')[1].div) + div = str(page.find_all('tr')[8].find_all('td')[1].div) assert 'foo
bar' in div assert '