diff --git a/backend-compliance/compliance/tests/test_use_case_registry_domains.py b/backend-compliance/compliance/tests/test_use_case_registry_domains.py new file mode 100644 index 00000000..59598f51 --- /dev/null +++ b/backend-compliance/compliance/tests/test_use_case_registry_domains.py @@ -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 diff --git a/backend-compliance/tests/test_use_case_registry.py b/backend-compliance/tests/test_use_case_registry.py index 1b0cb1a2..6d4f5e7c 100644 --- a/backend-compliance/tests/test_use_case_registry.py +++ b/backend-compliance/tests/test_use_case_registry.py @@ -132,28 +132,6 @@ def test_regulation_mapper_known(): assert reg.use_case_for_regulation(reg_str) == expected, reg_str -def test_regulation_mapper_new_domains(): - # 2026-06-14: zuvor ungemappte Quell-Gesetze -> neue Use Cases + Fixes. - 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_regulation_mapper_impressum_misroutes_fixed(): # Phase A: Telekom-/Datenschutz-/Gewerbe-Gesetze duerfen NICHT mehr als # Impressum durchgehen (Korpus enthaelt kein echtes Impressumsrecht ausser