You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
motief/tests/test_config.py

50 lines
1.8 KiB

"""Tests for analysis/config.py SVD_THEMES structure."""
import pytest
def test_svd_themes_has_required_fields():
"""Each SVD_THEMES entry must have label, explanation, positive_pole, negative_pole, flip."""
from analysis.config import SVD_THEMES
required_fields = {"label", "explanation", "positive_pole", "negative_pole", "flip"}
for comp_id, theme in SVD_THEMES.items():
missing = required_fields - set(theme.keys())
assert not missing, f"Component {comp_id} missing fields: {missing}"
def test_svd_themes_no_left_right_pole():
"""SVD_THEMES should NOT have left_pole or right_pole (derived at runtime)."""
from analysis.config import SVD_THEMES
for comp_id, theme in SVD_THEMES.items():
assert "left_pole" not in theme, f"Component {comp_id} has deprecated left_pole"
assert "right_pole" not in theme, (
f"Component {comp_id} has deprecated right_pole"
)
def test_svd_themes_flip_is_boolean():
"""Each SVD_THEMES flip field must be a boolean."""
from analysis.config import SVD_THEMES
for comp_id, theme in SVD_THEMES.items():
assert isinstance(theme.get("flip"), bool), (
f"Component {comp_id} flip is not boolean"
)
def test_svd_themes_poles_are_strings():
"""Each SVD_THEMES pole field must be a non-empty string."""
from analysis.config import SVD_THEMES
for comp_id, theme in SVD_THEMES.items():
pos = theme.get("positive_pole", "")
neg = theme.get("negative_pole", "")
assert isinstance(pos, str) and len(pos) > 0, (
f"Component {comp_id} has invalid positive_pole"
)
assert isinstance(neg, str) and len(neg) > 0, (
f"Component {comp_id} has invalid negative_pole"
)