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