mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-28 14:20:59 -05:00
Done using isort[1], with the following command:
```
isort -rc ./app ./tests
```
Adds linting to the `run_tests.sh` script to stop badly-sorted imports
getting re-introduced.
Chosen style is ‘Vertical Hanging Indent’ with trailing commas, because
I think it gives the cleanest diffs, eg:
```
from third_party import (
lib1,
lib2,
lib3,
lib4,
)
```
1. https://pypi.python.org/pypi/isort
136 lines
3.6 KiB
Python
136 lines
3.6 KiB
Python
import pytest
|
||
from tests.conftest import SERVICE_ONE_ID, fake_uuid
|
||
|
||
from app import service_api_client
|
||
from app.notify_client.service_api_client import ServiceAPIClient
|
||
|
||
|
||
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'
|
||
|
||
|
||
def test_client_creates_service_with_correct_data(
|
||
mocker,
|
||
active_user_with_permissions,
|
||
fake_uuid,
|
||
):
|
||
client = ServiceAPIClient()
|
||
mock_post = mocker.patch.object(client, 'post')
|
||
mocker.patch('app.notify_client.current_user', id='123')
|
||
|
||
client.create_service(
|
||
service_name='My first service',
|
||
organisation_type='central_government',
|
||
message_limit=1,
|
||
restricted=True,
|
||
user_id=fake_uuid,
|
||
email_from='test@example.com',
|
||
)
|
||
mock_post.assert_called_once_with(
|
||
'/service',
|
||
dict(
|
||
# Autogenerated arguments
|
||
created_by='123',
|
||
active=True,
|
||
# ‘service_name’ argument is coerced to ‘name’
|
||
name='My first service',
|
||
# The rest pass through with the same names
|
||
organisation_type='central_government',
|
||
message_limit=1,
|
||
restricted=True,
|
||
user_id=fake_uuid,
|
||
email_from='test@example.com',
|
||
),
|
||
)
|
||
|
||
|
||
@pytest.mark.parametrize('template_data, extra_args, expected_count', (
|
||
(
|
||
[],
|
||
{},
|
||
0,
|
||
),
|
||
(
|
||
[],
|
||
{'template_type': 'email'},
|
||
0,
|
||
),
|
||
(
|
||
[
|
||
{'template_type': 'email'},
|
||
{'template_type': 'sms'},
|
||
],
|
||
{},
|
||
2,
|
||
),
|
||
(
|
||
[
|
||
{'template_type': 'email'},
|
||
{'template_type': 'sms'},
|
||
],
|
||
{'template_type': 'email'},
|
||
1,
|
||
),
|
||
(
|
||
[
|
||
{'template_type': 'email'},
|
||
{'template_type': 'sms'},
|
||
],
|
||
{'template_type': 'letter'},
|
||
0,
|
||
),
|
||
))
|
||
def test_client_returns_count_of_service_templates(
|
||
app_,
|
||
mocker,
|
||
template_data,
|
||
extra_args,
|
||
expected_count,
|
||
):
|
||
|
||
mocker.patch(
|
||
'app.service_api_client.get_service_templates',
|
||
return_value={'data': template_data}
|
||
)
|
||
|
||
assert service_api_client.count_service_templates(
|
||
SERVICE_ONE_ID, **extra_args
|
||
) == expected_count
|