feat(controls): atom-grain liefert source_article + Registry-Tests im CI-Pfad
CI / detect-changes (push) Successful in 17s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / secret-scan (push) Has been skipped
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / build-sha-integrity (push) Successful in 9s
CI / validate-canonical-controls (push) Successful in 8s
CI / loc-budget (push) Successful in 21s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 3m6s
CI / test-go (push) Has been skipped
CI / iace-gt-coverage (push) Has been skipped
CI / test-python-backend (push) Successful in 30s
CI / test-python-document-crawler (push) Has been skipped
CI / test-python-dsms-gateway (push) Has been skipped

- _ATOM_LIST_SQL via LATERAL: zusaetzlich cpl.source_article (Gesetzes-Artikel)
  im atom-grain Response. Spalte control_parent_links.source_article verifiziert
  (macmini + prod).
- Registry-Mapper-Test (neue Domaenen) nach compliance/tests/ verschoben — CI
  faehrt compliance/tests/, nicht tests/; schliesst die CI-Luecke der
  6-neue-Use-Cases-Erweiterung.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-06-15 00:20:40 +02:00
parent 828230746e
commit 6a6c2dbcaa
2 changed files with 48 additions and 22 deletions
@@ -0,0 +1,48 @@
"""CI-Pfad-Tests fuer die Registry-Erweiterung 2026-06-14:
5 neue Use Cases + Mapper-Regeln fuer zuvor ungemappte Quell-Gesetze.
Liegt in compliance/tests/ (im Gegensatz zu tests/), damit die CI sie faehrt."""
from __future__ import annotations
from compliance.data import use_case_registry as reg
def test_new_use_cases_registered():
for key in ("arbeitsrecht", "gesellschaftsrecht", "insolvenzrecht",
"csrd", "bafin_it"):
assert reg.is_valid_use_case(key), key
def test_regulation_mapper_new_domains():
cases = {
"Arbeitsverfassungsgesetz (ArbVG)": "arbeitsrecht",
"Arbeitszeitgesetz (AZG)": "arbeitsrecht",
"Mutterschutzgesetz (MuSchG)": "arbeitsrecht",
"Mindestlohngesetz (MiLoG)": "arbeitsrecht",
"Arbeitsgesetz (ArG)": "arbeitsrecht",
"Aktiengesetz (AktG)": "gesellschaftsrecht",
"GmbH-Gesetz (GmbHG)": "gesellschaftsrecht",
"Obligationenrecht (OR)": "gesellschaftsrecht",
"Insolvenzordnung (InsO)": "insolvenzrecht",
"Corporate Sustainability Reporting Directive (CSRD)": "csrd",
"VAIT (BaFin 2022)": "bafin_it",
"BAIT (BaFin 2024)": "bafin_it",
"EU Machinery Guide 2006/42": "maschinen",
"GoBD (BMF-Schreiben 2025)": "steuerrecht",
}
for reg_str, expected in cases.items():
assert reg.use_case_for_regulation(reg_str) == expected, reg_str
def test_existing_mappings_unchanged():
# Regression: die neuen Regeln duerfen bestehende Mappings nicht kapern.
assert reg.use_case_for_regulation("TMG") == "impressum"
assert reg.use_case_for_regulation("AT ABGB") == "handelsrecht"
assert reg.use_case_for_regulation("OWASP Top 10 (2021)") == "code_security"
assert reg.use_case_for_regulation("DSGVO (EU) 2016/679") == "dse"
assert reg.use_case_for_regulation("Maschinenverordnung (EU) 2023/1230") == "maschinen"
def test_all_rules_point_to_valid_use_cases():
for _needle, uc in reg._REGULATION_RULES:
assert uc in reg.REGISTRY and reg.REGISTRY[uc].enabled, uc