Ctrl K
ComunidadGuías…

backend/tests/test_cli_translate.py

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
from unittest.mock import MagicMock

from click.testing import CliRunner

from cli.commands.translate import translate


class TestTranslateCommand:
    def test_sync_response(self, tmp_path):
        sub = tmp_path / "ep.ass"
        sub.write_text("[Script Info]\n")
        client = MagicMock()
        client.post.return_value = {"success": True, "output_path": str(tmp_path / "ep.de.ass")}
        result = CliRunner().invoke(translate, [str(sub)], obj={"client": client})
        assert result.exit_code == 0
        client.post.assert_called_once_with(
            "/translate/sync", json={"file_path": str(sub), "force": False}
        )
        assert "ep.de.ass" in result.output

    def test_queued_response(self, tmp_path):
        sub = tmp_path / "ep.ass"
        sub.write_text("[Script Info]\n")
        client = MagicMock()
        client.post.return_value = {"job_id": "abc123", "status": "queued"}
        result = CliRunner().invoke(translate, [str(sub)], obj={"client": client})
        assert result.exit_code == 0
        assert "abc123" in result.output

    def test_force_flag(self, tmp_path):
        sub = tmp_path / "ep.ass"
        sub.write_text("[Script Info]\n")
        client = MagicMock()
        client.post.return_value = {"success": True, "output_path": "/out.ass"}
        CliRunner().invoke(translate, [str(sub), "--force"], obj={"client": client})
        assert client.post.call_args.kwargs["json"]["force"] is True

    def test_file_not_found(self):
        result = CliRunner().invoke(translate, ["/nope.ass"], obj={"client": MagicMock()})
        assert result.exit_code != 0

    def test_api_error(self, tmp_path):
        from cli.client import SublarrAPIError

        sub = tmp_path / "ep.ass"
        sub.write_text("[Script Info]\n")
        client = MagicMock()
        client.post.side_effect = SublarrAPIError("Not under media_path")
        result = CliRunner().invoke(translate, [str(sub)], obj={"client": client})
        assert result.exit_code == 1
        assert "Error" in result.output