mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-07 20:03:33 -05:00
118 lines
3.9 KiB
Python
118 lines
3.9 KiB
Python
import pytest
|
|
|
|
from app.models.organization import Organization
|
|
from app.models.service import Service
|
|
from tests import organization_json, service_json
|
|
from tests.conftest import ORGANISATION_ID, create_folder, create_template
|
|
|
|
|
|
def test_organization_type_when_services_organization_has_no_org_type(
|
|
mocker, service_one
|
|
):
|
|
service = Service(service_one)
|
|
service._dict["organization_id"] = ORGANISATION_ID
|
|
org = organization_json(organization_type=None)
|
|
mocker.patch("app.organizations_client.get_organization", return_value=org)
|
|
|
|
assert not org["organization_type"]
|
|
assert service.organization_type == "federal"
|
|
|
|
|
|
def test_organization_type_when_service_and_its_org_both_have_an_org_type(
|
|
mocker, service_one
|
|
):
|
|
# service_one has an organization_type of 'central'
|
|
service = Service(service_one)
|
|
service._dict["organization"] = ORGANISATION_ID
|
|
org = organization_json(organization_type="local")
|
|
mocker.patch("app.organizations_client.get_organization", return_value=org)
|
|
|
|
assert service.organization_type == "local"
|
|
|
|
|
|
def test_organization_name_comes_from_cache(mocker, service_one):
|
|
mock_redis_get = mocker.patch(
|
|
"app.extensions.RedisClient.get",
|
|
return_value=b'"Borchester Council"',
|
|
)
|
|
mock_get_organization = mocker.patch("app.organizations_client.get_organization")
|
|
service = Service(service_one)
|
|
service._dict["organization"] = ORGANISATION_ID
|
|
|
|
assert service.organization_name == "Borchester Council"
|
|
mock_redis_get.assert_called_once_with(f"organization-{ORGANISATION_ID}-name")
|
|
assert mock_get_organization.called is False
|
|
|
|
|
|
def test_organization_name_goes_into_cache(mocker, service_one):
|
|
mocker.patch(
|
|
"app.extensions.RedisClient.get",
|
|
return_value=None,
|
|
)
|
|
mock_redis_set = mocker.patch(
|
|
"app.extensions.RedisClient.set",
|
|
)
|
|
mocker.patch(
|
|
"app.organizations_client.get_organization",
|
|
return_value=organization_json(),
|
|
)
|
|
service = Service(service_one)
|
|
service._dict["organization"] = ORGANISATION_ID
|
|
|
|
assert service.organization_name == "Test Organization"
|
|
mock_redis_set.assert_called_once_with(
|
|
f"organization-{ORGANISATION_ID}-name",
|
|
'"Test Organization"',
|
|
ex=604800,
|
|
)
|
|
|
|
|
|
def test_service_without_organization_doesnt_need_org_api(mocker, service_one):
|
|
mock_redis_get = mocker.patch("app.extensions.RedisClient.get")
|
|
mock_get_organization = mocker.patch("app.organizations_client.get_organization")
|
|
service = Service(service_one)
|
|
service._dict["organization"] = None
|
|
|
|
assert service.organization_id is None
|
|
assert service.organization_name is None
|
|
assert isinstance(service.organization, Organization)
|
|
|
|
assert mock_redis_get.called is False
|
|
assert mock_get_organization.called is False
|
|
|
|
|
|
def test_bad_permission_raises(service_one):
|
|
with pytest.raises(KeyError) as e:
|
|
Service(service_one).has_permission("foo")
|
|
assert str(e.value) == "'foo is not a service permission'"
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("purchase_order_number", "expected_result"),
|
|
[(None, None), ("PO1234", [None, None, None, "PO1234"])],
|
|
)
|
|
def test_service_billing_details(purchase_order_number, expected_result):
|
|
service = Service(service_json(purchase_order_number=purchase_order_number))
|
|
service._dict["purchase_order_number"] = purchase_order_number
|
|
assert service.billing_details == expected_result
|
|
|
|
|
|
def test_has_templates_of_type_includes_folders(
|
|
mocker,
|
|
service_one,
|
|
mock_get_template_folders,
|
|
):
|
|
mocker.patch(
|
|
"app.service_api_client.get_service_templates",
|
|
return_value={
|
|
"data": [create_template(folder="something", template_type="sms")]
|
|
},
|
|
)
|
|
|
|
mocker.patch(
|
|
"app.template_folder_api_client.get_template_folders",
|
|
return_value=[create_folder(id="something")],
|
|
)
|
|
|
|
assert Service(service_one).has_templates_of_type("sms")
|