Files
livekit--agents/tests/test_plugin_gradium_stt.py
2026-07-13 13:39:38 +08:00

89 lines
2.5 KiB
Python

"""Tests for Gradium STT plugin configuration and behavior."""
from __future__ import annotations
import json
from unittest.mock import MagicMock, patch
import pytest
pytestmark = pytest.mark.plugin("gradium")
def test_stt_default_language():
"""STT defaults to English."""
from livekit.plugins.gradium import STT
stt = STT(api_key="test-key")
assert stt._opts.language == "en"
def test_stt_custom_language():
"""STT accepts custom language."""
from livekit.plugins.gradium import STT
stt = STT(api_key="test-key", language="fr")
assert stt._opts.language == "fr"
def test_stream_language_overrides_stream_options():
"""stream language overrides the copied stream config."""
from livekit.plugins.gradium import STT
stt = STT(api_key="test-key", language="fr", http_session=MagicMock())
def _fake_create_task(coro, *args, **kwargs):
coro.close()
task = MagicMock()
return task
with patch("livekit.agents.stt.stt.asyncio.create_task", side_effect=_fake_create_task):
stream = stt.stream(language="de")
assert stream._opts.language == "de"
assert stt._opts.language == "fr"
@pytest.mark.asyncio
async def test_speech_stream_sends_language_in_json_config():
"""SpeechStream sends language in setup json_config."""
from livekit.agents import DEFAULT_API_CONNECT_OPTIONS, LanguageCode
from livekit.plugins.gradium import STT
from livekit.plugins.gradium.stt import SpeechStream, STTOptions
sent_messages: list[str] = []
class FakeWebSocket:
async def send_str(self, message: str) -> None:
sent_messages.append(message)
class FakeSession:
async def ws_connect(self, url, headers):
return FakeWebSocket()
stt = STT(api_key="test-key")
opts = STTOptions(language=LanguageCode("pt"), temperature=0.3)
def _fake_create_task(coro, *args, **kwargs):
coro.close()
task = MagicMock()
return task
with patch("livekit.agents.stt.stt.asyncio.create_task", side_effect=_fake_create_task):
stream = SpeechStream(
stt=stt,
opts=opts,
conn_options=DEFAULT_API_CONNECT_OPTIONS,
api_key="test-key",
model_endpoint="wss://api.gradium.ai/api/speech/asr",
model_name="default",
http_session=FakeSession(),
)
await stream._connect_ws()
setup_msg = json.loads(sent_messages[0])
assert setup_msg["json_config"] == {"language": "pt", "temp": 0.3}