51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
import asyncio
|
|
|
|
import httpx
|
|
|
|
from app.adapters.delivery_providers.registry import (
|
|
build_delivery_provider_registry,
|
|
resolve_delivery_provider_timeout_seconds,
|
|
)
|
|
from app.config import (
|
|
CDEKDeliveryProviderConfig,
|
|
CSEDeliveryProviderConfig,
|
|
DeliveryProvidersConfig,
|
|
)
|
|
|
|
|
|
def test_registry_builds_enabled_provider_capability_maps() -> None:
|
|
config = DeliveryProvidersConfig(
|
|
cdek=CDEKDeliveryProviderConfig(
|
|
base_url="https://cdek.test/v2",
|
|
client_id="id",
|
|
client_secret="secret",
|
|
cache_ttl_seconds=111,
|
|
),
|
|
cse=CSEDeliveryProviderConfig(
|
|
enabled=False,
|
|
),
|
|
)
|
|
|
|
http_client = httpx.AsyncClient()
|
|
try:
|
|
registry = build_delivery_provider_registry(
|
|
http_client=http_client,
|
|
config=config,
|
|
)
|
|
finally:
|
|
asyncio.run(http_client.aclose())
|
|
|
|
assert [provider.name for provider in registry.providers] == ["cdek"]
|
|
assert sorted(registry.payment_price_validation_adapters) == ["cdek"]
|
|
assert sorted(registry.order_registration_adapters) == ["cdek"]
|
|
assert registry.providers[0].cache_ttl_seconds == 111
|
|
|
|
|
|
def test_resolve_delivery_provider_timeout_uses_max_enabled_timeout() -> None:
|
|
config = DeliveryProvidersConfig(
|
|
cdek=CDEKDeliveryProviderConfig(timeout_seconds=3.0),
|
|
cse=CSEDeliveryProviderConfig(timeout_seconds=7.5),
|
|
)
|
|
|
|
assert resolve_delivery_provider_timeout_seconds(config) == 7.5
|