- **prüft** – erste Zeile des Docstrings des Testfalls. Fehlt sie, steht dort `— (Docstring fehlt)`.
- **grün** – der Testfall lief im Baseline-Lauf durch.
- **rot (Baseline)** – der Testfall schlägt bereits fehl und ist in `docs/status/testbaseline.json` vermerkt; er darf nicht ignoriert, aber auch nicht als neuer Fehler gewertet werden.
- **übersprungen** – per `@unittest.skip`/`skipIf`/`skipUnless` abgeschaltet; der Grund steht dabei.
- Ein Testfall heißt `Testgruppe.test_name`; die Testgruppe fasst zusammengehörige Testfälle einer Datei zusammen.
- **geprüft** – Prüf-Audit (`scripts/test_audit.py`): **nie geprüft** kein Eintrag in `docs/status/testpruefungen.json`; **geprüft am …** ein Mensch hat den Testfall bestätigt und der Testcode hat sich seither nicht geändert; **veraltet seit Änderung …** der Testcode wurde nach der letzten Prüfung geändert.
| `TestDataGrabber.test_analyze_source_type_detects_excel` | Prüft, dass eine erreichbare .xlsx-Datei als Quelltyp 'excel' erkannt wird. | grün | geprüft am 2026-09-16 |
| `TestDataGrabber.test_analyze_source_type_returns_unknown_filetype` | Prüft, dass eine erreichbare Datei mit unbekannter Endung als 'unbekannter_dateityp' eingestuft wird. | grün | geprüft am 2026-09-16 |
| `TestDataGrabber.test_analyze_source_type_detects_service_when_file_check_fails` | Prüft, dass eine Quelle als 'dienst' erkannt wird, wenn die Dateiprüfung fehlschlägt, die URL aber erreichbar ist. | grün | geprüft am 2026-09-16 |
| `TestDataGrabber.test_analyze_source_type_returns_unbekannte_quelle_on_full_failure` | Prüft, dass eine Quelle als 'unbekannte_quelle' eingestuft wird, wenn weder Datei- noch Linkprüfung erfolgreich sind. | grün | geprüft am 2026-09-16 |
| `TestDataGrabber.test_run_returns_success_summary_with_valid_rows` | Prüft, dass run() bei erfolgreichem Excel-Import eine Erfolgsmeldung mit den geladenen Zeilen liefert. | grün | geprüft am 2026-09-16 |
| `TestDataGrabber.test_run_returns_failure_summary_without_rows` | Prüft, dass run() bei nicht erkennbarer Quelle eine Fehlermeldung ohne Zeilen liefert. | grün | geprüft am 2026-09-16 |
| `TestDateipruefer.test_leereingabe_erlaubt` | Prüft, dass eine leere Pfadangabe bei leereingabe_erlaubt=True als 'leereingabe_erlaubt' ohne Kontext gemeldet wird. | grün | nie geprüft |
| `TestDateipruefer.test_leereingabe_nicht_erlaubt` | Prüft, dass eine leere Pfadangabe ohne leereingabe_erlaubt als 'leereingabe_nicht_erlaubt' abgelehnt wird. | grün | nie geprüft |
| `TestDateipruefer.test_standarddatei_vorschlagen` | Prüft, dass bei leerer Pfadangabe mit gesetzter Standarddatei 'standarddatei_vorschlagen' mit dem Standardpfad als Kontext geliefert wird. | grün | nie geprüft |
| `TestDateipruefer.test_temporaer_erlaubt` | Prüft, dass eine leere Pfadangabe bei temporaer_erlaubt=True als 'temporaer_erlaubt' ohne Kontext gemeldet wird. | grün | nie geprüft |
| `TestDateipruefer.test_datei_nicht_gefunden` | Prüft, dass ein nicht existierender Dateipfad als 'datei_nicht_gefunden' mit dem Pfad als Kontext abgelehnt wird. | grün | nie geprüft |
| `TestDateipruefer.test_datei_ok` | Prüft, dass ein existierender Dateipfad als 'ok' mit dem Pfad als Kontext bestätigt wird. | grün | nie geprüft |
| `TestGetLaenderkennung.test_bekannter_praefix_gibt_kennung_zurueck` | Prüft, dass der Präfix 'sn' die ALKIS-Länderkennung '14' für Sachsen liefert. | grün | nie geprüft |
| `TestGetLaenderkennung.test_praefix_gross_klein_unabhaengig` | Prüft, dass die Präfixsuche groß-/kleinschreibungsunabhängig ist. | grün | nie geprüft |
| `TestGetLaenderkennung.test_unbekannter_praefix_wirft_keyerror` | Prüft, dass ein unbekannter Präfix einen KeyError auslöst. | grün | nie geprüft |
| `TestGetLaenderkennung.test_ohne_argument_wird_aus_aufrufendem_modul_abgeleitet` | Prüft, dass ohne Argument der Präfix aus dem Modulnamen des Aufrufers abgeleitet wird. | grün | nie geprüft |
| `TestGetLaenderkennung.test_mapping_enthaelt_sachsen` | Prüft, dass die Mapping-Tabelle LAENDERKENNUNGEN einen Eintrag für Sachsen ('sn' -> '14') enthält. | grün | nie geprüft |
| `TestLayerpruefer.test_layer_exists` | Prüft, dass ein nicht vorhandener Layer als 'layer_nicht_gefunden' abgelehnt wird. | grün | nie geprüft |
| `TestLayerpruefer.test_layer_unsichtbar` | Prüft, dass ein unsichtbarer Layer bei geforderter Sichtbarkeit als 'layer_unsichtbar' abgelehnt wird. | grün | nie geprüft |
| `TestLayerpruefer.test_falscher_layertyp` | Prüft, dass ein Layer mit abweichendem Layertyp (Raster statt Vektor) als 'falscher_layertyp' abgelehnt wird. | grün | nie geprüft |
| `TestLayerpruefer.test_falscher_geotyp` | Prüft, dass ein Layer mit abweichendem Geometrietyp (Punkt statt Polygon) als 'falscher_geotyp' abgelehnt wird. | grün | nie geprüft |
| `TestLayerpruefer.test_layer_leer` | Prüft, dass ein Layer ohne Features als 'layer_leer' abgelehnt wird. | grün | nie geprüft |
| `TestLayerpruefer.test_falsches_crs` | Prüft, dass ein Layer mit abweichendem Koordinatenbezugssystem als 'falsches_crs' abgelehnt wird. | grün | nie geprüft |
| `TestLayerpruefer.test_felder_fehlen` | Prüft, dass ein Layer mit fehlenden Pflichtfeldern als 'felder_fehlen' abgelehnt wird. | grün | nie geprüft |
| `TestLayerpruefer.test_datenquelle_unerwartet` | Prüft, dass eine Datenquelle außerhalb der erlaubten Liste als 'datenquelle_unerwartet' abgelehnt wird. | grün | nie geprüft |
| `TestLayerpruefer.test_layer_nicht_editierbar` | Prüft, dass ein nicht editierbarer Layer bei geforderter Editierbarkeit als 'layer_nicht_editierbar' abgelehnt wird. | grün | nie geprüft |
| `TestLayerpruefer.test_layer_ok` | Prüft, dass ein Layer, der alle Anforderungen erfüllt, als 'ok' bestätigt wird. | grün | nie geprüft |
| `TestLinkpruefer.test_remote_link_ok` | Prüft, dass eine erreichbare Remote-URL (HTTP HEAD ohne Fehler) als 'ok' bestätigt wird. | grün | nie geprüft |
| `TestLinkpruefer.test_remote_link_error` | Prüft, dass eine Remote-URL mit Fehlerantwort als 'url_nicht_erreichbar' abgelehnt wird. | grün | nie geprüft |
| `TestLinkpruefer.test_remote_link_network_error` | Prüft, dass eine ausbleibende Netzwerkantwort (None) als 'netzwerkfehler' gemeldet wird. | grün | nie geprüft |
| `TestLinkpruefer.test_local_link_not_found` | Prüft, dass ein nicht existierender lokaler Pfad als 'pfad_nicht_gefunden' abgelehnt wird. | grün | nie geprüft |
| `TestLinkpruefer.test_local_link_ok` | Prüft, dass ein existierender lokaler Pfad als 'ok' bestätigt wird. | grün | nie geprüft |
| `TestPrintLayout.test_create_legend_item_links_map_and_enables_map_filtering` | Prüft, dass eine erzeugte Legende mit der übergebenen Karte verknüpft ist und automatisch nach deren Sichtbarkeit gefiltert wird. | grün | nie geprüft |
| `TestPrintLayout.test_create_legend_item_does_not_copy_project_layers_into_legend_model` | Prüft, dass eine neu erzeugte Legende keine Projekt-Layer in ihr Legendenmodell übernimmt (leere Root-Gruppe). | grün | nie geprüft |
| `TestPrintLayout.test_configure_legend_size_uses_content_adaptive_size` | Prüft, dass die Legendengröße inhaltsadaptiv bestimmt wird (kein manuelles Resize) und die ermittelte Höhe zurückgegeben wird. | grün | nie geprüft |
| `TestPrintLayout.test_configure_hauptkarte_grids_uses_wrapper_constants` | Prüft, dass das Gitternetz der Hauptkarte mit den erwarteten Stil-, Rahmen- und Beschriftungskonstanten (nur rechts/unten beschriftet, Schriftgröße und Hintergrund) konfiguriert wird. | grün | nie geprüft |
| `TestPrintLayout.test_create_single_page_layout_keeps_legend_linked_to_hauptkarte_and_theme` | Prüft, dass ein einseitiges Layout die Hauptkarte auf das übergebene Kartenthema festlegt und die Legende mit dieser Karte verknüpft bleibt. | grün | nie geprüft |
| `TestPrintLogic.test_get_baufreigabe_page_dimensions_prefers_a4_for_small_extent` | Prüft, dass für einen kleinen Kartenausschnitt (Baufreigabe) das Format DIN A4 ohne Fallback gewählt wird. | grün | nie geprüft |
| `TestPrintLogic.test_get_baufreigabe_page_dimensions_escalates_to_a3` | Prüft, dass ein größerer Kartenausschnitt (Baufreigabe) auf DIN A3 eskaliert wird. | grün | nie geprüft |
| `TestPrintLogic.test_get_baufreigabe_page_dimensions_respects_a4_as_maximum_with_fallback` | Prüft, dass bei auf DIN A4 begrenztem Höchstformat ein eigentlich A3-großer Ausschnitt mit Fallback-Kennzeichnung auf A4 reduziert wird. | grün | nie geprüft |
| `TestPrintLogic.test_get_baufreigabe_page_dimensions_falls_back_to_a3_for_oversize_extent` | Prüft, dass ein Ausschnitt, der auch DIN A3 übersteigt, mit Fallback-Kennzeichnung auf DIN A3 begrenzt wird. | grün | nie geprüft |
| `TestPrintLogic.test_select_standard_page_layout_uses_a4_as_minimum_sheet` | Prüft, dass für einen kleinen Ausschnitt trotz Höchstgrenze DIN A3 mindestens DIN A4 als Blattgröße gewählt wird. | grün | nie geprüft |
| `TestPrintLogic.test_select_standard_page_layout_limits_hauptkarte_to_a3` | Prüft, dass ein die Fläche voll ausnutzender Ausschnitt auf DIN A3 als größtes zulässiges Format begrenzt wird. | grün | nie geprüft |
| `TestPrintLogic.test_select_standard_page_layout_returns_none_if_a3_is_too_small` | Prüft, dass kein Layout gewählt wird (None), wenn der Ausschnitt selbst DIN A3 als Höchstformat übersteigt. | grün | nie geprüft |
| `TestPrintLogic.test_get_standard_layout_dimensions_uses_a4_and_forces_fit_for_small_extent` | Prüft, dass für einen kleinen Ausschnitt DIN A4 gewählt und das Einpassen (force_fit) erzwungen wird. | grün | nie geprüft |
| `TestPrintLogic.test_get_standard_layout_dimensions_caps_endlosrolle_width_at_2000_mm` | Prüft, dass bei aktiviertem Formfaktor (Endlosrolle) die Seitenbreite auf die maximale Rollenbreite (2000 mm) begrenzt wird. | grün | nie geprüft |
| `TestPrintLogic.test_apply_standard_minimum_a4_fallback_for_small_page` | Prüft, dass eine zu kleine Seite auf die A4-Mindestgröße angehoben und als erzwungen (forced) markiert wird. | grün | nie geprüft |
| `TestPrintLogic.test_apply_standard_minimum_a4_fallback_keeps_large_page` | Prüft, dass eine bereits ausreichend große Seite (A3) unverändert bleibt und nicht als erzwungen markiert wird. | grün | nie geprüft |
| `TestPrintLogic.test_does_plot_fit_page_true_for_standard_a4` | Prüft, dass ein Kartenobjekt, das in eine DIN A4-Seite passt, als passend erkannt wird. | grün | nie geprüft |
| `TestPrintLogic.test_does_plot_fit_page_false_if_objects_exceed_page` | Prüft, dass ein Kartenobjekt, das die Seitenbreite überschreitet, als nicht passend erkannt wird. | grün | nie geprüft |
| `TestPrintLogic.test_set_druckbereich_accepts_wie_kartenfenster` | Prüft, dass die Auswahl 'wie Kartenfenster' als Projektvariable 'druckbereich' gespeichert wird. | grün | nie geprüft |
| `TestPrintLogic.test_get_canvas_extent_returns_valid_extent` | Prüft, dass der aktuelle Kartenausschnitt des Kartenfensters unverändert zurückgegeben wird. | grün | nie geprüft |
| `TestPrintLogic.test_resolve_extent_uses_canvas_extent_without_buffer` | Prüft, dass bei Druckbereich 'wie Kartenfenster' der Kartenausschnitt ohne Puffer und ohne verknüpften Layer übernommen wird. | grün | nie geprüft |
| `TestPrintLogic.test_resolve_extent_uses_rectangle_extent_without_buffer` | Prüft, dass bei Druckbereich 'Rechteck' der gezeichnete Ausschnitt ohne Puffer und ohne verknüpften Layer übernommen wird. | grün | nie geprüft |
| `TestPruefmanager.test_ok` | Prüft, dass ein bereits erfolgreiches Prüfergebnis ohne Nutzerinteraktion als 'ok' durchgereicht wird. | grün | nie geprüft |
| `TestPruefmanager.test_leereingabe_erlaubt_ja` | Prüft, dass bei erlaubter leerer Eingabe eine Ja-Antwort des Nutzers die Entscheidung 'ok' liefert. | grün | nie geprüft |
| `TestPruefmanager.test_leereingabe_erlaubt_nein` | Prüft, dass bei erlaubter leerer Eingabe eine Nein-Antwort die Aktion 'leereingabe_erlaubt' als abgelehnt bestehen lässt. | grün | nie geprüft |
| `TestPruefmanager.test_standarddatei_vorschlagen_ja` | Prüft, dass eine Ja-Antwort auf den Vorschlag der Standarddatei die Entscheidung 'ok' mit dem Standardpfad als Kontext liefert. | grün | nie geprüft |
| `TestPruefmanager.test_standarddatei_vorschlagen_nein` | Prüft, dass eine Nein-Antwort auf den Vorschlag der Standarddatei die Aktion 'standarddatei_vorschlagen' als abgelehnt bestehen lässt. | grün | nie geprüft |
| `TestPruefmanager.test_temporaer_erlaubt_ja` | Prüft, dass eine Ja-Antwort auf die Rückfrage nach einer temporären Datei die Aktion 'temporaer_erzeugen' auslöst. | grün | nie geprüft |
| `TestPruefmanager.test_temporaer_erlaubt_nein` | Prüft, dass eine Nein-Antwort auf die Rückfrage nach einer temporären Datei die Aktion 'temporaer_erlaubt' als abgelehnt bestehen lässt. | grün | nie geprüft |
| `TestPruefmanager.test_layer_unsichtbar_ja` | Prüft, dass eine Ja-Antwort bei unsichtbarem Layer den Layer sichtbar schaltet und die Entscheidung 'ok' liefert. | grün | nie geprüft |
| `TestPruefmanager.test_layer_unsichtbar_nein` | Prüft, dass eine Nein-Antwort bei unsichtbarem Layer die Aktion 'layer_unsichtbar' als abgelehnt bestehen lässt. | grün | nie geprüft |
| `TestPruefmanager.test_unbekannte_aktion` | Prüft, dass eine unbekannte Aktion eine Warnung auslöst und unverarbeitet als Fehlschlag zurückgegeben wird. | grün | nie geprüft |
| `TestPruefmanager.test_datei_existiert_overwrite` | Prüft, dass die Nutzerwahl 'überschreiben' bei bestehender Datei zur Aktion 'datei_existiert_ueberschreiben' führt. | grün | nie geprüft |
| `TestPruefmanager.test_datei_existiert_append` | Prüft, dass die Nutzerwahl 'anhängen' bei bestehender Datei zur Aktion 'datei_existiert_anhaengen' führt. | grün | nie geprüft |
| `TestPruefmanager.test_datei_existiert_cancel` | Prüft, dass die Nutzerwahl 'abbrechen' bei bestehender Datei zur Aktion 'datei_existiert_ueberspringen' führt. | grün | nie geprüft |
| `TestPruefmanager.test_datei_existiert_in_non_qgis_mode_returns_input` | Prüft, dass außerhalb des QGIS-Modus bei bestehender Datei keine Rückfrage erfolgt, sondern die ursprüngliche Aktion unentschieden zurückgegeben wird. | grün | nie geprüft |
| `TestSettingsLogic.test_load` | Prüft, dass load() jede bekannte Projektvariable genau einmal über get_variable() liest. | grün | nie geprüft |
| `TestSettingsLogic.test_save` | Prüft, dass save() nur bekannte Variablen-Keys speichert und unbekannte Keys ignoriert. | grün | nie geprüft |
| `TestSettingsLogic.test_load_handles_partial_values_with_empty_fallback` | Prüft, dass load() bei fehlenden Werten auf einen leeren String zurückfällt statt einen Fehler zu werfen. | grün | nie geprüft |
| `TestSettingsLogic.test_save_empty_string_value_is_persisted` | Prüft, dass save() einen leeren String als gültigen Wert speichert, statt ihn wie einen fehlenden Key zu behandeln. | grün | nie geprüft |
| `TestStilpruefer.test_keine_datei_angegeben` | Prüft, dass eine leere Pfadangabe als 'ok' ohne Kontext akzeptiert wird (Stil ist optional). | grün | nie geprüft |
| `TestStilpruefer.test_datei_existiert_mit_qml` | Prüft, dass eine existierende .qml-Datei als 'stil_anwendbar' bestätigt wird. | grün | nie geprüft |
| `TestStilpruefer.test_datei_existiert_falsche_endung` | Prüft, dass eine existierende Datei ohne .qml-Endung als 'falsche_endung' abgelehnt wird. | grün | nie geprüft |
| `TestStilpruefer.test_datei_existiert_nicht` | Prüft, dass ein nicht existierender .qml-Pfad als 'datei_nicht_gefunden' abgelehnt wird. | grün | nie geprüft |
| `TestSanitizeBezeichner.test_umlaute_bleiben_erhalten` | Prüft, dass Umlaute und ß nicht durch den Ersatz entfernt werden. | grün | nie geprüft |
| `TestSanitizeBezeichner.test_bindestrich_bleibt_erhalten` | Prüft, dass ein Bindestrich im Bezeichner erhalten bleibt (Issue #42). | grün | nie geprüft |
| `TestSanitizeBezeichner.test_unterstrich_bleibt_erhalten` | Prüft, dass ein Unterstrich im Bezeichner erhalten bleibt. | grün | nie geprüft |
| `TestSanitizeBezeichner.test_leerzeichen_wird_durch_ersatz_zusammengefasst` | Prüft, dass Leerzeichen (kein zulässiges Zeichen) zu einem Ersatzzeichen werden. | grün | nie geprüft |
| `TestSanitizeBezeichner.test_fuehrender_und_folgender_ersatz_wird_entfernt` | Prüft, dass ein Ersatzzeichen am Anfang oder Ende des Ergebnisses entfernt wird. | grün | nie geprüft |
| `TestSanitizeBezeichner.test_eigenes_ersatzzeichen_wird_verwendet` | Prüft, dass ein abweichendes Ersatzzeichen anstelle von Unterstrich genutzt wird. | grün | nie geprüft |
| `TestSanitizeBezeichner.test_nur_unzulaessige_zeichen_ergibt_leeren_string` | Prüft, dass ein Bezeichner ganz aus unzulässigen Zeichen zu einem leeren String wird. | grün | nie geprüft |
| `TestVariableWrapper.test_set_variable_project_noop_write_is_skipped` | Prüft, dass set_variable() im Projekt-Scope nicht schreibt, wenn der neue Wert dem bestehenden entspricht. | grün | nie geprüft |
| `TestVariableWrapper.test_set_variable_project_changed_value_is_written` | Prüft, dass set_variable() im Projekt-Scope bei geändertem Wert mit dem Präfix 'sn_' geschrieben wird. | grün | nie geprüft |
| `TestVariableWrapper.test_set_variable_global_writes_prefixed_name` | Prüft, dass set_variable() im globalen Scope den Variablennamen mit 'sn_' vorangestellt schreibt. | grün | nie geprüft |
| `TestVariableWrapper.test_get_variable_global_returns_empty_string_fallback` | Prüft, dass get_variable() im globalen Scope für eine nicht gesetzte Variable einen leeren String liefert. | grün | nie geprüft |
| `TestVariableWrapper.test_get_variable_invalid_scope_raises` | Prüft, dass get_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst. | grün | nie geprüft |
| `TestVariableWrapper.test_set_variable_invalid_scope_raises` | Prüft, dass set_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst. | grün | nie geprüft |
| `TestVerfahrensgebietManager.test_get_verfahrensgebiet_layer_id_returns_value` | Prüft, dass get_verfahrensgebiet_layer_id() die in der Projektvariable gespeicherte Layer-ID liefert. | grün | nie geprüft |
| `TestVerfahrensgebietManager.test_get_verfahrensgebiet_layer_id_returns_none_for_empty_value` | Prüft, dass get_verfahrensgebiet_layer_id() bei leerer Projektvariable None statt eines leeren Strings liefert. | grün | nie geprüft |
| `TestVerfahrensgebietManager.test_set_verfahrensgebiet_layer_id_writes_project_variable` | Prüft, dass set_verfahrensgebiet_layer_id() die Layer-ID als Projektvariable 'verfahrensgebiet_layer' speichert. | grün | nie geprüft |
| `TestVerfahrensgebietManager.test_update_without_layer_does_not_write_when_already_empty` | Prüft, dass ohne gefundenen Verfahrensgebiet-Layer keine Schreibaktion erfolgt, wenn die Variable bereits leer ist. | grün | nie geprüft |
| `TestVerfahrensgebietManager.test_update_with_layer_writes_variable` | Prüft, dass ein gefundener Verfahrensgebiet-Layer seine ID als Projektvariable speichert. | grün | nie geprüft |
| `TestFlurstueckAlkis.test_backwards_compatible_no_new_params` | flurstueck_alkis(tab) ohne neue Parameter → kein Fehler. | rot (Baseline) | nie geprüft |
| `TestFlurstueckAlkis.test_ohne_schluessel_abfrage_ueberspringt_ask_text` | ohne_schluessel_abfrage=True verwendet vorgabe_schluessel direkt, ohne ask_text aufzurufen. | grün | nie geprüft |
| `TestFlurstueckAlkisAnhaengenDedup.test_append_ueberspringt_bereits_vorhandene_flurstuecke` | Prüft, dass beim Anhängen bereits vorhandene flurstueckskennzeichen nicht erneut hinzugefügt werden. | grün | nie geprüft |
| `TestFlurstueckAlkisAnhaengenDedup.test_append_ohne_kennzeichen_feld_haengt_alles_an` | Prüft, dass ohne flurstueckskennzeichen-Feld weiterhin alle Features angehängt werden (Rückfallverhalten). | grün | nie geprüft |
| `TestFlurstueckAlkisAnhaengenDedup.test_ohne_schluessel_abfrage_append_dedup` | ohne_schluessel_abfrage=True: Anhängen dedupliziert trotzdem, ohne nach Schlüsseln zu fragen (#47). | grün | nie geprüft |
| `TestGemarkungSchluesselbbox.test_success_bbox_filter` | WFS-BBox-Filter liefert Features → korrekte Tupel-Liste. | übersprungen – Legacy API (by_bbox) not available in current module | nie geprüft |
| `TestGemarkungSchluesselbbox.test_fallback_when_bbox_fails` | BBox-Filter schlägt fehl → Fallback auf Volllade + client-seitige Filterung. | übersprungen – Legacy API (by_bbox) not available in current module | nie geprüft |
| `TestGemarkungSchluesselbbox.test_both_layers_fail_returns_empty` | Beide Lade-Strategien scheitern → leere Liste. | übersprungen – Legacy API (by_bbox) not available in current module | nie geprüft |
| `TestGemarkungSchluesselbbox.test_deduplication_and_sorting` | Doppelte Schlüssel werden dedupliziert, Ergebnis ist sortiert. | übersprungen – Legacy API (by_bbox) not available in current module | nie geprüft |
| `TestGemarkungSchluesselbbox.test_feature_without_schluessel_skipped` | Feature ohne Schlüssel-Attribut wird übersprungen. | übersprungen – Legacy API (by_bbox) not available in current module | nie geprüft |
| `TestGemarkungSchluesselbbox.test_exception_returns_empty` | Exception im Ladevorgang → leere Liste (kein Crash). | übersprungen – Legacy API (by_bbox) not available in current module | nie geprüft |
| `TestGemarkungSchluesselnurNummern.test_returns_only_nummern` | — (Docstring fehlt) | übersprungen – Legacy API (by_bbox) not available in current module | nie geprüft |
| `TestGemarkungSchluesselnurNummern.test_empty_input_returns_empty` | — (Docstring fehlt) | übersprungen – Legacy API (by_bbox) not available in current module | nie geprüft |
| `TestExtrahiereKnickpunkte.test_qgis_nicht_verfuegbar_gibt_leere_liste` | Wenn qgis.core kein QgsPointXY hat (ImportError in Funktion), leere Liste. | grün | nie geprüft |
| `TestFehlendKnickpunkteViaVerbindungslinien.test_weniger_als_zwei_pta_auf_ring_kein_orange` | Nur 1 gematchter PunktortTA auf Ring → keine fehlenden Knickpunkte. | grün | nie geprüft |
| `TestFehlendKnickpunkteViaVerbindungslinien.test_ungematchter_pta_im_puffer_wird_orange` | Nicht-gematchter PunktortTA innerhalb 3-cm-Puffer → orange gezählt. | grün | nie geprüft |
| `TestFehlendKnickpunkteViaVerbindungslinien.test_ungematchter_pta_ausserhalb_puffer_kein_orange` | Nicht-gematchter PunktortTA außerhalb Puffer → nicht orange gezählt. | grün | nie geprüft |
| `TestVerfahrensgebietAlkis.test_verfahrensgebiet_alkis_success_single_kombination` | Einzelne (adv_name, bezeichnung)-Kombination → kein Dialog, Memory-Layer zurück. | grün | nie geprüft |
| `TestVerfahrensgebietAlkis.test_verfahrensgebiet_alkis_multi_kombination_dialog_auswahl` | Zwei verschiedene Kombinationen → Dialog wird gezeigt, gewählte Features genutzt. | grün | nie geprüft |
| `TestVerfahrensgebietAlkis.test_verfahrensgebiet_alkis_multi_kombination_dialog_abbruch` | Zwei verschiedene Kombinationen → Nutzer bricht Dialog ab → NONE. | grün | nie geprüft |
| `TestVerfahrensgebietAlkis.test_verfahrensgebiet_alkis_multi_kombination_mehrfachauswahl` | Zwei verschiedene Kombinationen → beide ausgewählt → beide Feature-Gruppen genutzt. | grün | nie geprüft |
| `TestVerfahrensgebietAlkisKomplett.test_flaechen_abweichung_abbrechen_kein_detailcheck` | Abweichung + Abbrechen → knickpunkt_pruefung wird NICHT aufgerufen. | grün | nie geprüft |
| `TestVerfahrensgebietAlkisKomplett.test_flaechen_abweichung_als_vg_laden` | Abweichung + Als VG laden → BROR-Layer wird umbenannt und als | grün | nie geprüft |
| `TestVerfahrensgebietAlkisKomplett.test_bror_layer_bleibt_bei_erfolg_im_projekt` | Bei Erfolg darf der BROR-Layer NICHT entfernt werden. | grün | nie geprüft |
| `TestVerfahrensgebietAlkisKomplett.test_bror_layer_wird_bei_fehler_entfernt` | Bei Fehler (flst_alkis NONE) wird der BROR-Layer aus dem Projekt entfernt. | grün | nie geprüft |
| `TestVerfahrensgebietAlkisKomplett.test_kein_vkz_kein_landkreis_dialog_abgebrochen` | Weder Verfahrensnummer noch Landkreis gesetzt, Nutzer bricht den | grün | nie geprüft |
| `TestVerfahrensgebietAlkisKomplett.test_kein_vkz_kein_landkreis_dialog_liefert_landkreis` | Weder Verfahrensnummer noch Landkreis gesetzt, Nutzer wählt einen | grün | nie geprüft |
| `TestVerfahrensgebietAlkisKomplett.test_landkreis_modus_wird_bei_fehlender_vkz_verwendet` | Keine Verfahrensnummer, aber Landkreis gesetzt → Landkreis-Suchpfad | grün | nie geprüft |
| `TestGetKennzeichenMenge.test_single_kennzeichen_without_comma` | Einzelnes Kennzeichen ohne Komma wird korrekt erkannt. | grün | nie geprüft |
| `TestErstelle.test_success_counts` | 3 gültige Features → erfolgreich=3, fehlgeschlagen=0, 1 Union-Feature im Layer. | grün | nie geprüft |
| `TestErstelle.test_partial_failure_on_empty_geometry` | 2 ok + 1 leere Geometrie → erfolgreich=2, fehlgeschlagen=1. | grün | nie geprüft |
| `TestErstelle.test_all_fail_on_empty_geometries` | Alle Features haben leere Geometrie → erfolgreich=0, kein Feature im Layer. | grün | nie geprüft |
| `TestErgaenzeVerfahrensgebiet.test_adds_only_new_ids` | Auswahl enthält 1 neue + 1 bereits vorhandene ID → hinzugefügt=1. | grün | nie geprüft |
| `TestErgaenzeVerfahrensgebiet.test_skip_empty_geometry_counts_as_failed` | Neue ID mit leerer Geometrie → fehlgeschlagen=1, hinzugefügt=0. | grün | nie geprüft |
| `TestErgaenzeVerfahrensgebiet.test_all_already_present` | Alle ausgewählten IDs bereits vorhanden → bereits_vorhanden=n, hinzugefügt=0. | grün | nie geprüft |
| `TestEntferneAusVerfahrensgebiet.test_removes_present_ids` | Auswahl enthält 1 vorhandene ID → entfernt=1, nicht_enthalten=0. | grün | nie geprüft |
| `TestEntferneAusVerfahrensgebiet.test_counts_ids_not_in_layer` | Auswahl enthält ID, die nicht im Verfahrensgebiet ist → nicht_enthalten=1. | grün | nie geprüft |
| `TestEntferneAusVerfahrensgebiet.test_none_present_in_layer` | Auswahl hat IDs, die alle nicht im Layer sind → entfernt=0, nicht_enthalten=n. | grün | nie geprüft |
| `TestEntferneAusVerfahrensgebiet.test_removes_last_id_deletes_feature` | Wird das letzte Kennzeichen entfernt, wird das Feature gelöscht. | grün | nie geprüft |
| `TestErsetze.test_ersetze_delegates_to_erstelle` | ersetze_verfahrensgebiet gibt dasselbe Ergebnis wie erstelle zurück. | grün | nie geprüft |
| `TestErstelleMemoryLayerAusShp.test_attribute_von_erstem_feature_werden_gesetzt` | Attributwerte des ersten Features werden auf das Union-Feature übertragen. | grün | nie geprüft |
| `TestVerfahrensgebietShapeKomplett.test_shape_vg_sofort_ins_projekt_nach_laden` | Shape-VG wird unmittelbar nach dem Laden ins Projekt eingefügt. | rot (Baseline) | nie geprüft |
| `TestVerfahrensgebietShapeKomplett.test_shape_vg_wird_bei_abbruch_aus_projekt_entfernt` | Shape-VG wird bei Fehler/Abbruch aus dem Projekt entfernt. | rot (Baseline) | nie geprüft |
| `TestVerfahrensgebietShapeKomplett.test_shape_vg_bleibt_im_projekt_bei_erfolg` | Bei erfolgreichem Abschluss wird shape_vg NICHT aus dem Projekt entfernt. | grün | nie geprüft |
| `TestVerfahrensgebietShapeKomplett.test_bror_layer_ist_stets_none` | Dritter Rückgabewert ist im Shape-Workflow immer None (kein BROR). | grün | nie geprüft |
| `TestVerfahrensgebietShapeKomplett.test_bror_wird_vor_shape_vg_ins_projekt_eingefuegt` | BROR wird VOR shape_vg ins Projekt eingefügt (kein Namenskonflikt). | rot (Baseline) | nie geprüft |
| `TestVerfahrensgebietShapeKomplett.test_bror_wird_bei_abbruch_aus_projekt_entfernt` | BROR und shape_vg werden bei Fehler aus dem Projekt entfernt. | rot (Baseline) | nie geprüft |
| `TestVerfahrensgebietShapeKomplett.test_verfahrensgebiet_alkis_nicht_aufgerufen_wenn_vkz_leer` | Leere VKZ → verfahrensgebiet_alkis wird NICHT aufgerufen. | grün | nie geprüft |
| `TestVerfahrensgebietShapeKomplett.test_bror_als_erstes_argument_beim_flaechenvergleich` | Mit BROR: _vergleiche_flaechen wird (bror, shape_vg, ...) aufgerufen. | rot (Baseline) | nie geprüft |
| `TestVerfahrensgebietShapeKomplett.test_fallback_auf_temp_enriched_wenn_bror_ladeversagen` | BROR-Ladeversagen → Fallback: _vergleiche_flaechen mit shape_vg vs temp_enriched. | rot (Baseline) | nie geprüft |
| `TestWorkingTab.test_handle_verf_alkis_failure_clears_layer_var` | Status NONE → Layer-Variable wird auf '' gesetzt. | grün | nie geprüft |
| `TestWorkingTab.test_handle_flurst_alkis_first_load_uebernimmt_layer` | Erstmaliges Laden über 'Flurstücke laden' fügt den Layer dem Projekt hinzu. | grün | nie geprüft |
| `TestWorkingTab.test_handle_flurst_aus_gemarkungen_ruft_flurstueck_alkis_ohne_schluessel_abfrage` | Der Gemarkungen-Auswahl-Button ruft dieselbe Ladefunktion mit ohne_schluessel_abfrage=True auf (#47). | grün | nie geprüft |
| `TestWorkingTab.test_handle_flurst_aus_gemarkungen_abbruch_zeigt_keine_zusaetzliche_meldung` | Bricht flurstueck_alkis() ab (None, NONE), zeigt der Button keine eigene Meldung – flurstueck_alkis() hat das schon getan (#47). | grün | nie geprüft |
| `TestWorkingTab.test_handle_grenz_alkis_success_sets_haken` | Grenzpunkte erfolgreich geladen → haken_grenz wird gesetzt. | rot (Baseline) | nie geprüft |
| `TestWorkingTab.test_handle_grenz_alkis_none_result_sets_no_haken` | grenzpunkt_alkis liefert (None, None) → kein Haken. | rot (Baseline) | nie geprüft |
| `TestWorkingTab.test_handle_flurst_alkis_invalid_input_returns_early` | Status NONE (z. B. Nutzerabbruch) → kein Layer, kein Haken. | grün | nie geprüft |
| `TestWorkingTab.test_handle_verfahrensgebiet_from_selection_requires_active_layer` | Kein aktiver Layer → warning, kein Layer wird erstellt. | grün | nie geprüft |
| `TestWorkingTab.test_handle_verfahrensgebiet_from_selection_requires_required_fields` | Layer ohne Pflichtfelder → warning, kein Layer wird erstellt. | grün | nie geprüft |
| `TestWorkingTab.test_handle_verfahrensgebiet_from_selection_requires_selection` | Keine Flurstück-Auswahl → warning, kein Layer erstellt. | grün | nie geprüft |
| `TestWorkingTab.test_handle_verfahrensgebiet_from_selection_new_layer_success` | Erstlauf ohne bestehenden Layer → Layer wird erstellt und hinzugefügt. | grün | nie geprüft |
| `TestWorkingTab.test_handle_verfahrensgebiet_from_selection_existing_layer_ergaenzen_dispatch` | Entscheidung 'ergaenzen' → ergaenze_verfahrensgebiet wird aufgerufen. | grün | nie geprüft |
| `TestWorkingTab.test_handle_verfahrensgebiet_from_selection_existing_layer_entfernen_dispatch` | Entscheidung 'entfernen' → entferne_aus_verfahrensgebiet wird aufgerufen. | grün | nie geprüft |
| `TestWorkingTab.test_handle_verfahrensgebiet_from_selection_existing_layer_ersetzen_dispatch` | Entscheidung 'ersetzen' → alter Layer entfernt, neuer hinzugefügt. | grün | nie geprüft |
| `TestWorkingTab.test_handle_gem_alkis_service_reachable_adds_layer` | Dienst erreichbar → Layer ins Projekt, Stil angewendet, Haken gesetzt. | grün | nie geprüft |
| `TestWorkingTab.test_handle_gem_alkis_service_unreachable_shows_warning` | Dienst nicht erreichbar (None) → warning, kein addMapLayer. | grün | nie geprüft |
| `TestWorkingTab.test_handle_gem_alkis_layer_already_exists_shows_info` | Layer 'Gemarkungen' bereits vorhanden → info, kein erneutes Laden. | grün | nie geprüft |
| `TestHandleVerfShape.test_status_none_clears_layer_variable` | Status NONE → Layer-Variable wird auf '' gesetzt. | grün | nie geprüft |
| `TestHandleVerfShape.test_button_always_re_enabled_on_failure` | Button muss nach Status NONE wieder freigegeben sein (finally). | grün | nie geprüft |
| `TestHandleVerfShape.test_verfahrensnummer_nicht_gesetzt_ja_fuehrt_fort` | Verfahrensnummer leer + Nutzer wählt 'Ja' → Pipeline wird aufgerufen. | rot (Baseline) | nie geprüft |
| `TestHandleVerfShape.test_verfahrensnummer_gesetzt_kein_rueckfrage_dialog` | Verfahrensnummer gesetzt → kein ask_yes_no-Dialog. | grün | nie geprüft |
| `TestHandleVerfShape.test_success_path_applies_style_and_sets_haken` | Erfolg → verfahrensgebiet.qml angewendet, haken_verf gesetzt, success aufgerufen. | grün | nie geprüft |
| `TestHandleVerfShape.test_bror_layer_erhaelt_qml_stil` | Wenn bror_layer zurückgegeben → BauRaumOderBodenordnungsrecht.qml angewendet. | grün | nie geprüft |
| `TestHandleVerfShape.test_enriched_layer_already_in_project_not_added_again` | Layer bereits im Projekt → kein erneutes addMapLayer für VG-Layer. | grün | nie geprüft |
| `TestHandleVerfShape.test_busy_state_set_during_execution` | Button wird während der Ausführung auf busy gesetzt. | grün | nie geprüft |