backend/tests/test_cli_translate.py
Rama master · réplica de lectura del repositorio original.
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