mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-09 19:04:33 -04:00
79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
from freezegun import freeze_time
|
|
import pytest
|
|
from werkzeug.datastructures import MultiDict
|
|
|
|
from app.main.views.notifications import get_status_arg
|
|
from app.utils import (
|
|
REQUESTED_STATUSES,
|
|
FAILURE_STATUSES,
|
|
SENDING_STATUSES,
|
|
DELIVERED_STATUSES,
|
|
)
|
|
|
|
from tests.conftest import mock_get_notification
|
|
|
|
|
|
@pytest.mark.parametrize('multidict_args, expected_statuses', [
|
|
([], REQUESTED_STATUSES),
|
|
([('status', '')], REQUESTED_STATUSES),
|
|
([('status', 'garbage')], REQUESTED_STATUSES),
|
|
([('status', 'sending')], SENDING_STATUSES),
|
|
([('status', 'delivered')], DELIVERED_STATUSES),
|
|
([('status', 'failed')], FAILURE_STATUSES),
|
|
])
|
|
def test_status_filters(mocker, multidict_args, expected_statuses):
|
|
mocker.patch('app.main.views.notifications.current_app')
|
|
|
|
args = MultiDict(multidict_args)
|
|
args['status'] = get_status_arg(args)
|
|
|
|
assert sorted(args['status']) == sorted(expected_statuses)
|
|
|
|
|
|
@freeze_time("2016-01-01 11:09:00.061258")
|
|
def test_notification_status_page_shows_details(
|
|
client_request,
|
|
mock_get_notification,
|
|
service_one,
|
|
fake_uuid,
|
|
):
|
|
page = client_request.get(
|
|
'main.view_notification',
|
|
service_id=service_one['id'],
|
|
notification_id=fake_uuid
|
|
)
|
|
|
|
assert page.find('div', {'class': 'sms-message-wrapper'}).text.strip() == 'service one: template content'
|
|
assert ' '.join(page.find('tbody').find('tr').text.split()) == '07123456789 Delivered 1 January at 11:10am'
|
|
|
|
mock_get_notification.assert_called_with(
|
|
service_one['id'],
|
|
fake_uuid
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize('notification_status, expected_big_number_vals', [
|
|
('created', [1, 1, 0, 0]),
|
|
('sending', [1, 1, 0, 0]),
|
|
('delivered', [1, 0, 1, 0]),
|
|
('temporary-failure', [1, 0, 0, 1]),
|
|
])
|
|
def test_notification_status_page_shows_correct_numbers(
|
|
client_request,
|
|
mocker,
|
|
service_one,
|
|
fake_uuid,
|
|
notification_status,
|
|
expected_big_number_vals
|
|
):
|
|
mock_get_notification(mocker, fake_uuid, notification_status=notification_status)
|
|
|
|
page = client_request.get(
|
|
'main.view_notification',
|
|
service_id=service_one['id'],
|
|
notification_id=fake_uuid
|
|
)
|
|
|
|
big_numbers = page.find_all('div', {'class': 'big-number-number'})
|
|
assert expected_big_number_vals == [int(num.text.strip()) for num in big_numbers]
|