Files
notifications-admin/tests/app/notify_client/test_notification_client.py
2023-01-06 11:19:56 -05:00

110 lines
3.9 KiB
Python

import pytest
from app.notify_client.notification_api_client import NotificationApiClient
@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}}
),
(
{'page': 48, 'limit_days': 3},
{'url': '/service/abcd1234/notifications', 'params': {'page': 48, 'limit_days': 3}}
),
(
{'job_id': 'efgh5678'},
{'url': '/service/abcd1234/job/efgh5678/notifications', 'params': {}}
),
(
{'job_id': 'efgh5678', 'page': 48},
{'url': '/service/abcd1234/job/efgh5678/notifications', 'params': {'page': 48}}
),
(
{'job_id': 'efgh5678', 'page': 48, 'limit_days': 3},
{'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)
@pytest.mark.parametrize("arguments,expected_call", [
(
{'to': "2028675309"},
{'url': '/service/abcd1234/notifications', 'data': {'to': "2028675309"}}
),
(
{'to': "2028675309", 'job_id': 'efgh5678'},
{'url': '/service/abcd1234/job/efgh5678/notifications', 'data': {'to': "2028675309"}}
),
(
{'to': "2028675309", 'page': 99},
{'url': '/service/abcd1234/notifications', 'data': {'to': "2028675309", 'page': 99}}
),
(
{'to': "2028675309", 'limit_days': 3},
{'url': '/service/abcd1234/notifications', 'data': {'to': "2028675309", 'limit_days': 3}}
),
(
{'to': "2028675309", 'job_id': 'efgh5678', 'limit_days': 3},
{'url': '/service/abcd1234/job/efgh5678/notifications', 'data': {'to': "2028675309"}}
),
])
def test_client_gets_notifications_for_service_and_job_by_page_posts_for_to(mocker, arguments, expected_call):
mock_post = mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.post')
NotificationApiClient().get_notifications_for_service('abcd1234', **arguments)
mock_post.assert_called_once_with(**expected_call)
def test_send_notification(mocker, client_request, active_user_with_permissions):
mock_post = mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.post')
NotificationApiClient().send_notification(
'foo',
template_id='bar',
recipient='2028675301',
personalisation=None,
sender_id=None
)
mock_post.assert_called_once_with(
url='/service/foo/send-notification',
data={
'template_id': 'bar',
'to': '2028675301',
'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'
)
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',
)