Добавлен tomtom

This commit is contained in:
Раис Юсупалиев
2026-04-03 04:19:55 +03:00
parent 44893e01ae
commit db1c74f1ce
16 changed files with 741 additions and 30 deletions
@@ -99,6 +99,18 @@ def test_post_address_suggest_uses_registered_provider_in_default_dependency(
_ = config
return stub_yandex_provider
class StubTomTomAddressSuggestionProvider:
@classmethod
def from_config(
cls,
*,
http_client,
config,
) -> StubAddressProvider:
assert http_client is stub_http_client
_ = config
return stub_tomtom_provider
class StubCache:
async def get(self, key: str) -> object | None:
_ = key
@@ -138,6 +150,17 @@ def test_post_address_suggest_uses_registered_provider_in_default_dependency(
)
],
)
stub_tomtom_provider = StubAddressProvider(
"tomtom",
[
AddressSuggestion(
address="Alexanderplatz 1, 10178 Berlin",
street="Alexanderplatz",
house="1",
postal_code="10178",
)
],
)
http_client_timeouts: list[float] = []
def fake_build_controller_http_client(timeout_seconds: float) -> StubHttpClient:
@@ -160,13 +183,18 @@ def test_post_address_suggest_uses_registered_provider_in_default_dependency(
"YandexGeosuggestAddressSuggestionProvider",
StubYandexGeosuggestAddressSuggestionProvider,
)
monkeypatch.setattr(
delivery_controller,
"TomTomAddressSuggestionProvider",
StubTomTomAddressSuggestionProvider,
)
monkeypatch.setattr(delivery_controller, "PriceCache", StubPriceCache)
app = create_app()
request_payload = _valid_payload(
country_code="AM",
city="Yerevan",
query="Tumanyan 12",
country_code="DE",
city="Berlin",
query="Alexanderplatz 1",
)
async def run_request() -> httpx.Response:
@@ -185,16 +213,17 @@ def test_post_address_suggest_uses_registered_provider_in_default_dependency(
assert response.status_code == 200
assert response.json() == [
{
"address": "Tumanyan Street, 12, Yerevan",
"street": "Tumanyan Street",
"house": "12",
"address": "Alexanderplatz 1, 10178 Berlin",
"street": "Alexanderplatz",
"house": "1",
"flat": None,
"postal_code": None,
"postal_code": "10178",
}
]
assert http_client_timeouts == [10.0]
assert stub_dadata_provider.calls == []
assert stub_yandex_provider.calls == [AddressSuggestRequest(**request_payload)]
assert stub_yandex_provider.calls == []
assert stub_tomtom_provider.calls == [AddressSuggestRequest(**request_payload)]
def test_post_address_suggest_returns_response_and_delegates_to_service() -> None: