diff --git a/tests/test_drucksache_typen.py b/tests/test_drucksache_typen.py index 3c35827..30e751f 100644 --- a/tests/test_drucksache_typen.py +++ b/tests/test_drucksache_typen.py @@ -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