017 fix returning all tariffs

This commit is contained in:
Раис Юсупалиев
2026-03-16 00:05:10 +03:00
parent 9b9cca0a7c
commit 54160a0e38
11 changed files with 188 additions and 81 deletions
+48 -20
View File
@@ -64,16 +64,26 @@ def test_post_delivery_price_uses_registered_provider_in_default_dependency(
def __init__(self) -> None:
self.calls: list[DeliveryRequest] = []
async def get_price(self, request: DeliveryRequest) -> DeliveryPrice:
async def get_prices(self, request: DeliveryRequest) -> list[DeliveryPrice]:
self.calls.append(request)
return DeliveryPrice(
provider=self.name,
service_name="stub-service",
price=Decimal("123.50"),
currency="RUB",
delivery_days_min=2,
delivery_days_max=3,
)
return [
DeliveryPrice(
provider=self.name,
service_name="slow",
price=Decimal("223.50"),
currency="RUB",
delivery_days_min=4,
delivery_days_max=5,
),
DeliveryPrice(
provider=self.name,
service_name="fast",
price=Decimal("123.50"),
currency="RUB",
delivery_days_min=2,
delivery_days_max=3,
),
]
class StubCDEKProvider:
@classmethod
@@ -135,11 +145,19 @@ def test_post_delivery_price_uses_registered_provider_in_default_dependency(
assert first_response.json() == [
{
"provider": "stub-provider",
"service_name": "stub-service",
"service_name": "fast",
"price": "124",
"currency": "RUB",
"delivery_days_min": 2,
"delivery_days_max": 3,
},
{
"provider": "stub-provider",
"service_name": "slow",
"price": "224",
"currency": "RUB",
"delivery_days_min": 4,
"delivery_days_max": 5,
}
]
assert second_response.json() == first_response.json()
@@ -148,15 +166,25 @@ def test_post_delivery_price_uses_registered_provider_in_default_dependency(
def test_post_delivery_price_returns_prices_and_delegates_to_service() -> None:
expected_price = DeliveryPrice(
provider="cdek",
service_name="express",
price=Decimal("100.50"),
currency="RUB",
delivery_days_min=1,
delivery_days_max=2,
)
service = StubAggregatorService(response=[expected_price])
expected_prices = [
DeliveryPrice(
provider="cdek",
service_name="economy",
price=Decimal("150.00"),
currency="RUB",
delivery_days_min=3,
delivery_days_max=5,
),
DeliveryPrice(
provider="cdek",
service_name="express",
price=Decimal("100.50"),
currency="RUB",
delivery_days_min=1,
delivery_days_max=2,
),
]
service = StubAggregatorService(response=expected_prices)
app = create_app()
_install_service_override(app, service)
@@ -171,7 +199,7 @@ def test_post_delivery_price_returns_prices_and_delegates_to_service() -> None:
response = asyncio.run(run_request())
assert response.status_code == 200
assert response.json() == [expected_price.model_dump(mode="json")]
assert response.json() == [price.model_dump(mode="json") for price in expected_prices]
assert len(service.calls) == 1
assert service.calls[0] == DeliveryRequest(
entity=DeliveryEntity.INDIVIDUAL,