From a7a1172e22cdfaf01163ef021b92adbc3fcf22c2 Mon Sep 17 00:00:00 2001 From: Katie Smith Date: Fri, 23 Jul 2021 14:47:17 +0100 Subject: [PATCH] Split out the tests for 'New alert' button on broadcast dashboards The 'New alert' button was being tested in the same tests as the tests for the page content for the broadcast dashboards. Now that you only see the button if you have the `create_broadcasts` permission, this adds a new test just for the button so that the test for the page content can be used for both broadcast permissions. --- tests/app/main/views/test_broadcast.py | 78 +++++++++++++++----------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/tests/app/main/views/test_broadcast.py b/tests/app/main/views/test_broadcast.py index c133b66c7..83a9470d5 100644 --- a/tests/app/main/views/test_broadcast.py +++ b/tests/app/main/views/test_broadcast.py @@ -470,15 +470,19 @@ def test_empty_broadcast_dashboard( ] +@pytest.mark.parametrize('user', [ + create_active_user_approve_broadcasts_permissions(), + create_active_user_create_broadcasts_permissions(), +]) @freeze_time('2020-02-20 02:20') def test_broadcast_dashboard( client_request, service_one, mock_get_broadcast_messages, - active_user_create_broadcasts_permission, + user, ): service_one['permissions'] += ['broadcast'] - client_request.login(active_user_create_broadcasts_permission) + client_request.login(user) page = client_request.get( '.broadcast_dashboard', service_id=SERVICE_ONE_ID, @@ -496,15 +500,6 @@ def test_broadcast_dashboard( 'Example template This is a test Live since today at 1:20am England Scotland', ] - button = page.select_one( - '.js-stick-at-bottom-when-scrolling a.govuk-button.govuk-button--secondary' - ) - assert normalize_spaces(button.text) == 'New alert' - assert button['href'] == url_for( - 'main.new_broadcast', - service_id=SERVICE_ONE_ID, - ) - @pytest.mark.parametrize('user', [ create_platform_admin_user(), @@ -531,6 +526,33 @@ def test_broadcast_dashboard_does_not_have_button_if_user_does_not_have_permissi assert not page.select('a.govuk-button') +@pytest.mark.parametrize('endpoint', ( + '.broadcast_dashboard', '.broadcast_dashboard_previous', '.broadcast_dashboard_rejected', +)) +def test_broadcast_dashboard_has_new_alert_button_if_user_has_permission_to_create_broadcasts( + client_request, + service_one, + mock_get_broadcast_messages, + active_user_create_broadcasts_permission, + endpoint, +): + client_request.login(active_user_create_broadcasts_permission) + + service_one['permissions'] += ['broadcast'] + page = client_request.get( + endpoint, + service_id=SERVICE_ONE_ID, + ) + button = page.select_one( + '.js-stick-at-bottom-when-scrolling a.govuk-button.govuk-button--secondary' + ) + assert normalize_spaces(button.text) == 'New alert' + assert button['href'] == url_for( + 'main.new_broadcast', + service_id=SERVICE_ONE_ID, + ) + + @freeze_time('2020-02-20 02:20') def test_broadcast_dashboard_json( logged_in_client, @@ -553,15 +575,19 @@ def test_broadcast_dashboard_json( assert 'Live since today at 2:20am' in json_response['current_broadcasts'] +@pytest.mark.parametrize('user', [ + create_active_user_approve_broadcasts_permissions(), + create_active_user_create_broadcasts_permissions(), +]) @freeze_time('2020-02-20 02:20') def test_previous_broadcasts_page( client_request, service_one, mock_get_broadcast_messages, - active_user_create_broadcasts_permission, + user, ): service_one['permissions'] += ['broadcast'] - client_request.login(active_user_create_broadcasts_permission) + client_request.login(user) page = client_request.get( '.broadcast_dashboard_previous', service_id=SERVICE_ONE_ID, @@ -579,25 +605,20 @@ def test_previous_broadcasts_page( 'Example template This is a test Yesterday at 2:20am England Scotland', ] - button = page.select_one( - '.js-stick-at-bottom-when-scrolling a.govuk-button.govuk-button--secondary' - ) - assert normalize_spaces(button.text) == 'New alert' - assert button['href'] == url_for( - 'main.new_broadcast', - service_id=SERVICE_ONE_ID, - ) - +@pytest.mark.parametrize('user', [ + create_active_user_approve_broadcasts_permissions(), + create_active_user_create_broadcasts_permissions(), +]) @freeze_time('2020-02-20 02:20') def test_rejected_broadcasts_page( client_request, service_one, mock_get_broadcast_messages, - active_user_create_broadcasts_permission, + user, ): service_one['permissions'] += ['broadcast'] - client_request.login(active_user_create_broadcasts_permission) + client_request.login(user) page = client_request.get( '.broadcast_dashboard_rejected', service_id=SERVICE_ONE_ID, @@ -614,15 +635,6 @@ def test_rejected_broadcasts_page( 'Example template This is a test Today at 1:20am England Scotland', ] - button = page.select_one( - '.js-stick-at-bottom-when-scrolling a.govuk-button.govuk-button--secondary' - ) - assert normalize_spaces(button.text) == 'New alert' - assert button['href'] == url_for( - 'main.new_broadcast', - service_id=SERVICE_ONE_ID, - ) - def test_new_broadcast_page( client_request,