Files
notifications-admin/tests/app/notify_client/test_service_api_client.py
Chris Hill-Scott da1fa2e61c Make _attach_current_user a pure function
Mutating dictionaries is gross and doesn’t work as you’d expect. Better
to have the function return a new dictionary instead.

Means we can be explicit that `created_by` is one of the allowed params
when updating a service.
2016-08-11 17:07:55 +01:00

46 lines
1.5 KiB
Python

import pytest
from app.notify_client.service_api_client import ServiceAPIClient
from tests.conftest import fake_uuid
def test_client_posts_archived_true_when_deleting_template(mocker):
service_id = fake_uuid
template_id = fake_uuid
mocker.patch('app.notify_client.current_user', id='1')
expected_data = {
'archived': True,
'created_by': '1'
}
expected_url = '/service/{}/template/{}'.format(service_id, template_id)
client = ServiceAPIClient()
mock_post = mocker.patch('app.notify_client.service_api_client.ServiceAPIClient.post')
client.delete_service_template(service_id, template_id)
mock_post.assert_called_once_with(expected_url, data=expected_data)
@pytest.mark.parametrize(
'function,params', [
(ServiceAPIClient.get_service, {}),
(ServiceAPIClient.get_detailed_service, {'detailed': True}),
(ServiceAPIClient.get_detailed_service_for_today, {'detailed': True, 'today_only': True})
],
ids=lambda x: x.__name__
)
def test_client_gets_service(mocker, function, params):
client = ServiceAPIClient()
mock_get = mocker.patch.object(client, 'get')
function(client, 'foo')
mock_get.assert_called_once_with('/service/foo', params=params)
def test_client_only_updates_allowed_attributes(mocker):
mocker.patch('app.notify_client.current_user', id='1')
with pytest.raises(TypeError) as error:
ServiceAPIClient().update_service('service_id', foo='bar')
assert str(error.value) == 'Not allowed to update service attributes: foo'