mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-12 22:44:09 -05:00
131 lines
4.8 KiB
Python
131 lines
4.8 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_send_precompiled_letter(mocker, logged_in_client, active_user_with_permissions):
|
|
mock_post = mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.post')
|
|
NotificationApiClient().send_precompiled_letter(
|
|
'abcd-1234',
|
|
'my_file.pdf',
|
|
'file-ID',
|
|
'second'
|
|
)
|
|
mock_post.assert_called_once_with(
|
|
url='/service/abcd-1234/send-pdf-letter',
|
|
data={
|
|
'filename': 'my_file.pdf',
|
|
'file_id': 'file-ID',
|
|
'created_by': active_user_with_permissions['id'],
|
|
'postage': 'second',
|
|
}
|
|
)
|
|
|
|
|
|
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={},
|
|
)
|
|
|
|
|
|
def test_get_notification_count_for_job_id(mocker):
|
|
mock_get = mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.get')
|
|
NotificationApiClient().get_notification_count_for_job_id(service_id='foo', job_id='bar')
|
|
mock_get.assert_called_once_with(
|
|
url='/service/foo/job/bar/notification_count',
|
|
)
|