backend/tests/test_glossary_metadata.py
Rama master · réplica de lectura del repositorio original.
"""Tests for the new term_type, confidence, approved columns on glossary_entries."""
import pytest
from db.translation import add_glossary_entry, get_glossary_entry, update_glossary_entry
def test_add_glossary_entry_with_metadata(app_ctx):
"""add_glossary_entry stores explicit term_type, confidence, and approved values."""
entry_id = add_glossary_entry(
series_id=1,
source_term="Naruto",
target_term="Naruto",
notes="main character",
term_type="character",
confidence=0.95,
approved=0,
)
assert isinstance(entry_id, int)
entry = get_glossary_entry(entry_id)
assert entry is not None
assert entry["source_term"] == "Naruto"
assert entry["target_term"] == "Naruto"
assert entry["term_type"] == "character"
assert pytest.approx(entry["confidence"], abs=1e-6) == 0.95
assert entry["approved"] == 0
def test_add_glossary_entry_defaults(app_ctx):
"""add_glossary_entry uses correct defaults: term_type='other', confidence=None, approved=1."""
entry_id = add_glossary_entry(
series_id=None,
source_term="Konoha",
target_term="Konoha",
)
assert isinstance(entry_id, int)
entry = get_glossary_entry(entry_id)
assert entry is not None
assert entry["term_type"] == "other"
assert entry["confidence"] is None
assert entry["approved"] == 1
def test_update_glossary_entry_metadata(app_ctx):
"""update_glossary_entry can update term_type, confidence, and approved independently."""
entry_id = add_glossary_entry(
series_id=2,
source_term="Hokage",
target_term="Hokage",
term_type="other",
confidence=None,
approved=1,
)
# Update term_type and approved only — confidence should remain None
result = update_glossary_entry(entry_id, term_type="place", approved=0)
assert result is True
entry = get_glossary_entry(entry_id)
assert entry["term_type"] == "place"
assert entry["approved"] == 0
assert entry["confidence"] is None # unchanged
# Now set confidence explicitly
result = update_glossary_entry(entry_id, confidence=0.7)
assert result is True
entry = get_glossary_entry(entry_id)
assert pytest.approx(entry["confidence"], abs=1e-6) == 0.7
# Clear confidence back to None via explicit None
result = update_glossary_entry(entry_id, confidence=None)
assert result is True
entry = get_glossary_entry(entry_id)
assert entry["confidence"] is None
def test_update_glossary_entry_no_fields(app_ctx):
"""update_glossary_entry returns False when no fields are provided."""
entry_id = add_glossary_entry(
series_id=3,
source_term="Sensei",
target_term="Lehrer",
term_type="other",
)
result = update_glossary_entry(entry_id)
assert result is False
def test_add_glossary_entry_place_type(app_ctx):
"""add_glossary_entry stores 'place' as term_type correctly."""
entry_id = add_glossary_entry(
series_id=4,
source_term="Hidden Leaf Village",
target_term="Verborgenes Blatt-Dorf",
term_type="place",
confidence=0.88,
approved=1,
)
entry = get_glossary_entry(entry_id)
assert entry["term_type"] == "place"
assert pytest.approx(entry["confidence"], abs=1e-6) == 0.88
assert entry["approved"] == 1