import pytest from fastapi.testclient import TestClient from pytest_mock import MockerFixture from syrupy.assertion import SnapshotAssertion from delivery_metadata.clients.ows_territories import ( convert_territories, get_all_territories, ) from delivery_metadata.clients.ows_territories.territory import TerritoryResponse from delivery_metadata.constants import TerritoryStandard from delivery_metadata.models.schemas import TerritoryCodeA2 @pytest.mark.asyncio async def test_get_all_territories( mocker: MockerFixture, ows_territories_response_mock: TerritoryResponse, test_client: TestClient, snapshot: SnapshotAssertion, ) -> None: response_mock = mocker.Mock() response_mock.json = mocker.Mock( return_value=ows_territories_response_mock.model_dump() ) get_mock = mocker.patch.object( test_client.app.state.ows_connector, # type: ignore[attr-defined] "get", return_value=response_mock, autospec=True, ) result = await get_all_territories(TerritoryStandard.ISO_3166_2016) get_mock.assert_called_once_with( service_name="ows-territories", path="/territory/ISO_3166_1_2016" ) response_mock.raise_for_status.assert_called_once() assert result == snapshot @pytest.mark.asyncio async def test_convert_territories( mocker: MockerFixture, ows_territories_response_mock: TerritoryResponse, test_client: TestClient, snapshot: SnapshotAssertion, ) -> None: response_mock = mocker.Mock() response_mock.json = mocker.Mock( return_value=ows_territories_response_mock.model_dump() ) get_mock = mocker.patch.object( test_client.app.state.ows_connector, # type: ignore[attr-defined] "get", return_value=response_mock, autospec=True, ) result = await convert_territories( TerritoryStandard.ORCHARD_2016, TerritoryStandard.ISO_3166_2016, [TerritoryCodeA2(country_code="UK"), TerritoryCodeA2(country_code="US")], ) get_mock.assert_called_once_with( service_name="ows-territories", path="/conversion/Orch_1_2016/ISO_3166_1_2016", params={"territory_code_a2": "UK,US"}, ) response_mock.raise_for_status.assert_called_once() assert result == snapshot