test: 8 parallel agents — fix 150+ failures, add 30+ test files. schemas/models 99-100%, core/client_registry ~98%, maintenance 95-98%, git edges 97%, translate 98-100%, dashboard routes 95-96%, dataset_review 100%
This commit is contained in:
@@ -211,4 +211,16 @@ class TestTranslationExecutionEngine:
|
||||
|
||||
assert len(result) == 1
|
||||
assert "en" in result
|
||||
|
||||
def test_init_language_stats_string_language_not_list(self):
|
||||
"""String target_languages (not a list) is wrapped in [str()] (line 108)."""
|
||||
engine, db, config, event_log = self._make_engine()
|
||||
run = self._make_run()
|
||||
# target_languages as a plain string (not a list) — line 107 isinstance check fails -> line 108
|
||||
job = self._make_job(target_languages="ru")
|
||||
|
||||
result = engine._init_language_stats(run, job)
|
||||
|
||||
assert len(result) == 1
|
||||
assert "ru" in result
|
||||
# #endregion Test.OrchestratorExec
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
# #region Test.PreviewSessionSerializer [C:2] [TYPE Module] [SEMANTICS test, translate, preview, serialize]
|
||||
# @BRIEF Tests for preview_session_serializer.py — serialize_preview_record.
|
||||
# @RELATION BINDS_TO -> [preview_session_serializer]
|
||||
# @TEST_CONTRACT: serialize_preview_record -> dict | serializes TranslationPreviewRecord
|
||||
# @TEST_EDGE: empty_languages
|
||||
# @TEST_EDGE: no_source_language_detected
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent / "src"))
|
||||
|
||||
import os
|
||||
os.environ.setdefault("SECRET_KEY", "test-secret-key-for-testing")
|
||||
os.environ.setdefault("DATABASE_URL", "sqlite:///:memory:")
|
||||
os.environ.setdefault("AUTH_DATABASE_URL", "sqlite:///:memory:")
|
||||
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from src.plugins.translate.preview_session_serializer import serialize_preview_record
|
||||
|
||||
|
||||
def _make_language(language_code="ru", **kwargs):
|
||||
lang = MagicMock()
|
||||
lang.language_code = language_code
|
||||
lang.source_language_detected = kwargs.get("source_language_detected", "en")
|
||||
lang.translated_value = kwargs.get("translated_value", "привет")
|
||||
lang.final_value = kwargs.get("final_value", "привет")
|
||||
lang.user_edit = kwargs.get("user_edit", None)
|
||||
lang.status = kwargs.get("status", "translated")
|
||||
lang.needs_review = kwargs.get("needs_review", False)
|
||||
return lang
|
||||
|
||||
|
||||
def _make_record(**kwargs):
|
||||
r = MagicMock(spec=object)
|
||||
r.id = kwargs.get("id", "rec-1")
|
||||
r.source_sql = kwargs.get("source_sql", "SELECT * FROM t")
|
||||
r.target_sql = kwargs.get("target_sql", "SELECT * FROM t_translated")
|
||||
r.source_object_type = kwargs.get("source_object_type", "table")
|
||||
r.source_object_id = kwargs.get("source_object_id", "obj-1")
|
||||
r.source_object_name = kwargs.get("source_object_name", "my_table")
|
||||
r.status = kwargs.get("status", "done")
|
||||
r.feedback = kwargs.get("feedback", None)
|
||||
r.languages = kwargs.get("languages", [])
|
||||
return r
|
||||
|
||||
|
||||
class TestSerializePreviewRecord:
|
||||
"""serialize_preview_record — serialize TranslationPreviewRecord."""
|
||||
|
||||
def test_basic_serialization(self):
|
||||
"""Full record with languages returns all fields."""
|
||||
lang_ru = _make_language(language_code="ru", final_value="привет")
|
||||
lang_de = _make_language(language_code="de", final_value="hallo")
|
||||
record = _make_record(languages=[lang_ru, lang_de])
|
||||
|
||||
result = serialize_preview_record(record)
|
||||
|
||||
assert result["id"] == "rec-1"
|
||||
assert result["source_sql"] == "SELECT * FROM t"
|
||||
assert result["target_sql"] == "SELECT * FROM t_translated"
|
||||
assert result["source_object_type"] == "table"
|
||||
assert result["source_object_id"] == "obj-1"
|
||||
assert result["source_object_name"] == "my_table"
|
||||
assert result["status"] == "done"
|
||||
assert result["feedback"] is None
|
||||
assert result["needs_review"] is False
|
||||
assert len(result["languages"]) == 2
|
||||
assert result["languages"][0]["language_code"] == "ru"
|
||||
assert result["languages"][0]["final_value"] == "привет"
|
||||
assert result["languages"][1]["language_code"] == "de"
|
||||
|
||||
def test_empty_languages(self):
|
||||
"""Record with no languages returns empty languages list."""
|
||||
record = _make_record(languages=[])
|
||||
|
||||
result = serialize_preview_record(record)
|
||||
|
||||
assert result["languages"] == []
|
||||
assert result["source_language_detected"] is None
|
||||
assert result["needs_review"] is False
|
||||
|
||||
def test_languages_is_none(self):
|
||||
"""Record with None languages returns empty list."""
|
||||
record = _make_record(languages=None)
|
||||
|
||||
result = serialize_preview_record(record)
|
||||
|
||||
assert result["languages"] == []
|
||||
|
||||
def test_no_source_language_detected(self):
|
||||
"""Language without source_language_detected returns None."""
|
||||
lang = _make_language(source_language_detected=None)
|
||||
record = _make_record(languages=[lang])
|
||||
|
||||
result = serialize_preview_record(record)
|
||||
|
||||
assert result["source_language_detected"] is None
|
||||
|
||||
def test_source_language_detected_present(self):
|
||||
"""Language with source_language_detected returns it."""
|
||||
lang = _make_language(source_language_detected="fr")
|
||||
record = _make_record(languages=[lang])
|
||||
|
||||
result = serialize_preview_record(record)
|
||||
|
||||
assert result["source_language_detected"] == "fr"
|
||||
|
||||
def test_needs_review_from_language(self):
|
||||
"""needs_review comes from first language entry."""
|
||||
lang = _make_language(needs_review=True)
|
||||
record = _make_record(languages=[lang])
|
||||
|
||||
result = serialize_preview_record(record)
|
||||
|
||||
assert result["needs_review"] is True
|
||||
|
||||
def test_user_edit_present(self):
|
||||
"""user_edit field is included when present."""
|
||||
lang = _make_language(user_edit="пользовательский перевод")
|
||||
record = _make_record(languages=[lang])
|
||||
|
||||
result = serialize_preview_record(record)
|
||||
|
||||
assert result["languages"][0]["user_edit"] == "пользовательский перевод"
|
||||
# #endregion Test.PreviewSessionSerializer
|
||||
Reference in New Issue
Block a user