From 98f7e610b444b6d4320e5ff11e02843d7a700a6c Mon Sep 17 00:00:00 2001 From: Dotty Dotter Date: Tue, 28 Apr 2026 11:04:31 +0200 Subject: [PATCH] =?UTF-8?q?test(#134):=20drucksache=5Ftypen=20Coverage=207?= =?UTF-8?q?2.5%=20=E2=86=92=20100%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- tests/test_drucksache_typen.py | 58 ++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) 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