from pathlib import Path

from app.tts.base import SynthesisResult
from app.tts.cinema_pipeline import registry, run_dialogue_pipeline


class FakeTTS:
    code = "fake"

    def health(self):
        return {"code": "fake", "status": "READY"}

    def synthesize(self, request):
        return SynthesisResult(
            provider="Test",
            engine="fake",
            voice_id=request.voice_id,
            status="COMPLETED",
            audio_path=None,
            metadata={"text": request.text, "language": request.language},
        )


def test_cinema_pipeline_orchestrates_all_lines_without_gpu():
    registry.register(FakeTTS())
    result = run_dialogue_pipeline(
        script="Hero: என்னடி?\nWife: ஆமா.",
        speaker_map={
            "Hero": "CVOICE-TAM-M-AD-CHE-TEL-A50-001",
            "Wife": "CVOICE-TAM-F-AD-CHE-MLY-A50-001",
        },
        adapter_code="fake",
        model_code="command",
        output_dir="generated_audio/test-dialogue",
    )
    assert result["pipeline_version"] == "2N-1.0"
    assert result["line_count"] == 2
    assert result["take_count"] == 2
    assert result["status"] == "COMPLETED"
    assert result["takes"][0]["speaker"] == "Hero"
    assert result["takes"][0]["voice_id"].startswith("CVOICE-")
