"""Tests fuer src/source_meta.py - Single Source of Truth fuer Kategorien/Typen.""" from source_meta import ( SOURCE_CATEGORIES, SOURCE_TYPES, get_meta, category_label, type_label, ) def test_categories_have_unique_keys(): keys = [c["key"] for c in SOURCE_CATEGORIES] assert len(keys) == len(set(keys)) def test_types_have_unique_keys(): keys = [t["key"] for t in SOURCE_TYPES] assert len(keys) == len(set(keys)) def test_categories_and_types_have_label(): for c in SOURCE_CATEGORIES: assert "key" in c and "label" in c assert isinstance(c["label"], str) and c["label"] for t in SOURCE_TYPES: assert "key" in t and "label" in t def test_get_meta_shape(): meta = get_meta() assert set(meta.keys()) == {"categories", "types"} assert meta["categories"] == SOURCE_CATEGORIES assert meta["types"] == SOURCE_TYPES def test_category_label_lookup(): assert category_label("nachrichtenagentur") == "Nachrichtenagentur" assert category_label("oeffentlich-rechtlich") == "Öffentlich-Rechtlich" # Unbekannter key -> Fallback auf key selbst assert category_label("does-not-exist") == "does-not-exist" def test_type_label_lookup(): assert type_label("rss_feed") == "RSS-Feed" assert type_label("telegram_channel") == "Telegram-Kanal" assert type_label("x_account") == "X-Konto" assert type_label("pdf_document") == "PDF-Dokument" assert type_label("does-not-exist") == "does-not-exist" def test_category_covers_bestand(): """telegram und x muessen als Kategorien existieren (belegter Bestand), die nie belegten Lagen-Kategorien sind bewusst entfernt.""" keys = {c["key"] for c in SOURCE_CATEGORIES} assert "telegram" in keys assert "x" in keys assert "cybercrime" not in keys assert "ukraine-russland-krieg" not in keys assert "russische-staatspropaganda" not in keys