import tempfile
import os
from whisper_project.infra import marian_adapter

SRT_SAMPLE = """1
00:00:00,000 --> 00:00:01,000
Hello world

2
00:00:01,500 --> 00:00:02,500
Second line
"""


def test_translate_srt_with_fake_translator():
    # Crear archivos temporales
    td = tempfile.mkdtemp(prefix="test_marian_")
    in_path = os.path.join(td, "in.srt")
    out_path = os.path.join(td, "out.srt")

    with open(in_path, "w", encoding="utf-8") as f:
        f.write(SRT_SAMPLE)

    # Traductor simulado: upper-case para validar el pipeline sin dependencias
    def fake_translator(texts):
        return [t.upper() for t in texts]

    marian_adapter.translate_srt(in_path, out_path, translator=fake_translator)

    assert os.path.exists(out_path)
    with open(out_path, "r", encoding="utf-8") as f:
        data = f.read()

    assert "HELLO WORLD" in data
    assert "SECOND LINE" in data


def test_marian_translator_class_api():
    td = tempfile.mkdtemp(prefix="test_marian2_")
    in_path = os.path.join(td, "in2.srt")
    out_path = os.path.join(td, "out2.srt")
    with open(in_path, "w", encoding="utf-8") as f:
        f.write(SRT_SAMPLE)

    t = marian_adapter.MarianTranslator()
    t.translate_srt(in_path, out_path, translator=lambda texts: [s.replace("Hello", "Hola") for s in texts])

    with open(out_path, "r", encoding="utf-8") as f:
        data = f.read()

    assert "Hola world" in data or "Hola" in data
