Ship the contact lists feature

This reveals the links that we were only showing to platform admin users
so that everyone can discover the new feature.
This commit is contained in:
Chris Hill-Scott
2020-03-16 14:57:36 +00:00
parent fc58547be3
commit 3dfa401de1
4 changed files with 34 additions and 41 deletions

View File

@@ -31,25 +31,22 @@
</p>
{% endif %}
{{ previous_next_navigation(prev_page, next_page) }}
{% if (
current_service.can_upload_letters and
current_user.has_permissions('send_messages')
) or current_user.platform_admin %}
{% if current_user.has_permissions('send_messages') %}
<div class="js-stick-at-bottom-when-scrolling">
{{ govukButton({
"element": "a",
"text": "Upload a letter",
"href": url_for('.upload_letter', service_id=current_service.id),
"classes": "govuk-button--secondary"
}) }}
{% if current_user.platform_admin %}
{% if current_service.has_permission('letter') %}
{{ govukButton({
"element": "a",
"text": "Upload an emergency contact list",
"href": url_for('.upload_contact_list', service_id=current_service.id),
"classes": "govuk-button--secondary govuk-!-margin-left-3"
"text": "Upload a letter",
"href": url_for('.upload_letter', service_id=current_service.id),
"classes": "govuk-button--secondary"
}) }}
{% endif %}
{{ govukButton({
"element": "a",
"text": "Upload an emergency contact list",
"href": url_for('.upload_contact_list', service_id=current_service.id),
"classes": "govuk-button--secondary govuk-!-margin-left-3"
}) }}
</div>
{% endif %}
</div>

View File

@@ -33,7 +33,7 @@
<div class="govuk-grid-column-full">
{% if link_to_upload %}
<a class="govuk-link govuk-link--no-visited-state govuk-!-margin-right-3" href="{{ url_for('.send_messages', service_id=current_service.id, template_id=template.id) }}">Upload a list of {{ recipient_count_label(999, template.template_type) }}</a>
{% if current_user.platform_admin and current_service.contact_lists %}
{% if current_service.contact_lists %}
<a class="govuk-link govuk-link--no-visited-state govuk-!-margin-right-3" href="{{ url_for('.choose_from_contact_list', service_id=current_service.id, template_id=template.id) }}">Use a saved list</a>
{% endif %}
{% endif %}

View File

@@ -1066,6 +1066,7 @@ def test_send_test_step_redirects_if_session_not_setup(
mock_get_service_statistics,
mock_get_users_by_service,
mock_has_no_jobs,
mock_get_no_contact_lists,
fake_uuid,
user,
endpoint,
@@ -1180,6 +1181,7 @@ def test_send_one_off_or_test_has_correct_page_titles(
logged_in_client,
service_one,
mock_has_no_jobs,
mock_get_no_contact_lists,
fake_uuid,
mocker,
template_type,
@@ -1241,6 +1243,7 @@ def test_send_one_off_or_test_shows_placeholders_in_correct_order(
client_request,
fake_uuid,
mock_has_no_jobs,
mock_get_no_contact_lists,
mock_get_service_template_with_multiple_placeholders,
endpoint,
step_index,
@@ -1292,6 +1295,7 @@ def test_send_one_off_has_skip_link(
fake_uuid,
mock_get_service_email_template,
mock_has_no_jobs,
mock_get_no_contact_lists,
mocker,
template_type,
expected_link_text,
@@ -1334,6 +1338,7 @@ def test_send_one_off_has_sticky_header_for_email_and_letter(
client_request,
fake_uuid,
mock_has_no_jobs,
mock_get_no_contact_lists,
template_type,
expected_sticky,
):
@@ -1362,6 +1367,7 @@ def test_skip_link_will_not_show_on_sms_one_off_if_service_has_no_mobile_number(
fake_uuid,
mock_get_service_template,
mock_has_no_jobs,
mock_get_no_contact_lists,
mocker,
user,
):
@@ -1387,6 +1393,7 @@ def test_send_one_off_offers_link_to_upload(
fake_uuid,
mock_get_service_template,
mock_has_jobs,
mock_get_no_contact_lists,
user,
):
client_request.login(user)
@@ -1411,24 +1418,13 @@ def test_send_one_off_offers_link_to_upload(
)
@pytest.mark.parametrize('user', (
pytest.param(
create_platform_admin_user(),
),
pytest.param(
create_active_user_with_permissions(),
marks=pytest.mark.xfail(raises=AssertionError),
),
))
def test_platform_admin_has_link_to_use_existing_list(
def test_send_one_off_has_link_to_use_existing_list(
client_request,
mock_get_service_template,
mock_has_jobs,
mock_get_contact_lists,
fake_uuid,
user,
):
client_request.login(user)
page = client_request.get(
'main.send_one_off',
service_id=SERVICE_ONE_ID,
@@ -3787,6 +3783,7 @@ def test_reply_to_is_previewed_if_chosen(
mock_get_service_statistics,
mock_get_job_doesnt_exist,
mock_get_jobs,
mock_get_no_contact_lists,
get_default_reply_to_email_address,
fake_uuid,
endpoint,
@@ -3838,6 +3835,7 @@ def test_sms_sender_is_previewed(
mock_get_service_statistics,
mock_get_job_doesnt_exist,
mock_get_jobs,
mock_get_no_contact_lists,
get_default_sms_sender,
fake_uuid,
endpoint,

View File

@@ -20,15 +20,18 @@ from tests.conftest import (
@pytest.mark.parametrize('extra_permissions', (
[],
['letter'],
['upload_letters'],
pytest.param(
['letter', 'upload_letters'],
[],
marks=pytest.mark.xfail(raises=AssertionError),
),
pytest.param(
['upload_letters'],
marks=pytest.mark.xfail(raises=AssertionError),
),
['letter'],
['letter', 'upload_letters'],
))
def test_no_upload_letters_button_without_permission(
def test_upload_letters_button_only_with_letters_permission(
client_request,
service_one,
mock_get_uploads,
@@ -38,19 +41,14 @@ def test_no_upload_letters_button_without_permission(
):
service_one['permissions'] += extra_permissions
page = client_request.get('main.uploads', service_id=SERVICE_ONE_ID)
assert not page.find('a', text=re.compile('Upload a letter'))
assert page.find('a', text=re.compile('Upload a letter'))
@pytest.mark.parametrize('user', (
pytest.param(
create_platform_admin_user(),
),
pytest.param(
create_active_user_with_permissions(),
marks=pytest.mark.xfail(raises=AssertionError),
),
create_platform_admin_user(),
create_active_user_with_permissions(),
))
def test_platform_admin_has_upload_contact_list(
def test_all_users_have_upload_contact_list(
client_request,
mock_get_uploads,
mock_get_jobs,