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', )