import asyncio

from app.core.warmup import warmup_local_models


def test_warmup_is_noop_for_cloud_defaults():
    # Mit den Test-Defaults (openrouter-Provider) lädt warmup nichts und wirft nicht.
    asyncio.run(warmup_local_models())


def test_warmup_loads_piper(monkeypatch):
    calls = {}

    class FakePiperTTSProvider:  # Name muss zur Typpruefung im warmup passen
        async def synthesize(self, text, voice=None, audio_format="pcm", language=None):
            calls["tts"] = text
            return b"AUDIO"

    import app.dependencies as deps
    monkeypatch.setattr(deps, "get_tts_provider", lambda *a, **k: FakePiperTTSProvider())
    # Klassennamen auf den vom warmup geprueften Namen setzen.
    FakePiperTTSProvider.__name__ = "PiperTTSProvider"

    asyncio.run(warmup_local_models())
    assert calls.get("tts")  # synthesize wurde aufgerufen
