test(#134): drucksache_typen Coverage 72.5% → 100%

likely_kleine_anfrage_titel-Heuristik (#149-Folge):
- empty/None Titel false
- 'Welche', 'Warum', 'Was' und andere Frage-Praefixe true
- Frage am Ende mit '?' true
- Nummern-Praefix (NRW '1Welche...', '12. Wie viele...') wird weg-gestrippt
- pure Digits-only Titel: nach Strippen leer → false
- case-insensitive Praefix-Match
- normaler Antrag-Titel ohne Frage → false

Coverage 50.4% → 50.6%, 724 → 736 Tests.
This commit is contained in:
Dotty Dotter 2026-04-28 11:04:31 +02:00
parent 581d1591b8
commit 98f7e610b4

View File

@ -202,3 +202,61 @@ class TestIstAbstimmbarOriginal:
def test_gesetzentwurf_string_abstimmbar(self):
assert ist_abstimmbar_original("Gesetzentwurf der Fraktionen") is True
# ─── likely_kleine_anfrage_titel — Heuristik (#149 Folge, #134 Backfill) ─────
class TestLikelyKleineAnfrageTitel:
def test_empty_title_is_false(self):
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel("") is False
def test_none_title_is_false(self):
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel(None) is False
def test_welche_praefix_detected(self):
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel("Welche Schulen werden saniert") is True
def test_warum_praefix_detected(self):
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel("Warum dauert das Verfahren so lang") is True
def test_question_mark_at_end_detected(self):
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel("Stand der Dinge zur Mobilitaet?") is True
def test_numeric_prefix_stripped(self):
"""NRW liefert manchmal '1Welche...' ohne Trennzeichen — Praefix wird
weg-gestrippt bevor die Heuristik greift."""
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel("1Welche Strafen sind vorgesehen") is True
def test_dotted_numeric_prefix_stripped(self):
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel("12. Wie viele Stellen") is True
def test_normal_antrag_title_is_false(self):
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel(
"Klimaschutzgesetz fortschreiben und ausweiten"
) is False
def test_pure_digits_only_is_false(self):
"""Nach dem Strippen bleibt leerer Titel — kein Match."""
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel("123 . - ") is False
def test_was_praefix_detected(self):
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel("Was sagt die Landesregierung") is True
def test_case_insensitive_praefix(self):
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel("WIE VIEL kostet das") is True
def test_no_match_no_question_mark(self):
from app.drucksache_typen import likely_kleine_anfrage_titel
assert likely_kleine_anfrage_titel("Bericht zur Energiewende vorlegen") is False