mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-06-19 12:46:20 -04:00
Add a separate page for rejected alerts
We don’t want to mix these up with alerts that actually went out.
This commit is contained in:
@@ -51,7 +51,6 @@ def broadcast_dashboard_previous(service_id):
|
||||
broadcasts=BroadcastMessages(service_id).with_status(
|
||||
'cancelled',
|
||||
'completed',
|
||||
'rejected',
|
||||
),
|
||||
page_title='Previous alerts',
|
||||
empty_message='You do not have any previous alerts',
|
||||
@@ -59,6 +58,21 @@ def broadcast_dashboard_previous(service_id):
|
||||
)
|
||||
|
||||
|
||||
@main.route('/services/<uuid:service_id>/rejected-alerts')
|
||||
@user_has_permissions()
|
||||
@service_has_permission('broadcast')
|
||||
def broadcast_dashboard_rejected(service_id):
|
||||
return render_template(
|
||||
'views/broadcast/previous-broadcasts.html',
|
||||
broadcasts=BroadcastMessages(service_id).with_status(
|
||||
'rejected',
|
||||
),
|
||||
page_title='Rejected alerts',
|
||||
empty_message='You do not have any rejected alerts',
|
||||
view_broadcast_endpoint='.view_rejected_broadcast',
|
||||
)
|
||||
|
||||
|
||||
@main.route('/services/<uuid:service_id>/broadcast-dashboard.json')
|
||||
@user_has_permissions()
|
||||
@service_has_permission('broadcast')
|
||||
@@ -345,6 +359,10 @@ def preview_broadcast_message(service_id, broadcast_message_id):
|
||||
'/services/<uuid:service_id>/previous-alerts/<uuid:broadcast_message_id>',
|
||||
endpoint='view_previous_broadcast',
|
||||
)
|
||||
@main.route(
|
||||
'/services/<uuid:service_id>/rejected-alerts/<uuid:broadcast_message_id>',
|
||||
endpoint='view_rejected_broadcast',
|
||||
)
|
||||
@user_has_permissions()
|
||||
@service_has_permission('broadcast')
|
||||
def view_broadcast(service_id, broadcast_message_id):
|
||||
@@ -356,7 +374,7 @@ def view_broadcast(service_id, broadcast_message_id):
|
||||
abort(404)
|
||||
|
||||
if (
|
||||
broadcast_message.status in {'completed', 'cancelled', 'rejected'}
|
||||
broadcast_message.status in {'completed', 'cancelled'}
|
||||
and request.endpoint != 'main.view_previous_broadcast'
|
||||
):
|
||||
return redirect(url_for(
|
||||
@@ -375,9 +393,20 @@ def view_broadcast(service_id, broadcast_message_id):
|
||||
broadcast_message_id=broadcast_message.id,
|
||||
))
|
||||
|
||||
if (
|
||||
broadcast_message.status in {'rejected'}
|
||||
and request.endpoint != 'main.view_rejected_broadcast'
|
||||
):
|
||||
return redirect(url_for(
|
||||
'.view_rejected_broadcast',
|
||||
service_id=current_service.id,
|
||||
broadcast_message_id=broadcast_message.id,
|
||||
))
|
||||
|
||||
back_link_endpoint = {
|
||||
'main.view_current_broadcast': '.broadcast_dashboard',
|
||||
'main.view_previous_broadcast': '.broadcast_dashboard_previous',
|
||||
'main.view_rejected_broadcast': '.broadcast_dashboard_rejected',
|
||||
}[request.endpoint]
|
||||
|
||||
return render_template(
|
||||
|
||||
@@ -147,6 +147,10 @@ class MainNavigation(Navigation):
|
||||
'broadcast_dashboard_previous',
|
||||
'view_previous_broadcast',
|
||||
},
|
||||
'rejected-broadcasts': {
|
||||
'broadcast_dashboard_rejected',
|
||||
'view_rejected_broadcast',
|
||||
},
|
||||
'templates': {
|
||||
'action_blocked',
|
||||
'add_service_template',
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
{% if current_service.has_permission('broadcast') %}
|
||||
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('current-broadcasts') }}" href="{{ url_for('.broadcast_dashboard', service_id=current_service.id) }}">Current alerts</a></li>
|
||||
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('previous-broadcasts') }}" href="{{ url_for('.broadcast_dashboard_previous', service_id=current_service.id) }}">Previous alerts</a></li>
|
||||
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('rejected-broadcasts') }}" href="{{ url_for('.broadcast_dashboard_rejected', service_id=current_service.id) }}">Rejected alerts</a></li>
|
||||
{% elif current_user.has_permissions('view_activity') %}
|
||||
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('dashboard') }}" href="{{ url_for('.service_dashboard', service_id=current_service.id) }}">Dashboard</a></li>
|
||||
{% endif %}
|
||||
|
||||
@@ -358,7 +358,7 @@ def test_broadcast_dashboard(
|
||||
|
||||
|
||||
@pytest.mark.parametrize('endpoint', (
|
||||
'.broadcast_dashboard', '.broadcast_dashboard_previous',
|
||||
'.broadcast_dashboard', '.broadcast_dashboard_previous', '.broadcast_dashboard_rejected',
|
||||
))
|
||||
def test_broadcast_dashboard_does_not_have_button_for_view_only_user(
|
||||
client_request,
|
||||
@@ -420,7 +420,6 @@ def test_previous_broadcasts_page(
|
||||
normalize_spaces(row.text)
|
||||
for row in page.select('.ajax-block-container')[0].select('.file-list')
|
||||
] == [
|
||||
'Example template This is a test Rejected today at 1:20am England Scotland',
|
||||
'Example template This is a test Broadcast yesterday at 2:20pm England Scotland',
|
||||
'Example template This is a test Broadcast yesterday at 2:20am England Scotland',
|
||||
]
|
||||
@@ -435,6 +434,40 @@ def test_previous_broadcasts_page(
|
||||
)
|
||||
|
||||
|
||||
@freeze_time('2020-02-20 02:20')
|
||||
def test_rejected_broadcasts_page(
|
||||
client_request,
|
||||
service_one,
|
||||
mock_get_broadcast_messages,
|
||||
mock_get_service_templates,
|
||||
):
|
||||
service_one['permissions'] += ['broadcast']
|
||||
page = client_request.get(
|
||||
'.broadcast_dashboard_rejected',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
)
|
||||
|
||||
assert normalize_spaces(page.select_one('main h1').text) == (
|
||||
'Rejected alerts'
|
||||
)
|
||||
assert len(page.select('.ajax-block-container')) == 1
|
||||
assert [
|
||||
normalize_spaces(row.text)
|
||||
for row in page.select('.ajax-block-container')[0].select('.file-list')
|
||||
] == [
|
||||
'Example template This is a test Rejected 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,
|
||||
service_one,
|
||||
@@ -1419,6 +1452,7 @@ def test_view_broadcast_message_page(
|
||||
@pytest.mark.parametrize('endpoint', (
|
||||
'.view_current_broadcast',
|
||||
'.view_previous_broadcast',
|
||||
'.view_rejected_broadcast',
|
||||
))
|
||||
@pytest.mark.parametrize('status, expected_highlighted_navigation_item, expected_back_link_endpoint', (
|
||||
(
|
||||
@@ -1443,8 +1477,8 @@ def test_view_broadcast_message_page(
|
||||
),
|
||||
(
|
||||
'rejected',
|
||||
'Previous alerts',
|
||||
'.broadcast_dashboard_previous',
|
||||
'Rejected alerts',
|
||||
'.broadcast_dashboard_rejected',
|
||||
),
|
||||
))
|
||||
@freeze_time('2020-02-22T22:22:22.000000')
|
||||
|
||||
@@ -36,6 +36,7 @@ EXCLUDED_ENDPOINTS = tuple(map(Navigation.get_endpoint_with_blueprint, {
|
||||
'broadcast',
|
||||
'broadcast_dashboard',
|
||||
'broadcast_dashboard_previous',
|
||||
'broadcast_dashboard_rejected',
|
||||
'broadcast_dashboard_updates',
|
||||
'broadcast_tour',
|
||||
'callbacks',
|
||||
@@ -326,6 +327,7 @@ EXCLUDED_ENDPOINTS = tuple(map(Navigation.get_endpoint_with_blueprint, {
|
||||
'view_previous_broadcast',
|
||||
'view_provider',
|
||||
'view_providers',
|
||||
'view_rejected_broadcast',
|
||||
'view_template',
|
||||
'view_template_version',
|
||||
'view_template_versions',
|
||||
@@ -493,6 +495,7 @@ def test_navigation_for_services_with_broadcast_permission(
|
||||
] == [
|
||||
'/services/{}/current-alerts'.format(SERVICE_ONE_ID),
|
||||
'/services/{}/previous-alerts'.format(SERVICE_ONE_ID),
|
||||
'/services/{}/rejected-alerts'.format(SERVICE_ONE_ID),
|
||||
'/services/{}/templates'.format(SERVICE_ONE_ID),
|
||||
'/services/{}/users'.format(SERVICE_ONE_ID),
|
||||
'/services/{}/service-settings'.format(SERVICE_ONE_ID),
|
||||
|
||||
Reference in New Issue
Block a user