from providers.asr.buffered import BufferedASRService from providers.asr.dashscope import DashScopeRealtimeASRService from providers.asr.openai_compatible import OpenAICompatibleASRService from providers.factory.default import DefaultRealtimeServiceFactory from runtime.ports import ASRServiceSpec def test_create_asr_service_dashscope_returns_streaming_provider(): factory = DefaultRealtimeServiceFactory() service = factory.create_asr_service( ASRServiceSpec( provider="dashscope", mode="streaming", sample_rate=16000, api_key="test-key", model="qwen3-asr-flash-realtime", ) ) assert isinstance(service, DashScopeRealtimeASRService) assert service.mode == "streaming" def test_create_asr_service_openai_compatible_returns_offline_provider(): factory = DefaultRealtimeServiceFactory() service = factory.create_asr_service( ASRServiceSpec( provider="openai_compatible", sample_rate=16000, api_key="test-key", model="FunAudioLLM/SenseVoiceSmall", ) ) assert isinstance(service, OpenAICompatibleASRService) assert service.mode == "offline" def test_create_asr_service_fallback_buffered_for_unsupported_provider(): factory = DefaultRealtimeServiceFactory() service = factory.create_asr_service( ASRServiceSpec( provider="unknown_provider", sample_rate=16000, ) ) assert isinstance(service, BufferedASRService) assert service.mode == "offline"