test: 6 parallel agents — +40 test files across core, agent, translate, services, API routes, dataset_review. core 100%, agent 100%, services 100%, translate plugin mostly done. Pending: ~10 minor failures to fix

This commit is contained in:
2026-06-15 16:45:49 +03:00
parent a20879fa37
commit c8e44a1b86
53 changed files with 9047 additions and 13 deletions

View File

@@ -0,0 +1,75 @@
# #region Test.DictionaryValidation [C:2] [TYPE Module] [SEMANTICS test, translate, validation, bcp47]
# @BRIEF Tests for dictionary_validation.py — _validate_bcp47.
# @RELATION BINDS_TO -> [_validate_bcp47]
# @TEST_CONTRACT: _validate_bcp47 -> None | raises ValueError on invalid tag
# @TEST_EDGE: empty_tag -> ValueError
# @TEST_EDGE: invalid_format -> ValueError
# @TEST_EDGE: valid_format -> None
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:")
import pytest
from src.plugins.translate.dictionary_validation import _validate_bcp47
class TestValidateBcp47:
"""_validate_bcp47 — BCP-47 language tag validation."""
def test_valid_basic_tag(self):
"""Simple language code like 'en' passes."""
_validate_bcp47("en", "language") # no error
def test_valid_region_tag(self):
"""Tag with region like 'zh-CN' passes."""
_validate_bcp47("zh-CN", "language")
def test_valid_script_tag(self):
"""Tag with script like 'zh-Hans' passes."""
_validate_bcp47("zh-Hans", "language")
def test_valid_multi_subtag(self):
"""Complex tag like 'sr-Latn-RS' passes."""
_validate_bcp47("sr-Latn-RS", "language")
def test_empty_string_raises(self):
"""Empty tag raises ValueError."""
with pytest.raises(ValueError, match="must be a non-empty"):
_validate_bcp47("", "language")
def test_whitespace_only_raises(self):
"""Whitespace-only tag raises ValueError."""
with pytest.raises(ValueError, match="must be a non-empty"):
_validate_bcp47(" ", "language")
def test_none_raises(self):
"""None tag raises ValueError."""
with pytest.raises(ValueError, match="must be a non-empty"):
_validate_bcp47(None, "language") # type: ignore[arg-type]
def test_invalid_format_raises(self):
"""Tag with invalid characters raises ValueError."""
with pytest.raises(ValueError, match="not a valid BCP-47"):
_validate_bcp47("en@utf8", "language")
def test_invalid_numeric_start_raises(self):
"""Tag starting with a number raises ValueError."""
with pytest.raises(ValueError, match="not a valid BCP-47"):
_validate_bcp47("123", "language")
def test_error_message_includes_field_name(self):
"""Error message includes the field_name parameter."""
with pytest.raises(ValueError, match="source_language"):
_validate_bcp47("", "source_language")
def test_strips_whitespace(self):
"""Whitespace around tag is stripped."""
_validate_bcp47(" en ", "language") # no error after strip
# #endregion Test.DictionaryValidation