fix cdek client
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
import asyncio
|
||||
from decimal import Decimal
|
||||
|
||||
import pytest
|
||||
|
||||
from app.adapters.delivery_providers.base import ProviderRequestError
|
||||
from app.schemas.request import DeliveryEntity, DeliveryRequest
|
||||
from app.schemas.response import DeliveryPrice
|
||||
from app.services.aggregator import AggregatorService
|
||||
from app.services.aggregator import AggregatorService, InvalidDeliveryRequestError
|
||||
|
||||
|
||||
_MISSING = object()
|
||||
@@ -117,6 +120,19 @@ def test_get_all_prices_all_failures_returns_empty_list() -> None:
|
||||
assert len(provider_b.calls) == 1
|
||||
|
||||
|
||||
def test_get_all_prices_raises_invalid_request_for_provider_request_errors() -> None:
|
||||
provider = StubProvider(
|
||||
name="cdek",
|
||||
error=ProviderRequestError("city not found"),
|
||||
)
|
||||
service = AggregatorService([provider], cache=StubCache())
|
||||
|
||||
with pytest.raises(InvalidDeliveryRequestError):
|
||||
asyncio.run(service.get_all_prices(_make_request()))
|
||||
|
||||
assert len(provider.calls) == 1
|
||||
|
||||
|
||||
def test_get_all_prices_cache_hit_skips_provider_call() -> None:
|
||||
cached_payload = _make_price("cdek", "99.00").model_dump(mode="json")
|
||||
cache = StubCache(forced_get_value=cached_payload)
|
||||
@@ -152,4 +168,3 @@ def test_get_all_prices_delegates_filtering_and_sorting_to_domain_logic() -> Non
|
||||
|
||||
assert [price.provider for price in delegated_inputs[0]] == ["a", "b"]
|
||||
assert [price.provider for price in result] == ["a"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user