mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-19 18:04:25 -05:00
104 lines
3.9 KiB
Python
104 lines
3.9 KiB
Python
import uuid
|
|
|
|
import pytest
|
|
|
|
from app.notify_client.notification_api_client import NotificationApiClient
|
|
from tests import notification_json, single_notification_json
|
|
|
|
|
|
@pytest.mark.parametrize("arguments,expected_call", [
|
|
(
|
|
{},
|
|
{'url': '/service/abcd1234/notifications', 'params': {}}
|
|
),
|
|
(
|
|
{'page': 99},
|
|
{'url': '/service/abcd1234/notifications', 'params': {'page': 99}}
|
|
),
|
|
(
|
|
{'include_jobs': False},
|
|
{'url': '/service/abcd1234/notifications', 'params': {'include_jobs': False}}
|
|
),
|
|
(
|
|
{'include_from_test_key': True},
|
|
{'url': '/service/abcd1234/notifications', 'params': {'include_from_test_key': True}}
|
|
),
|
|
(
|
|
{'job_id': 'efgh5678'},
|
|
{'url': '/service/abcd1234/job/efgh5678/notifications', 'params': {}}
|
|
),
|
|
(
|
|
{'job_id': 'efgh5678', 'page': 48},
|
|
{'url': '/service/abcd1234/job/efgh5678/notifications', 'params': {'page': 48}}
|
|
)
|
|
])
|
|
def test_client_gets_notifications_for_service_and_job_by_page(mocker, arguments, expected_call):
|
|
|
|
mock_get = mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.get')
|
|
NotificationApiClient().get_notifications_for_service('abcd1234', **arguments)
|
|
mock_get.assert_called_once_with(**expected_call)
|
|
|
|
|
|
def test_send_notification(mocker, logged_in_client, active_user_with_permissions):
|
|
mock_post = mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.post')
|
|
NotificationApiClient().send_notification(
|
|
'foo',
|
|
template_id='bar',
|
|
recipient='07700900001',
|
|
personalisation=None,
|
|
sender_id=None
|
|
)
|
|
mock_post.assert_called_once_with(
|
|
url='/service/foo/send-notification',
|
|
data={
|
|
'template_id': 'bar',
|
|
'to': '07700900001',
|
|
'personalisation': None,
|
|
'created_by': active_user_with_permissions.id
|
|
}
|
|
)
|
|
|
|
|
|
def test_get_notification(mocker):
|
|
mock_get = mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.get')
|
|
NotificationApiClient().get_notification('foo', 'bar')
|
|
mock_get.assert_called_once_with(
|
|
url='/service/foo/notifications/bar'
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize("letter_status, expected_status", [
|
|
('created', 'accepted'),
|
|
('sending', 'accepted'),
|
|
('delivered', 'received'),
|
|
('returned-letter', 'received'),
|
|
("technical-failure", "technical-failure")
|
|
])
|
|
def test_get_api_notifications_changes_letter_statuses(mocker, letter_status, expected_status):
|
|
service_id = str(uuid.uuid4())
|
|
sms_notification = single_notification_json(service_id, notification_type='sms', status='created')
|
|
email_notification = single_notification_json(service_id, notification_type='email', status='created')
|
|
letter_notification = single_notification_json(service_id, notification_type='letter', status=letter_status)
|
|
notis = notification_json(service_id=service_id, rows=0)
|
|
notis['notifications'] = [sms_notification, email_notification, letter_notification]
|
|
|
|
mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.get', return_value=notis)
|
|
|
|
ret = NotificationApiClient().get_api_notifications_for_service(service_id)
|
|
|
|
assert ret['notifications'][0]['notification_type'] == 'sms'
|
|
assert ret['notifications'][1]['notification_type'] == 'email'
|
|
assert ret['notifications'][2]['notification_type'] == 'letter'
|
|
assert ret['notifications'][0]['status'] == 'created'
|
|
assert ret['notifications'][1]['status'] == 'created'
|
|
assert ret['notifications'][2]['status'] == expected_status
|
|
|
|
|
|
def test_update_notification_to_cancelled(mocker):
|
|
mock_post = mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.post')
|
|
NotificationApiClient().update_notification_to_cancelled('foo', 'bar')
|
|
mock_post.assert_called_once_with(
|
|
url='/service/foo/notifications/bar/cancel',
|
|
data={},
|
|
)
|