- **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.
- **ohne Testbezug** – Funktionen/Methoden im Quellcode, deren Name in keiner Testdatei des Pakets vorkommt (weder als Aufruf noch als `mock.patch("…")`-Ziel). Ein Namensabgleich, kein Ausführungsnachweis – siehe Abschnitt „Ungetestete Funktionen“ für die Grenzen dieser Heuristik. Das ist bewusst **keine** Zeilen-Coverage in Prozent (siehe ADR 0009, „Verworfene Alternativen“), sondern eine Lückenliste wie bei fehlenden Beschreibungen. Davon **beabsichtigt**– der Docstring dokumentiert den Testverzicht; **ungeklärt**– weder Test noch Vermerk, die eigentliche Arbeitsliste.
| `CloseEventTests.test_ruft_cleanup_aller_tabs_auf` | Prüft, dass closeEvent cleanup() auf allen Tabs des Dock-Widgets aufruft. | grün | nie geprüft |
| `CloseEventTests.test_ignoriert_tabs_ohne_cleanup` | Prüft, dass ein Tab ohne cleanup()-Methode nicht zu einem Fehler führt. | grün | nie geprüft |
| `CloseEventTests.test_fehler_in_cleanup_wird_abgefangen_und_andere_tabs_laufen_weiter` | Prüft, dass ein Fehler in cleanup() eines Tabs nicht die übrigen Tabs verhindert. | grün | nie geprüft |
| `CloseEventTests.test_setzt_toolbar_action_zurueck` | Prüft, dass closeEvent die verknüpfte Toolbar-Action auf 'nicht gedrückt' zurücksetzt. | grün | nie geprüft |
| `CloseEventTests.test_ohne_action_wird_nichts_zurueckgesetzt` | Prüft, dass closeEvent ohne verknüpfte Toolbar-Action keine Ausnahme wirft. | grün | nie geprüft |
| `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 |
| `TestDataGrabber.test_aggregate_results_mit_zeilen_liefert_erfolgsergebnis` | Prüft, dass _aggregate_results bei vorhandenen Zeilen ein Erfolgsergebnis mit Zeilenzahl liefert. | grün | nie geprüft |
| `TestDataGrabber.test_aggregate_results_ohne_zeilen_liefert_keine_validen_eintraege` | Prüft, dass _aggregate_results ohne Zeilen ok=False mit Aktion 'keine_validen_eintraege' liefert. | grün | nie geprüft |
| `TestDateipruefer.test_leereingabe_erlaubt` | Prüft, dass eine leere Pfadangabe bei leereingabe_erlaubt=True als 'leereingabe_erlaubt' ohne Kontext gemeldet wird. | grün | geprüft am 2026-09-17 |
| `TestDateipruefer.test_leereingabe_nicht_erlaubt` | Prüft, dass eine leere Pfadangabe ohne leereingabe_erlaubt als 'leereingabe_nicht_erlaubt' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `TestDateipruefer.test_datei_ok` | Prüft, dass ein existierender Dateipfad als 'ok' mit dem Pfad als Kontext bestätigt wird. | grün | geprüft am 2026-09-17 |
| `TestDateipruefer.test_erkenne_dateityp_unterscheidet_excel_datenbank_und_unbekannt` | Prüft, dass erkenne_dateityp .xlsx als 'excel', .gpkg/.sqlite als 'datenbank' und Rest als 'unbekannt' erkennt. | grün | nie geprüft |
| `TestDateipruefer.test_pfad_verbindet_relativen_pfad_mit_basispfad` | Prüft, dass _pfad einen relativen Pfad mit dem Basisverzeichnis verbindet. | grün | nie geprüft |
| `TestDateipruefer.test_pfad_laesst_absoluten_pfad_unveraendert` | Prüft, dass _pfad einen bereits absoluten Pfad nicht mit dem Basisverzeichnis verbindet. | grün | nie geprüft |
| `TestDateipruefer.test_ist_gueltiger_gpkg_pfad_akzeptiert_vorhandenes_verzeichnis` | Prüft, dass ein .gpkg-Pfad mit vorhandenem Zielverzeichnis als gültig gilt. | grün | nie geprüft |
| `TestDateipruefer.test_ist_gueltiger_gpkg_pfad_lehnt_falsche_endung_ab` | Prüft, dass ein Pfad ohne .gpkg-Endung als ungültig gilt, auch bei vorhandenem Verzeichnis. | grün | nie geprüft |
| `TestDateipruefer.test_ist_gueltiger_gpkg_pfad_lehnt_fehlendes_verzeichnis_ab` | Prüft, dass ein .gpkg-Pfad in einem nicht vorhandenen Verzeichnis als ungültig gilt. | grün | nie geprüft |
| `DetermineSpatialFilterTests.test_raumfilter_ohne_liefert_none` | Prüft, dass Raumfilter 'ohne' unabhängig vom Layer immer None liefert. | grün | nie geprüft |
| `DetermineSpatialFilterTests.test_fehlender_layer_liefert_none` | Prüft, dass ohne Verfahrensgebiet-Layer kein Raumfilter gebaut wird. | grün | nie geprüft |
| `DetermineSpatialFilterTests.test_unbekannter_raumfilter_liefert_none` | Prüft, dass ein unbekannter Raumfilter-Wert None liefert, statt einen Fehler zu werfen. | grün | nie geprüft |
| `DetermineSpatialFilterTests.test_verfahrensgebiet_liefert_extent_und_crs` | Prüft, dass Raumfilter 'Verfahrensgebiet' Extent und CRS des Verfahrensgebiet-Layers liefert. | grün | nie geprüft |
| `DetermineSpatialFilterTests.test_verfahrensgebiet_ohne_extent_liefert_none` | Prüft, dass ein Verfahrensgebiet-Layer ohne ermittelbaren Extent None liefert. | grün | nie geprüft |
| `DetermineSpatialFilterTests.test_pufferlayer_liefert_extent_des_pufferlayers` | Prüft, dass Raumfilter 'Pufferlayer' Extent und CRS des erzeugten Pufferlayers liefert. | grün | nie geprüft |
| `DetermineSpatialFilterTests.test_pufferlayer_ohne_puffer_liefert_none` | Prüft, dass 'Pufferlayer' None liefert, wenn kein Pufferlayer erzeugt werden konnte. | grün | nie geprüft |
| `BuildProviderUrlTests.test_wms_liefert_link_unveraendert` | Prüft, dass bei Provider WMS der Link unverändert durchgereicht wird, auch mit Raumfilter. | grün | nie geprüft |
| `BuildProviderUrlTests.test_url_praefix_wird_entfernt` | Prüft, dass ein vorangestelltes 'url=' aus dem Link entfernt wird. | grün | nie geprüft |
| `BuildProviderUrlTests.test_wfs_baut_standardparameter_und_bbox_mit_crs` | Prüft, dass WFS-Abrufe Standardparameter, umbenanntes TYPENAMES und BBOX mit CRS-URN erhalten. | grün | nie geprüft |
| `BuildProviderUrlTests.test_wfs_repariert_doppeltes_fragezeichen` | Prüft, dass ein zweites '?' im WFS-Link zu '&' korrigiert wird, statt eine ungültige URL zu erzeugen. | grün | nie geprüft |
| `BuildProviderUrlTests.test_wfs_ohne_raumfilter_setzt_keine_bbox` | Prüft, dass WFS ohne Raumfilter (bbox_geom=None) keinen BBOX-Parameter setzt. | grün | nie geprüft |
| `BuildProviderUrlTests.test_rest_provider_haengt_query_endpunkt_an` | Prüft, dass REST/ArcGIS-Links ohne '/query'-Endpunkt automatisch ergänzt werden. | grün | nie geprüft |
| `BuildProviderUrlTests.test_rest_provider_mit_bbox_baut_geometry_envelope_und_srid` | Prüft, dass REST-Abrufe mit Raumfilter eine Geometry-Envelope und inSR/outSR aus dem CRS setzen. | grün | nie geprüft |
| `BuildProviderUrlTests.test_default_provider_haengt_generischen_bbox_parameter_an` | Prüft, dass ein unbekannter Provider mit Raumfilter einen generischen bbox-Parameter erhält. | grün | nie geprüft |
| `BuildProviderUrlTests.test_default_provider_ohne_raumfilter_laesst_query_unveraendert` | Prüft, dass ein unbekannter Provider ohne Raumfilter keinen bbox-Parameter ergänzt. | grün | nie geprüft |
| `FetchFeaturesTests.test_wms_liefert_keine_features_ohne_fehler` | Prüft, dass bei Provider WMS kein Featureabruf stattfindet und kein Fehler gemeldet wird. | grün | nie geprüft |
| `FetchFeaturesTests.test_abbruch_vor_abruf_liefert_fehlermeldung` | Prüft, dass ein bereits gesetzter Abbruch vor dem eigentlichen Abruf erkannt wird. | grün | nie geprüft |
| `FetchFeaturesTests.test_json_featurecollection_wird_geparst` | Prüft, dass eine JSON-FeatureCollection-Antwort in eine Feature-Liste umgewandelt wird. | grün | nie geprüft |
| `FetchFeaturesTests.test_netzwerkfehler_wird_als_fehlermeldung_gemeldet` | Prüft, dass ein fehlgeschlagener HTTP-Abruf eine Fehlermeldung statt einer Ausnahme liefert. | grün | nie geprüft |
| `FetchFeaturesTests.test_wfs_xml_liefert_anzahl_aus_numberofmatched` | Prüft, dass eine WFS-XML-Antwort ohne JSON die Trefferzahl aus numberOfMatched übernimmt. | grün | nie geprüft |
| `DatenabrufOrchestrierungTests.test_fehlende_pflichtfelder_werden_als_ungueltig_gemeldet` | Prüft, dass eine Zeile ohne Link/Provider mit Aktion 'pflichtfelder_fehlen' gemeldet und übersprungen wird. | grün | nie geprüft |
| `DatenabrufOrchestrierungTests.test_wms_zeile_ohne_features_landet_in_ausserhalb` | Prüft, dass eine erfolgreich abgerufene WMS-Zeile mit 0 Features als 'ausserhalb' gezählt wird. | grün | nie geprüft |
| `DatenabrufOrchestrierungTests.test_abbruch_ueber_progress_stoppt_weitere_zeilen` | Prüft, dass ein Abbruch über das Progress-Objekt die Verarbeitung weiterer Zeilen stoppt. | grün | nie geprüft |
| `WriteLayerToGpkgTests.test_ungueltiger_layer_liefert_fehlermeldung` | Prüft, dass ein ungültiger Layer eine Fehlermeldung statt eines Absturzes liefert. | grün | nie geprüft |
| `WriteLayerToGpkgTests.test_gueltiger_layer_wird_ohne_fehler_geschrieben` | Prüft, dass ein gültiger Layer im Mock-Modus ohne Fehlermeldung geschrieben wird. | grün | nie geprüft |
| `ResolveStylePathTests.test_leerer_stilpfad_liefert_none` | Prüft, dass ein leerer oder fehlender Stilpfad None liefert. | grün | nie geprüft |
| `ResolveStylePathTests.test_absoluter_vorhandener_stilpfad_wird_aufgeloest` | Prüft, dass ein absoluter, vorhandener Stilpfad normalisiert und unverändert erkannt wird. | grün | nie geprüft |
| `ResolveStylePathTests.test_nicht_vorhandener_stilpfad_liefert_none` | Prüft, dass ein nicht vorhandener Stilpfad None liefert, statt einen ungültigen Pfad zurückzugeben. | grün | nie geprüft |
| `SchreibeDatenTests.test_ohne_speicherort_wirft_valueerror` | Prüft, dass schreibe_Daten ohne Speicherort einen ValueError wirft. | grün | nie geprüft |
| `SchreibeDatenTests.test_eintrag_ohne_gueltigen_layer_wird_uebersprungen` | Prüft, dass ein Eintrag ohne gültigen Layer übersprungen wird und ein Fehlerergebnis meldet. | grün | nie geprüft |
| `SchreibeDatenTests.test_erfolgreicher_eintrag_liefert_layer_path_und_thema` | Prüft, dass ein gültiger Layer einen Layer-Path mit GPKG-Pfad und Layername liefert. | grün | nie geprüft |
| `SchreibeDatenTests.test_ohne_thema_wird_ident_als_layername_verwendet` | Prüft, dass ohne passendes Thema in processed_results der ident als Layername verwendet wird. | grün | nie geprüft |
| `LadeLayerTests.test_ohne_layer_path_wird_uebersprungen` | Prüft, dass ein Eintrag ohne layer_path übersprungen wird, ohne einen Fehler zu melden. | grün | nie geprüft |
| `LadeLayerTests.test_gueltiger_layer_wird_dem_projekt_hinzugefuegt` | Prüft, dass ein gültig ladbarer Layer ohne Fehlermeldung verarbeitet wird. | grün | nie geprüft |
| `LadeLayerTests.test_ungueltiger_layer_meldet_layer_nicht_gefunden` | Prüft, dass ein ungültig ladbarer Layer als 'layer_nicht_gefunden' gemeldet wird. | grün | nie geprüft |
| `SchreibeLogTests.test_ohne_speicherort_wirft_valueerror` | Prüft, dass schreibe_log ohne Speicherort einen ValueError wirft. | grün | nie geprüft |
| `SchreibeLogTests.test_schreibt_json_datei_mit_ergebnissen_und_gibt_pfad_zurueck` | Prüft, dass schreibe_log eine lesbare JSON-Log-Datei erzeugt und deren Pfad zurückgibt. | grün | nie geprüft |
| `DockManagerShowTests.test_none_dock_meldet_fehler_und_zeigt_nichts_an` | Prüft, dass ein fehlendes Dock-Widget (None) einen Fehler meldet und nichts anzeigt. | grün | nie geprüft |
| `DockManagerShowTests.test_setzt_objectname_wenn_leer` | Prüft, dass ein Dock ohne Namen einen technischen Namen mit dem Präfix 'sn_dock_' erhält. | grün | nie geprüft |
| `DockManagerShowTests.test_entfernt_andere_sn_docks_aber_nicht_sich_selbst` | Prüft, dass andere sn_basis-Docks entfernt werden, das neue Dock und fremde Widgets aber unangetastet bleiben. | grün | nie geprüft |
| `DockManagerShowTests.test_zeigt_neues_dock_mit_default_area_an` | Prüft, dass ein neues Dock mit der Standard-Area (DockAreaRight) angezeigt wird. | grün | nie geprüft |
| `DockManagerShowTests.test_fehler_beim_entfernen_wird_als_warnung_gemeldet` | Prüft, dass ein Fehler beim Entfernen alter Docks nur gewarnt und das neue Dock trotzdem angezeigt wird. | grün | nie geprüft |
| `DockManagerShowTests.test_fehler_beim_anzeigen_wird_gemeldet` | Prüft, dass ein Fehler beim Anzeigen des Docks als Fehler gemeldet wird. | grün | nie geprüft |
| `ImportXlsxTests.test_erfolgreicher_import_liefert_zeilen_als_dicts` | Prüft, dass eine gültige Excel-Datei als Liste von Dicts mit den Header-Spalten geliefert wird. | grün | nie geprüft |
| `ImportXlsxTests.test_fehlende_datei_liefert_leere_liste` | Prüft, dass eine nicht vorhandene Datei eine leere Liste liefert, statt eine Ausnahme zu werfen. | grün | nie geprüft |
| `ImportXlsxTests.test_arbeitsblatt_ohne_header_liefert_leere_liste_und_meldet_kein_header` | Prüft, dass ein leeres Arbeitsblatt ohne Header-Zeile 'kein_header' meldet und eine leere Liste liefert. | grün | nie geprüft |
| `ImportXlsxTests.test_header_zeile_nur_leere_werte_liefert_kein_header` | Prüft, dass eine Header-Zeile aus ausschließlich leeren Zellen ebenfalls als 'kein_header' gilt. | grün | nie geprüft |
| `ImportXlsxTests.test_nicht_lesbare_datei_liefert_leere_liste_und_meldet_read_error` | Prüft, dass eine Datei mit ungültigem Excel-Inhalt 'read_error' meldet und eine leere Liste liefert. | grün | nie geprüft |
| `ExcelImporterKonstruktorTests.test_ohne_dateipfad_wirft_valueerror` | Prüft, dass ExcelImporter ohne Dateipfad einen ValueError wirft. | grün | nie geprüft |
| `ExcelImporterKonstruktorTests.test_ohne_pruefmanager_wirft_valueerror` | Prüft, dass ExcelImporter ohne Pruefmanager einen ValueError wirft. | 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 | geprüft am 2026-09-17 |
| `TestGetLaenderkennung.test_praefix_gross_klein_unabhaengig` | Prüft, dass die Präfixsuche groß-/kleinschreibungsunabhängig ist. | grün | geprüft am 2026-09-17 |
| `TestGetLaenderkennung.test_unbekannter_praefix_wirft_keyerror` | Prüft, dass ein unbekannter Präfix einen KeyError auslöst. | grün | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `TestGetLaenderkennung.test_mapping_enthaelt_sachsen` | Prüft, dass die Mapping-Tabelle LAENDERKENNUNGEN einen Eintrag für Sachsen ('sn' -> '14') enthält. | grün | geprüft am 2026-09-17 |
| `LadeLandkreiseTests.test_laedt_die_echte_landkreisliste_nicht_leer` | Prüft, dass _lade_landkreise die echte landkreise.json als nicht-leere Liste von (Kennzahl, Name)-Tupeln liefert. | grün | nie geprüft |
| `LadeLandkreiseTests.test_fehlende_datei_liefert_leere_liste` | Prüft, dass eine nicht lesbare Datenquelle eine leere Liste liefert, statt eine Ausnahme zu werfen. | grün | nie geprüft |
| `CreateLayerTests.test_wfs_baut_uri_ohne_getfeature_parameter` | Prüft, dass für WFS die GetFeature-spezifischen Parameter aus der URI entfernt werden. | grün | nie geprüft |
| `CreateLayerTests.test_wfs_mit_url_praefix_wird_nicht_doppelt_gesetzt` | Prüft, dass ein bereits vorhandenes 'url='-Präfix im WFS-Link nicht verdoppelt wird. | grün | nie geprüft |
| `CreateLayerTests.test_wms_baut_url_praefix_und_nutzt_rasterlayer` | Prüft, dass WMS-Layer über QgsRasterLayer mit 'url='-Präfix erzeugt werden. | grün | nie geprüft |
| `CreateLayerTests.test_rest_featureserver_ergaenzt_layer_index` | Prüft, dass ein REST-Link auf '.../FeatureServer' automatisch um '/0' ergänzt wird. | grün | nie geprüft |
| `CreateLayerTests.test_ogr_provider_nutzt_link_direkt` | Prüft, dass ein OGR-Provider den Link unverändert an QgsVectorLayer übergibt. | grün | nie geprüft |
| `CreateLayerTests.test_ungueltiger_layer_meldet_layer_nicht_verfuegbar` | Prüft, dass ein ungültig erzeugter Layer als 'layer_nicht_verfuegbar' gemeldet wird und None liefert. | grün | nie geprüft |
| `CreateLayerTests.test_ausnahme_beim_erstellen_wird_abgefangen` | Prüft, dass eine Ausnahme beim Layer-Erstellen abgefangen und als Fehlerergebnis gemeldet wird. | grün | nie geprüft |
| `TransformGeometryTests.test_fehlender_layer_liefert_geometrie_unveraendert` | Prüft, dass ohne Quell- oder Ziel-Layer die Geometrie unverändert zurückgegeben wird. | grün | nie geprüft |
| `TransformGeometryTests.test_gleiche_crs_liefert_geometrie_unveraendert` | Prüft, dass bei identischem CRS von Quelle und Ziel keine Transformation stattfindet. | grün | nie geprüft |
| `TransformGeometryTests.test_unterschiedliche_crs_klont_und_transformiert_geometrie` | Prüft, dass bei unterschiedlichem CRS eine geklonte, transformierte Geometrie geliefert wird. | grün | nie geprüft |
| `TransformExtentTests.test_gleiche_crs_liefert_extent_unveraendert` | Prüft, dass bei identischem CRS von Quelle und Ziel der Extent unverändert bleibt. | grün | nie geprüft |
| `TransformExtentTests.test_unterschiedliche_crs_nutzt_coordinate_transform` | Prüft, dass bei unterschiedlichem CRS der Extent über QgsCoordinateTransform umgerechnet wird. | grün | nie geprüft |
| `FilterByExtentTests.test_ungueltiger_layer_wird_unveraendert_zurueckgegeben` | Prüft, dass ein ungültiger Layer von filter_by_extent unverändert zurückgegeben wird. | grün | nie geprüft |
| `FilterByExtentTests.test_ohne_extent_wird_layer_unveraendert_zurueckgegeben` | Prüft, dass ohne Extent (None) der Layer unverändert zurückgegeben wird. | grün | nie geprüft |
| `FilterByExtentTests.test_falscher_layertyp_wird_unveraendert_zurueckgegeben` | Prüft, dass ein Nicht-Vektor-Layer (z. B. Rasterlayer) unverändert zurückgegeben wird. | grün | nie geprüft |
| `FilterByExtentTests.test_keine_treffer_liefert_none` | Prüft, dass ein Raumfilter ohne Treffer None statt eines leeren Layers liefert. | grün | nie geprüft |
| `FilterByExtentTests.test_abbruch_liefert_none_und_meldet_needs_user_action` | Prüft, dass ein Abbruch während des Raumfilters None liefert und gemeldet wird. | grün | nie geprüft |
| `FilterByExtentTests.test_erfolgreicher_filter_liefert_neuen_layer_mit_features` | Prüft, dass ein erfolgreicher BBOX-Filter einen neuen Speicherlayer mit den gefundenen Features liefert. | grün | nie geprüft |
| `FilterByLayerTests.test_ungueltiger_layer_oder_filterlayer_wird_unveraendert_zurueckgegeben` | Prüft, dass ein ungültiger Haupt- oder Filter-Layer unverändert zurückgegeben wird. | grün | nie geprüft |
| `FilterByLayerTests.test_filterlayer_ohne_features_liefert_none` | Prüft, dass ein Filter-Layer ohne Features (leere Vereinigungsgeometrie) None liefert. | grün | nie geprüft |
| `FilterByLayerTests.test_erfolgreicher_geometriefilter_liefert_neuen_layer` | Prüft, dass ein erfolgreicher Geometriefilter einen neuen Speicherlayer mit den passenden Features liefert. | grün | nie geprüft |
| `FilterByLayerTests.test_keine_ueberschneidung_liefert_none` | Prüft, dass ohne überschneidende Features None statt eines leeren Layers geliefert wird. | grün | nie geprüft |
| `AddToProjectTests.test_gueltiger_layer_wird_dem_projekt_hinzugefuegt` | Prüft, dass ein gültiger Layer über QgsProject.instance().addMapLayer hinzugefügt wird. | grün | nie geprüft |
| `AddToProjectTests.test_ungueltiger_layer_wird_nicht_hinzugefuegt` | Prüft, dass ein ungültiger Layer nicht ans Projekt übergeben wird. | grün | nie geprüft |
| `AddToProjectTests.test_none_layer_wird_nicht_hinzugefuegt` | Prüft, dass ein fehlender Layer (None) nicht ans Projekt übergeben wird. | grün | nie geprüft |
| `TestLayerpruefer.test_layer_exists` | Prüft, dass ein nicht vorhandener Layer als 'layer_nicht_gefunden' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLayerpruefer.test_layer_unsichtbar` | Prüft, dass ein unsichtbarer Layer bei geforderter Sichtbarkeit als 'layer_unsichtbar' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLayerpruefer.test_falscher_layertyp` | Prüft, dass ein Layer mit abweichendem Layertyp (Raster statt Vektor) als 'falscher_layertyp' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLayerpruefer.test_falscher_geotyp` | Prüft, dass ein Layer mit abweichendem Geometrietyp (Punkt statt Polygon) als 'falscher_geotyp' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLayerpruefer.test_layer_leer` | Prüft, dass ein Layer ohne Features als 'layer_leer' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLayerpruefer.test_falsches_crs` | Prüft, dass ein Layer mit abweichendem Koordinatenbezugssystem als 'falsches_crs' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLayerpruefer.test_felder_fehlen` | Prüft, dass ein Layer mit fehlenden Pflichtfeldern als 'felder_fehlen' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLayerpruefer.test_datenquelle_unerwartet` | Prüft, dass eine Datenquelle außerhalb der erlaubten Liste als 'datenquelle_unerwartet' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLayerpruefer.test_layer_nicht_editierbar` | Prüft, dass ein nicht editierbarer Layer bei geforderter Editierbarkeit als 'layer_nicht_editierbar' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLayerpruefer.test_layer_ok` | Prüft, dass ein Layer, der alle Anforderungen erfüllt, als 'ok' bestätigt wird. | grün | geprüft am 2026-09-17 |
| `TestLinkpruefer.test_leere_eingabe` | Prüft, dass eine leere Eingabe ohne Netzwerk-/Dateizugriff als 'leer' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLinkpruefer.test_remote_link_ok` | Prüft, dass eine erreichbare Remote-URL (HTTP HEAD ohne Fehler) als 'ok' bestätigt wird. | grün | geprüft am 2026-09-17 |
| `TestLinkpruefer.test_remote_link_error` | Prüft, dass eine Remote-URL mit Fehlerantwort als 'url_nicht_erreichbar' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLinkpruefer.test_remote_link_network_error` | Prüft, dass eine ausbleibende Netzwerkantwort (None) als 'netzwerkfehler' gemeldet wird. | grün | geprüft am 2026-09-17 |
| `TestLinkpruefer.test_local_link_not_found` | Prüft, dass ein nicht existierender lokaler Pfad als 'pfad_nicht_gefunden' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestLinkpruefer.test_local_link_ok` | Prüft, dass ein existierender lokaler Pfad als 'ok' bestätigt wird. | grün | geprüft am 2026-09-17 |
| `LayerIsValidTests.test_none_ist_nicht_gueltig` | Prüft, dass layer_is_valid für None False liefert. | grün | nie geprüft |
| `LayerIsValidTests.test_objekt_ohne_isvalid_ist_nicht_gueltig` | Prüft, dass ein Objekt ohne isValid()-Methode als ungültig gilt. | grün | nie geprüft |
| `LayerIsValidTests.test_gueltiger_layer_liefert_true` | Prüft, dass ein Layer mit isValid()==True als gültig erkannt wird. | grün | nie geprüft |
| `LayerIsValidTests.test_ungueltiger_layer_liefert_false` | Prüft, dass ein Layer mit isValid()==False als ungültig erkannt wird. | grün | nie geprüft |
| `LayerIsValidTests.test_ausnahme_bei_isvalid_liefert_false` | Prüft, dass eine Ausnahme in isValid() abgefangen wird und False liefert. | grün | nie geprüft |
| `LayerIsUsableTests.test_none_ist_nicht_nutzbar` | Prüft, dass layer_is_usable für None False liefert. | grün | nie geprüft |
| `LayerIsUsableTests.test_gueltiger_layer_ist_nutzbar` | Prüft, dass ein vorhandener, gültiger Layer als nutzbar gilt. | grün | nie geprüft |
| `LayerIsUsableTests.test_ungueltiger_layer_ist_nicht_nutzbar` | Prüft, dass ein vorhandener, aber ungültiger Layer als nicht nutzbar gilt. | grün | nie geprüft |
| `ApplyStyleFromPathTests.test_fehlender_layer_liefert_false` | Prüft, dass ein fehlender Layer (None) False liefert, ohne einen Stil zu laden. | grün | nie geprüft |
| `ApplyStyleFromPathTests.test_erfolgreiches_laden_liefert_true_und_triggert_repaint` | Prüft, dass ein erfolgreich geladener Stil True liefert und den Layer neu zeichnet. | grün | nie geprüft |
| `ApplyStyleFromPathTests.test_fehlgeschlagenes_laden_liefert_false_ohne_repaint` | Prüft, dass ein fehlgeschlagenes Laden False liefert, ohne den Layer neu zu zeichnen. | grün | nie geprüft |
| `ApplyStyleFromPathTests.test_ausnahme_beim_laden_wird_abgefangen` | Prüft, dass eine Ausnahme beim Laden des Stils abgefangen wird und False liefert. | grün | nie geprüft |
| `GetMessageBarTests.test_liefert_objekt_mit_pushmessage_methode` | Prüft, dass _get_message_bar ein Objekt mit aufrufbarer pushMessage()-Methode liefert. | grün | nie geprüft |
| `GetMessageBarTests.test_faellt_bei_fehlerhaftem_iface_auf_mock_bar_zurueck` | Prüft, dass ein Fehler beim Zugriff auf iface.messageBar() auf eine funktionierende Mock-MessageBar zurückfällt. | grün | nie geprüft |
| `PushMessageTests.test_liefert_dict_mit_titel_text_level_und_dauer` | Prüft, dass push_message im Mock-Modus ein Dict mit den übergebenen Werten liefert. | grün | nie geprüft |
| `PushMessageTests.test_fehler_in_der_message_bar_wird_abgefangen` | Prüft, dass eine fehlschlagende MessageBar push_message nicht zum Absturz bringt, sondern None liefert. | grün | nie geprüft |
| `AddActionTests.test_ohne_plugin_group_liefert_none` | Prüft, dass add_action ohne initialisierte Aktionsgruppe None liefert und nichts anlegt. | grün | nie geprüft |
| `AddActionTests.test_erzeugt_action_und_fuegt_sie_gruppe_und_liste_hinzu` | Prüft, dass add_action eine Action erzeugt, ihr die Gruppe zuweist und sie priorisiert in der Liste ablegt. | grün | nie geprüft |
| `FinalizeMenuAndToolbarTests.test_ohne_menu_oder_toolbar_tut_nichts` | Prüft, dass finalize_menu_and_toolbar ohne Menü oder Toolbar keine Ausnahme wirft. | grün | nie geprüft |
| `FinalizeMenuAndToolbarTests.test_sortiert_und_fuegt_aktionen_in_prioritaetsreihenfolge_hinzu` | Prüft, dass finalize_menu_and_toolbar Aktionen nach Priorität sortiert in Menü und Toolbar einträgt. | grün | nie geprüft |
| `SetActivePluginTests.test_setzt_nur_aktive_action_auf_checked` | Prüft, dass set_active_plugin nur die übergebene Action markiert, alle anderen abwählt. | grün | nie geprüft |
| `SetActivePluginTests.test_ohne_aktive_action_setzt_alle_auf_false` | Prüft, dass set_active_plugin ohne aktive Action alle bestehenden Actions abwählt. | grün | nie geprüft |
| `RemoveActionTests.test_none_action_tut_nichts` | Prüft, dass remove_action mit None keine Ausnahme wirft und die Liste unverändert lässt. | grün | nie geprüft |
| `RemoveActionTests.test_entfernt_action_aus_menu_toolbar_und_liste` | Prüft, dass remove_action die Action aus Menü, Toolbar und der internen Liste entfernt. | grün | nie geprüft |
| `RemoveActionTests.test_ohne_menu_oder_toolbar_entfernt_trotzdem_aus_liste` | Prüft, dass remove_action ohne Menü/Toolbar trotzdem aus der internen Liste entfernt. | grün | nie geprüft |
| `RemoveAllTests.test_entfernt_menu_toolbar_und_setzt_zustand_zurueck` | Prüft, dass remove_all Menü und Toolbar über die Wrapper entfernt und den Navigationszustand zurücksetzt. | grün | nie geprüft |
| `RemoveAllTests.test_ohne_menu_und_toolbar_ruft_wrapper_nicht_auf` | Prüft, dass remove_all ohne vorhandenes Menü/Toolbar die Wrapper nicht aufruft, aber die Liste leert. | grün | nie geprüft |
### `Plugin_SN_Basis/tests/test_os_wrapper.py`
Worum es in der Datei geht: Tests für sn_basis/functions/os_wrapper.py::is_case_sensitive_fs (Issue #67).
| `IsCaseSensitiveFsTests.test_windows_ist_nicht_case_sensitiv` | Prüft, dass Windows als nicht case-sensitives Dateisystem gilt. | grün | nie geprüft |
| `IsCaseSensitiveFsTests.test_macos_ist_nicht_case_sensitiv` | Prüft, dass macOS als nicht case-sensitives Dateisystem gilt. | grün | nie geprüft |
| `IsCaseSensitiveFsTests.test_linux_ist_case_sensitiv` | Prüft, dass Linux als case-sensitives Dateisystem gilt. | 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 |
| `SetServicesTests.test_ruft_alle_set_methoden_mit_combo_werten_auf` | Prüft, dass set_services alle set_*-Methoden von PrintLogic mit den aktuellen Combo-Werten aufruft. | grün | nie geprüft |
| `SetServicesTests.test_ohne_combos_ruft_keine_set_methode_auf` | Prüft, dass set_services ohne vorhandene Combos keine set_*-Methode von PrintLogic aufruft. | grün | nie geprüft |
| `RestoreStateTests.test_gueltige_gespeicherte_werte_werden_uebernommen` | Prüft, dass _restore_state gültige gespeicherte Werte in die jeweiligen Widgets übernimmt. | grün | nie geprüft |
| `RestoreStateTests.test_ungueltige_oder_fehlende_werte_fallen_auf_defaults_zurueck` | Prüft, dass _restore_state ohne (gültige) gespeicherte Werte auf die Default-Konstanten zurückfällt. | grün | nie geprüft |
| `OnDruckpufferClickedTests.test_gueltige_zahl_setzt_variable_und_button_text` | Prüft, dass eine bestätigte, gültige Zahl den Druckpuffer speichert und den Button-Text aktualisiert. | grün | nie geprüft |
| `OnDruckpufferClickedTests.test_abgebrochen_aendert_nichts` | Prüft, dass ein abgebrochener Dialog den Druckpuffer nicht verändert. | grün | nie geprüft |
| `OnDruckpufferClickedTests.test_ungueltige_zahl_zeigt_hinweis_und_setzt_nichts` | Prüft, dass eine nicht-numerische Eingabe einen Hinweis zeigt und den Druckpuffer nicht setzt. | grün | nie geprüft |
| `OnVorlageErstellenTests.test_ruft_druckvorlage_anlegen_mit_combo_werten_auf` | Prüft, dass _on_vorlage_erstellen druckvorlage_anlegen mit den aktuellen Combo-Werten aufruft. | grün | nie geprüft |
| `OnVorlageErstellenTests.test_ohne_logic_tut_nichts` | Prüft, dass _on_vorlage_erstellen ohne gesetzte PrintLogic keine Ausnahme wirft. | grün | nie geprüft |
| `ProjectSignalsTests.test_connect_verbindet_alle_drei_signale` | Prüft, dass _connect_project_signals alle drei Projektsignale mit _on_project_changed verbindet. | grün | nie geprüft |
| `ProjectSignalsTests.test_disconnect_trennt_alle_drei_signale` | Prüft, dass _disconnect_project_signals alle drei zuvor verbundenen Projektsignale trennt. | grün | nie geprüft |
| `ProjectSignalsTests.test_instance_wirft_ausnahme_wird_abgefangen` | Prüft, dass eine Ausnahme bei QgsProject.instance() in beiden Signalmethoden abgefangen wird. | grün | nie geprüft |
| `CleanupTests.test_ruft_beide_disconnect_methoden_auf` | Prüft, dass cleanup sowohl die Theme- als auch die Projektsignale trennt. | grün | nie geprüft |
| `ToggleAtlasTests.test_checked_true_setzt_arrow_down_und_zeigt_inhalt` | Prüft, dass _toggle_atlas bei checked=True den Pfeil nach unten dreht und den Inhalt einblendet. | grün | nie geprüft |
| `ToggleAtlasTests.test_checked_false_setzt_arrow_right_und_versteckt_inhalt` | Prüft, dass _toggle_atlas bei checked=False den Pfeil nach rechts dreht und den Inhalt ausblendet. | grün | nie geprüft |
| `RestoreAtlasLayerSelectionTests.test_vorhandene_layer_id_setzt_layer_in_combo` | Prüft, dass eine gespeicherte Layer-ID den zugehörigen Layer im Atlas-Dropdown auswählt. | grün | nie geprüft |
| `RestoreAtlasLayerSelectionTests.test_leere_gespeicherte_layer_id_tut_nichts` | Prüft, dass eine leere gespeicherte Layer-ID das Projekt gar nicht erst anfragt. | grün | nie geprüft |
| `ThemeCollectionSignalsTests.test_connect_verbindet_alle_signale` | Prüft, dass _connect_theme_collection_signals alle Signale der Theme-Collection verbindet. | grün | nie geprüft |
| `ThemeCollectionSignalsTests.test_connect_ist_idempotent_wenn_schon_verbunden` | Prüft, dass _connect_theme_collection_signals bei bereits verbundenem Signal nichts erneut tut. | grün | nie geprüft |
| `ThemeCollectionSignalsTests.test_disconnect_trennt_alle_signale` | Prüft, dass _disconnect_theme_collection_signals alle verbundenen Theme-Signale trennt und zurücksetzt. | grün | nie geprüft |
| `RefreshThemaComboLiveTests.test_erhaelt_vorherige_auswahl_wenn_noch_vorhanden` | Prüft, dass _refresh_thema_combo_live die vorherige Auswahl beibehält, wenn sie noch existiert. | grün | nie geprüft |
| `RefreshThemaComboLiveTests.test_faellt_auf_wie_kartenfenster_zurueck_wenn_auswahl_verschwunden` | Prüft, dass _refresh_thema_combo_live auf 'wie Kartenfenster' zurückfällt, wenn die Auswahl verschwunden ist. | grün | nie geprüft |
| `GetGespeicherteThemenTests.test_dedupliziert_und_filtert_leere_eintraege` | Prüft, dass _get_gespeicherte_themen Duplikate und leere/None-Einträge entfernt. | grün | nie geprüft |
| `GetGespeicherteThemenTests.test_fehler_liefert_leere_liste` | Prüft, dass ein Fehler beim Zugriff auf die Theme-Collection eine leere Liste liefert. | grün | nie geprüft |
| `GetCurrentCanvasScaleTests.test_liefert_skalierung_als_float` | Prüft, dass _get_current_canvas_scale die Canvas-Skalierung als float liefert. | grün | nie geprüft |
| `GetCurrentCanvasScaleTests.test_ohne_canvas_liefert_none` | Prüft, dass _get_current_canvas_scale ohne verfügbares Kartenfenster None liefert. | grün | nie geprüft |
| `GetCurrentCanvasScaleTests.test_skalierung_null_liefert_none` | Prüft, dass eine Skalierung von 0 als None statt als 0.0 gilt. | grün | nie geprüft |
| `OnAtlasLayerChangedTests.test_none_oder_leer_setzt_variable_leer` | Prüft, dass None oder ein leerer Wert die Abdeckungslayer-Variable leeren. | grün | nie geprüft |
| `OnAtlasLayerChangedTests.test_layer_objekt_mit_id_methode_setzt_dessen_id` | Prüft, dass ein echtes Layer-Objekt (mit id()-Methode) dessen ID speichert. | grün | nie geprüft |
| `OnAtlasLayerChangedTests.test_string_fallback_sucht_layer_ueber_namen` | Prüft, dass ohne id()-Methode über den Layernamen im Projekt gesucht und dessen ID gespeichert wird. | grün | nie geprüft |
| `OnAuswahlAsAtlasClickedTests.test_erfolgreicher_layer_aktualisiert_atlas_ui` | Prüft, dass ein erfolgreich erzeugter Atlas-Layer den Atlas-Bereich öffnet und ins Dropdown übernimmt. | grün | nie geprüft |
| `OnAuswahlAsAtlasClickedTests.test_ohne_erzeugten_layer_tut_nichts_weiter` | Prüft, dass ohne erzeugten Atlas-Layer keine UI-Aktualisierung stattfindet. | grün | nie geprüft |
| `PopulateAtlasLayerComboTests.test_befuellt_combo_ohne_druckrechteck_und_leere_namen` | Prüft, dass _populate_atlas_layer_combo alle Layernamen außer 'Druckrechteck' und leeren Namen einträgt. | grün | nie geprüft |
| `PopulateAtlasLayerComboTests.test_ohne_atlas_layer_combo_tut_nichts` | Prüft, dass _populate_atlas_layer_combo ohne Atlas-Dropdown keine Ausnahme wirft. | grün | nie geprüft |
| `OnAtlasErzeugenChangedTests.test_aktiviert_speichert_variable_und_aktiviert_widgets` | Prüft, dass ein aktivierter Atlas-Schalter die Variable setzt und Layer-Combo/Button aktiviert. | grün | nie geprüft |
| `OnAtlasErzeugenChangedTests.test_deaktiviert_speichert_variable_und_deaktiviert_widgets` | Prüft, dass ein deaktivierter Atlas-Schalter die Variable setzt und Layer-Combo/Button deaktiviert. | grün | nie geprüft |
| `OnAtlasErzeugenChangedTests.test_ohne_widgets_wirft_keine_ausnahme` | Prüft, dass _on_atlas_erzeugen_changed ohne Atlas-Combo/-Button keine Ausnahme wirft. | grün | nie geprüft |
| `IstVerfahrensDbAktionTests.test_liefert_true_fuer_alle_verfahrens_db_aktionen` | Prüft, dass ist_verfahrens_db_aktion für alle vier Verfahrens-DB-Aktionscodes True liefert. | grün | nie geprüft |
| `IstVerfahrensDbAktionTests.test_liefert_false_fuer_andere_aktionen` | Prüft, dass ist_verfahrens_db_aktion für Nicht-Verfahrens-DB-Aktionen und ohne Aktion False liefert. | grün | nie geprüft |
| `ErlaubtePersistierungTests.test_liefert_true_fuer_erzeugen_ueberschreiben_anhaengen` | Prüft, dass erlaubte_persistierung für Erzeugen/Überschreiben/Anhängen True liefert. | grün | nie geprüft |
| `ErlaubtePersistierungTests.test_liefert_false_fuer_ueberspringen_und_reines_existieren` | Prüft, dass erlaubte_persistierung bei Überspringen und reinem 'datei_existiert' False liefert. | grün | nie geprüft |
| `DateipfadTests.test_liefert_path_wenn_kontext_ein_path_ist` | Prüft, dass dateipfad den Kontext liefert, wenn dieser bereits ein Path-Objekt ist. | grün | nie geprüft |
| `DateipfadTests.test_liefert_none_wenn_kontext_kein_path_ist` | Prüft, dass dateipfad None liefert, wenn der Kontext kein Path-Objekt ist (z. B. String oder Layer). | grün | nie geprüft |
| `TestPruefmanager.test_ok` | Prüft, dass ein bereits erfolgreiches Prüfergebnis ohne Nutzerinteraktion als 'ok' durchgereicht wird. | grün | geprüft am 2026-09-17 |
| `TestPruefmanager.test_leereingabe_erlaubt_ja` | Prüft, dass bei erlaubter leerer Eingabe eine Ja-Antwort des Nutzers die Entscheidung 'ok' liefert. | grün | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `TestPruefmanager.test_unbekannte_aktion` | Prüft, dass eine unbekannte Aktion eine Warnung auslöst und unverarbeitet als Fehlschlag zurückgegeben wird. | grün | geprüft am 2026-09-17 |
| `TestPruefmanager.test_datei_existiert_overwrite` | Prüft, dass die Nutzerwahl 'überschreiben' bei bestehender Datei zur Aktion 'datei_existiert_ueberschreiben' führt. | grün | geprüft am 2026-09-17 |
| `TestPruefmanager.test_datei_existiert_append` | Prüft, dass die Nutzerwahl 'anhängen' bei bestehender Datei zur Aktion 'datei_existiert_anhaengen' führt. | grün | geprüft am 2026-09-17 |
| `TestPruefmanager.test_datei_existiert_cancel` | Prüft, dass die Nutzerwahl 'abbrechen' bei bestehender Datei zur Aktion 'datei_existiert_ueberspringen' führt. | grün | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `TestPruefmanager.test_verfahrensgebiet_layer_existiert_ergaenzen` | Prüft, dass die Nutzerwahl 'ergänzen' bei bestehendem Verfahrensgebiet zur Aktion 'verfahrensgebiet_ergaenzen' führt. | grün | nie geprüft |
| `TestPruefmanager.test_verfahrensgebiet_layer_existiert_abbrechen` | Prüft, dass die Nutzerwahl 'abbrechen' bei bestehendem Verfahrensgebiet ok=False mit Aktion 'verfahrensgebiet_abbrechen' liefert. | grün | nie geprüft |
| `TestPruefmanager.test_verfahrensgebiet_layer_existiert_in_non_qgis_mode_returns_input` | Prüft, dass außerhalb des QGIS-Modus bei bestehendem Verfahrensgebiet keine Rückfrage erfolgt. | grün | nie geprüft |
| `TestPruefmanager.test_report_error_kritische_aktion_ruft_error_auf` | Prüft, dass eine kritische Aktion (z. B. 'netzwerkfehler') über error() gemeldet wird, nicht über warning(). | grün | nie geprüft |
| `TestPruefmanager.test_report_error_warn_aktion_ruft_warning_auf` | Prüft, dass eine Warn-Aktion (z. B. 'datei_nicht_gefunden') über warning() gemeldet wird, nicht über error(). | grün | nie geprüft |
| `TestPruefmanager.test_report_error_unbekannte_aktion_faellt_auf_warning_zurueck` | Prüft, dass eine nicht eingestufte Aktion als Fallback über warning() gemeldet wird. | grün | nie geprüft |
| `TestPruefmanager.test_frage_ja_nein_im_qgis_modus_fragt_nutzer` | Prüft, dass frage_ja_nein im QGIS-Modus den Nutzer fragt und dessen Antwort liefert. | grün | nie geprüft |
| `TestPruefmanager.test_frage_ja_nein_ausserhalb_qgis_liefert_default_ohne_rueckfrage` | Prüft, dass frage_ja_nein außerhalb des QGIS-Modus den Default-Wert liefert, ohne den Nutzer zu fragen. | grün | nie geprüft |
| `TestPruefmanager.test_frage_text_im_qgis_modus_fragt_nutzer` | Prüft, dass frage_text im QGIS-Modus den Nutzer fragt und Text plus OK-Status liefert. | grün | nie geprüft |
| `TestPruefmanager.test_frage_text_ausserhalb_qgis_liefert_default_ohne_rueckfrage` | Prüft, dass frage_text außerhalb des QGIS-Modus den Standardtext mit OK=True liefert, ohne den Nutzer zu fragen. | grün | nie geprüft |
Worum es in der Datei geht: Tests für sn_basis/functions/qgiscore_wrapper.py::polygon_zu_linie/layer_exists_in_gpkg/create_buffer_layer (Issue #65/#67).
| `PolygonZuLinieTests.test_none_liefert_none` | Prüft, dass polygon_zu_linie für None-Eingabe None liefert. | grün | nie geprüft |
| `PolygonZuLinieTests.test_leere_geometrie_liefert_none` | Prüft, dass eine leere Geometrie None liefert. | grün | nie geprüft |
| `PolygonZuLinieTests.test_stufe1_nutzt_boundary_wenn_vorhanden` | Prüft, dass eine Geometrie mit boundary() (QGIS 3.x-Pfad) deren Ergebnis direkt liefert. | grün | nie geprüft |
| `PolygonZuLinieTests.test_stufe2_extrahiert_ringe_bei_einfachem_polygon` | Prüft, dass ohne boundary() die Ringe eines einfachen Polygons manuell extrahiert werden. | grün | nie geprüft |
| `PolygonZuLinieTests.test_stufe2_extrahiert_alle_ringe_bei_multipolygon` | Prüft, dass bei einem MultiPolygon die Ringe aller Teilpolygone extrahiert werden. | grün | nie geprüft |
| `PolygonZuLinieTests.test_stufe3_fallback_wenn_keine_ringe_extrahierbar` | Prüft, dass bei fehlgeschlagener Ringextraktion auf convertToType zurückgefallen wird. | grün | nie geprüft |
| `PolygonZuLinieTests.test_alle_stufen_scheitern_liefert_none` | Prüft, dass polygon_zu_linie None liefert, wenn Ringextraktion und convertToType beide scheitern. | grün | nie geprüft |
| `LayerExistsInGpkgTests.test_fehlende_datei_liefert_false` | Prüft, dass eine nicht vorhandene GPKG-Datei False liefert. | grün | nie geprüft |
| `LayerExistsInGpkgTests.test_leerer_pfad_oder_layername_liefert_false` | Prüft, dass ein leerer Pfad oder Layername False liefert. | grün | nie geprüft |
| `LayerExistsInGpkgTests.test_vorhandener_layer_liefert_true` | Prüft, dass ein in gpkg_contents eingetragener Layername als vorhanden erkannt wird. | grün | nie geprüft |
| `LayerExistsInGpkgTests.test_fehlender_layer_liefert_false` | Prüft, dass ein nicht in gpkg_contents eingetragener Layername als nicht vorhanden gilt. | grün | nie geprüft |
| `CreateBufferLayerTests.test_ohne_qgis_liefert_none` | Prüft, dass create_buffer_layer ohne verfügbares QGIS None liefert. | grün | nie geprüft |
| `CreateBufferLayerTests.test_fehlender_source_layer_liefert_none` | Prüft, dass ein fehlender Quelllayer (None) None liefert, auch wenn QGIS verfügbar wäre. | grün | nie geprüft |
| `CreateBufferLayerTests.test_source_layer_ohne_getfeatures_liefert_none` | Prüft, dass ein Quelllayer ohne getFeatures()-Methode None liefert. | grün | nie geprüft |
Worum es in der Datei geht: Tests für sn_basis/functions/qgisui_wrapper.py::add_layer_to_project/find_dock_widgets/add_menu/remove_menu (Issue #65/#67).
| `AddLayerToProjectTests.test_none_layer_liefert_false` | Prüft, dass add_layer_to_project für einen fehlenden Layer (None) False liefert. | grün | nie geprüft |
| `AddLayerToProjectTests.test_mock_modus_liefert_true_ohne_projektzugriff` | Prüft, dass im Mock-Modus (ohne QGIS) ein gültiger Layer True liefert, ohne das Projekt anzufassen. | grün | nie geprüft |
| `AddLayerToProjectTests.test_mit_qgis_fuegt_layer_dem_projekt_hinzu` | Prüft, dass bei verfügbarem QGIS der Layer über QgsProject.instance().addMapLayer hinzugefügt wird. | grün | nie geprüft |
| `AddLayerToProjectTests.test_mit_qgis_fehler_liefert_false` | Prüft, dass ein Fehler beim Hinzufügen zum Projekt abgefangen wird und False liefert. | grün | nie geprüft |
| `FindDockWidgetsTests.test_ohne_main_window_liefert_leere_liste` | Prüft, dass find_dock_widgets ohne verfügbares Hauptfenster eine leere Liste liefert. | grün | nie geprüft |
| `FindDockWidgetsTests.test_liefert_dock_widgets_des_main_window` | Prüft, dass find_dock_widgets die vom Hauptfenster gefundenen Dock-Widgets durchreicht. | grün | nie geprüft |
| `FindDockWidgetsTests.test_fehler_beim_suchen_liefert_leere_liste` | Prüft, dass ein Fehler beim Suchen der Dock-Widgets abgefangen wird und eine leere Liste liefert. | grün | nie geprüft |
| `AddRemoveMenuTests.test_add_menu_ohne_main_window_tut_nichts` | Prüft, dass add_menu ohne Hauptfenster keine Ausnahme wirft. | grün | nie geprüft |
| `AddRemoveMenuTests.test_add_menu_mit_echtem_qt_menu_fuegt_es_der_menubar_hinzu` | Prüft, dass ein echtes Qt-Menü (mit menuAction) der Menüleiste hinzugefügt wird. | grün | nie geprüft |
| `AddRemoveMenuTests.test_add_menu_ohne_menuaction_wird_ignoriert` | Prüft, dass ein Objekt ohne menuAction nicht an die Menüleiste übergeben wird. | grün | nie geprüft |
| `AddRemoveMenuTests.test_remove_menu_entfernt_ueber_menuaction` | Prüft, dass remove_menu das Menü über dessen menuAction() aus der Menüleiste entfernt. | grün | nie geprüft |
| `AddRemoveMenuTests.test_remove_menu_ohne_main_window_tut_nichts` | Prüft, dass remove_menu ohne Hauptfenster keine Ausnahme wirft. | grün | nie geprüft |
| `TestSettingsLogic.test_load` | Prüft, dass load() jede bekannte Projektvariable genau einmal über get_variable() liest. | grün | geprüft am 2026-09-17 |
| `TestSettingsLogic.test_save` | Prüft, dass save() nur bekannte Variablen-Keys speichert und unbekannte Keys ignoriert. | grün | geprüft am 2026-09-17 |
| `TestSettingsLogic.test_load_handles_partial_values_with_empty_fallback` | Prüft, dass load() für jede Variable den (auch leeren) Wert von get_variable() unverändert übernimmt, selbst wenn nicht alle Variablen im Mock konfiguriert sind. | grün | geprüft am 2026-09-17 |
| `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 | geprüft am 2026-09-17 |
| `SaveDataTests.test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl` | Prüft, dass save_data Text- und Dropdown-Werte sammelt und die Landkreiskennzahl separat ergänzt. | grün | nie geprüft |
| `SaveDataTests.test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt` | Prüft, dass ohne Landkreis-Dropdown im Formular keine 'landkreis_kennzahl' ergänzt wird. | grün | nie geprüft |
| `LoadDataTests.test_befuellt_textfelder_aus_gespeicherten_daten` | Prüft, dass load_data ein Textfeld mit dem gespeicherten Wert befüllt. | grün | nie geprüft |
| `LoadDataTests.test_ohne_gespeicherten_wert_bleibt_textfeld_leer` | Prüft, dass load_data ohne gespeicherten Wert das Textfeld auf einen leeren Text setzt. | grün | nie geprüft |
| `LoadDataTests.test_waehlt_combobox_eintrag_bei_bekanntem_namen` | Prüft, dass load_data im Landkreis-Dropdown den gespeicherten Landkreisnamen auswählt. | grün | nie geprüft |
| `LoadDataTests.test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag` | Prüft, dass load_data bei einem nicht mehr vorhandenen Landkreisnamen auf den ersten Eintrag zurückfällt. | grün | nie geprüft |
| `BuildInputTests.test_landkreis_feld_liefert_combobox_mit_allen_landkreisen` | Prüft, dass _build_input für das Landkreis-Feld eine ComboBox mit Platzhalter und allen Landkreisen liefert. | grün | nie geprüft |
| `BuildInputTests.test_anderes_feld_liefert_lineedit` | Prüft, dass _build_input für ein normales Feld ein leeres Textfeld liefert. | 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 | geprüft am 2026-09-17 |
| `TestStilpruefer.test_datei_existiert_mit_qml` | Prüft, dass eine existierende .qml-Datei als 'stil_anwendbar' bestätigt wird. | grün | geprüft am 2026-09-17 |
| `TestStilpruefer.test_datei_existiert_falsche_endung` | Prüft, dass eine existierende Datei ohne .qml-Endung als 'falsche_endung' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestStilpruefer.test_datei_existiert_nicht` | Prüft, dass ein nicht existierender .qml-Pfad als 'datei_nicht_gefunden' abgelehnt wird. | grün | geprüft am 2026-09-17 |
| `TestGetPluginRoot.test_get_plugin_root_folgt_keiner_verzeichnisverknuepfung` | Prüft, dass get_plugin_root() bei einem über eine Verzeichnisverknüpfung (wie von link_qgis_profile.py angelegt) erreichten Modul den verlinkten Pfad liefert, statt zum echten Zielverzeichnis aufzulösen (Verfahrensgebiet #50). | grün | geprüft am 2026-09-17 |
| `JoinPathTests.test_verbindet_mehrere_pfadbestandteile` | Prüft, dass join_path mehrere Bestandteile OS-sicher zu einem Path zusammenfügt. | grün | nie geprüft |
| `EnsureDirTests.test_legt_fehlendes_verzeichnis_inklusive_eltern_an` | Prüft, dass ensure_dir ein fehlendes Verzeichnis samt Elternverzeichnissen anlegt. | grün | nie geprüft |
| `EnsureDirTests.test_vorhandenes_verzeichnis_wirft_keinen_fehler` | Prüft, dass ensure_dir bei einem bereits vorhandenen Verzeichnis keinen Fehler wirft. | grün | nie geprüft |
| `GetattrSafeTests.test_liefert_vorhandenes_attribut` | Prüft, dass getattr_safe ein vorhandenes Attribut liefert. | grün | nie geprüft |
| `GetattrSafeTests.test_liefert_default_bei_fehlendem_attribut` | Prüft, dass getattr_safe bei fehlendem Attribut den Default-Wert liefert. | 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 |
| `OnHandlerTests.test_on_project_changed_ohne_layer_setzt_variable_leer` | Prüft, dass _on_project_changed die Variable leert, wenn kein Verfahrensgebiet-Layer existiert. | grün | nie geprüft |
| `OnHandlerTests.test_on_project_changed_mit_layer_setzt_variable` | Prüft, dass _on_project_changed die Layer-ID eines gefundenen Verfahrensgebiet-Layers übernimmt. | grün | nie geprüft |
| `OnHandlerTests.test_on_layers_added_findet_neuen_layer` | Prüft, dass _on_layers_added nach neu hinzugefügten Layern sucht und die Variable aktualisiert. | grün | nie geprüft |
| `OnHandlerTests.test_on_layer_removed_bei_aktuellem_layer_sucht_neu` | Prüft, dass das Entfernen des aktuell aktiven Verfahrensgebiet-Layers eine Neusuche auslöst. | grün | nie geprüft |
| `OnHandlerTests.test_on_layer_removed_bei_anderem_layer_aendert_nichts` | Prüft, dass das Entfernen eines anderen Layers keine Neusuche auslöst. | grün | nie geprüft |
| `ListenerSetupTests.test_setup_ohne_qgis_tut_nichts` | Prüft, dass setup_verfahrensgebiet_listener ohne QGIS keine Signale registriert. | grün | nie geprüft |
| `ListenerSetupTests.test_setup_verbindet_signale_und_ist_idempotent` | Prüft, dass setup_verfahrensgebiet_listener die Projektsignale verbindet und ein zweiter Aufruf nichts doppelt registriert. | grün | nie geprüft |
| `ListenerSetupTests.test_teardown_trennt_alle_signale_und_ist_idempotent` | Prüft, dass teardown_verfahrensgebiet_listener alle Signale trennt und mehrfacher Aufruf nicht fehlschlägt. | grün | nie geprüft |
| `TestFlurstueckAlkis.test_user_cancel_returns_none` | Prüft, dass ein Abbruch im Eingabedialog (ok=False) (None, LoadStatus.NONE) liefert. | grün | nie geprüft |
| `TestFlurstueckAlkis.test_empty_text_after_confirmation_returns_none` | Prüft, dass ein bestätigter, aber leerer Eingabetext ebenfalls (None, LoadStatus.NONE) liefert. | grün | nie geprüft |
| `TestFlurstueckAlkis.test_invalid_wfs_layer_returns_none` | Prüft, dass ein ungültiger WFS-Layer (None, LoadStatus.NONE) liefert. | grün | nie geprüft |
| `TestFlurstueckAlkis.test_success_returns_layer_and_first_status` | Prüft, dass ohne bestehenden Layer der von lade_flurstuecke_per_gemarkung gelieferte Layer mit LoadStatus.FIRST zurückgegeben wird. | rot (Baseline) | nie geprüft |
| `TestFlurstueckAlkis.test_sql_filter_contains_all_schluessel` | Prüft, dass lade_flurstuecke_per_gemarkung für jeden Gemarkungsschlüssel eine eigene WFS-Anfrage mit dessen Schlüssel stellt. | rot (Baseline) | nie geprüft |
| `TestFlurstueckAlkis.test_existing_layer_reload_yes` | Prüft, dass bei bestehendem Layer und Klick auf 'Überschreiben' der alte Layer entfernt und LoadStatus.RELOAD geliefert wird. | rot (Baseline) | nie geprüft |
| `TestFlurstueckAlkis.test_existing_layer_abbrechen_returns_none` | Prüft, dass bei bestehendem Layer und Klick auf 'Abbrechen' nichts verändert wird und (None, LoadStatus.NONE) geliefert wird. | grün | nie geprüft |
| `TestFlurstueckAlkis.test_vorgabe_schluessel_prefills_default_text` | Prüft, dass vorgabe_schluessel als vorbelegter default_text im Eingabedialog erscheint. | rot (Baseline) | nie geprüft |
| `TestFlurstueckAlkis.test_vorgabe_namen_appears_in_label` | Prüft, dass vorgabe_namen im Beschriftungstext des Eingabedialogs erscheint. | rot (Baseline) | nie geprüft |
| `TestFlurstueckAlkis.test_backwards_compatible_no_new_params` | Prüft, dass flurstueck_alkis() ohne die neuen optionalen Parameter weiterhin fehlerfrei einen Layer mit LoadStatus.FIRST liefert. | rot (Baseline) | nie geprüft |
| `TestFlurstueckAlkis.test_ohne_schluessel_abfrage_ueberspringt_ask_text` | Prüft, dass ohne_schluessel_abfrage=True vorgabe_schluessel direkt verwendet und ask_text nicht aufgerufen wird. | 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 |
| `TestGrenzpunkteGemarkungsweiseStil.test_stil_wird_nach_dem_laden_auf_den_ergebnis_layer_angewendet` | Prüft, dass grenzpunkte_gemarkungsweise() nach dem Laden apply_style() mit dem neuen ALKIS-Grenzpunkt-Stil auf den fertigen Join-Layer anwendet (#53). | grün | 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 |
Heuristik, kein Beweis: Diese Funktionen und Methoden kommen unter ihrem Namen in keiner Testdatei des Pakets vor. Das schließt nicht aus, dass sie indirekt über eine andere, getestete Funktion mitlaufen – umgekehrt gilt: Taucht der Name irgendwo in einer Testdatei auf, gilt die Funktion schon als referenziert, auch bei zufälliger Namensgleichheit mit etwas anderem. `main.py`/`__init__.py` (QGIS-Einstiegspunkte wie `classFactory`, `initGui`, `unload`) und Dunder-Methoden sind ausgenommen. Diese Liste ersetzt keine fachliche Prüfung, ob ein Test sinnvoll wäre – dafür braucht es einen Menschen, der die Funktion kennt.
„beabsichtigt“ liest den Docstring der Funktion: Enthält er einen Vermerk wie „von Test abgesehen, weil …“ oder „Test ausgesetzt, zunächst Refactor“, gilt der fehlende Test als bewusste Entscheidung. Alles andere ist „ungeklärt“ – die eigentliche Arbeitsliste.