Перевел /suggest-address на id города и убрал country_code
Deploy / deploy (push) Successful in 59s

This commit is contained in:
Раис Юсупалиев
2026-05-29 04:01:09 +03:00
parent 6caea9e111
commit 6a2bf05ba5
5 changed files with 128 additions and 52 deletions
@@ -6,7 +6,7 @@ import pytest
from app.controllers.v1 import delivery as delivery_controller
from app.controllers.v1.delivery import get_aggregator_service
from app.main import create_app
from app.schemas.request import AddressSuggestRequest
from app.schemas.request import AddressSuggestRequest, SuggestAddressRequest
from app.schemas.response import AddressSuggestion
from app.services.aggregator import (
AddressSuggestionsUnavailableError,
@@ -19,9 +19,9 @@ class StubAggregatorService:
def __init__(self, *, response: object, error: Exception | None = None) -> None:
self._response = response
self._error = error
self.calls: list[AddressSuggestRequest] = []
self.calls: list[SuggestAddressRequest] = []
async def suggest_addresses(self, request: AddressSuggestRequest) -> object:
async def suggest_addresses(self, request: SuggestAddressRequest) -> object:
self.calls.append(request)
if self._error is not None:
raise self._error
@@ -37,8 +37,7 @@ def _install_service_override(app, service: StubAggregatorService) -> None:
def _valid_payload(**overrides: object) -> dict[str, object]:
payload = {
"country_code": "RU",
"city": "Moscow",
"city": "4097",
"query": "Lenina",
"limit": 5,
}
@@ -192,8 +191,7 @@ def test_post_address_suggest_uses_registered_provider_in_default_dependency(
app = create_app()
request_payload = _valid_payload(
country_code="DE",
city="Berlin",
city="1124",
query="Alexanderplatz 1",
)
@@ -223,7 +221,14 @@ def test_post_address_suggest_uses_registered_provider_in_default_dependency(
assert http_client_timeouts == [10.0]
assert stub_dadata_provider.calls == []
assert stub_yandex_provider.calls == []
assert stub_tomtom_provider.calls == [AddressSuggestRequest(**request_payload)]
assert stub_tomtom_provider.calls == [
AddressSuggestRequest(
country_code="DE",
city="Берлин",
query="Alexanderplatz 1",
limit=5,
)
]
def test_post_address_suggest_returns_response_and_delegates_to_service() -> None:
@@ -255,12 +260,12 @@ def test_post_address_suggest_returns_response_and_delegates_to_service() -> Non
assert response.status_code == 200
assert response.json() == [item.model_dump(mode="json") for item in expected_response]
assert service.calls == [AddressSuggestRequest(**_valid_payload())]
assert service.calls == [SuggestAddressRequest(**_valid_payload())]
@pytest.mark.parametrize(
("field_name", "field_value"),
[("country_code", "RUS"), ("limit", 0), ("query", "")],
[("city", ""), ("limit", 0), ("query", "")],
)
def test_post_address_suggest_rejects_invalid_payload(
field_name: str,