<divclass="searchbox"><svgwidth="13"height="13"viewBox="0 0 24 24"fill="none"stroke="currentColor"stroke-width="2.5"aria-hidden="true"><circlecx="11"cy="11"r="7"/><linex1="21"y1="21"x2="16.65"y2="16.65"/></svg><inputtype="search"id="searchInput"placeholder="Testfall oder Datei suchen…"aria-label="Testfall oder Datei suchen"></div></div>
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">CloseEventTests<br><spanclass="testname">test_ruft_cleanup_aller_tabs_auf</span></td><td>Prüft, dass closeEvent cleanup() auf allen Tabs des Dock-Widgets aufruft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CloseEventTests<br><spanclass="testname">test_ignoriert_tabs_ohne_cleanup</span></td><td>Prüft, dass ein Tab ohne cleanup()-Methode nicht zu einem Fehler führt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CloseEventTests<br><spanclass="testname">test_fehler_in_cleanup_wird_abgefangen_und_andere_tabs_laufen_weiter</span></td><td>Prüft, dass ein Fehler in cleanup() eines Tabs nicht die übrigen Tabs verhindert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CloseEventTests<br><spanclass="testname">test_setzt_toolbar_action_zurueck</span></td><td>Prüft, dass closeEvent die verknüpfte Toolbar-Action auf 'nicht gedrückt' zurücksetzt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CloseEventTests<br><spanclass="testname">test_ohne_action_wird_nichts_zurueckgesetzt</span></td><td>Prüft, dass closeEvent ohne verknüpfte Toolbar-Action keine Ausnahme wirft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_bootstrap.py "data-hasred="0"data-hasskip="0"data-nodoc="1"data-ungeprueft="0"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-bootstrap-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_bootstrap.py</span><spanclass="card-meta"><spanclass="count-total">0 Testfälle</span><spanclass="docbadge"title="Anteil mit Docstring">0% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">0% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-bootstrap-py"><pclass="filedesc">— (Docstring fehlt)</p><pclass="empty-note">Keine Testfälle: Die Datei enthält keine <spanclass="mono">unittest.TestCase</span>-Klasse – sie ist eine reine Hilfsdatei, die beim Testlauf nur importiert wird.</p></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_datagrabber.py testdatagrabber test_analyze_source_type_detects_excel testdatagrabber test_analyze_source_type_returns_unknown_filetype testdatagrabber test_analyze_source_type_detects_service_when_file_check_fails testdatagrabber test_analyze_source_type_returns_unbekannte_quelle_on_full_failure testdatagrabber test_run_returns_success_summary_with_valid_rows testdatagrabber test_run_returns_failure_summary_without_rows testdatagrabber test_aggregate_results_mit_zeilen_liefert_erfolgsergebnis testdatagrabber test_aggregate_results_ohne_zeilen_liefert_keine_validen_eintraege"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-datagrabber-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_datagrabber.py</span><spanclass="card-meta"><spanclass="count-total">8 Testfälle</span><spanclass="cpill cpill-ok">8</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">75% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-ba
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestDataGrabber<br><spanclass="testname">test_analyze_source_type_detects_excel</span></td><td>Prüft, dass eine erreichbare .xlsx-Datei als Quelltyp 'excel' erkannt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-16</span></td></tr><tr><tdclass="mono">TestDataGrabber<br><spanclass="testname">test_analyze_source_type_returns_unknown_filetype</span></td><td>Prüft, dass eine erreichbare Datei mit unbekannter Endung als 'unbekannter_dateityp' eingestuft wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-16</span></td></tr><tr><tdclass="mono">TestDataGrabber<br><spanclass="testname">test_analyze_source_type_detects_service_when_file_check_fails</span></td><td>Prüft, dass eine Quelle als 'dienst' erkannt wird, wenn die Dateiprüfung fehlschlägt, die URL aber erreichbar ist.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-16</span></td></tr><tr><tdclass="mono">TestDataGrabber<br><spanclass="testname">test_analyze_source_type_returns_unbekannte_quelle_on_full_failure</span></td><td>Prüft, dass eine Quelle als 'unbekannte_quelle' eingestuft wird, wenn weder Datei- noch Linkprüfung erfolgreich sind.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-16</span></td></tr><tr><tdclass="mono">TestDataGrabber<br><spanclass="testname">test_run_returns_success_summary_with_valid_rows</span></td><td>Prüft, dass run() bei erfolgreichem Excel-Import eine Erfolgsmeldung mit den geladenen Zeilen liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-16</span></td></tr><tr><tdclass="mono">TestDataGrabber<br><spanclass="testname">test_run_returns_failure_summary_without_rows</span></td><td>Prüft, dass run() bei nicht erkennbarer Quelle eine Fehlermeldung ohne Zeilen liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-16</span></td></tr><tr><tdclass="mono">TestDataGrabber<br><spanclass="testname">test_aggregate_results_mit_zeilen_liefert_erfolgsergebnis</span></td><td>Prüft, dass _aggregate_results bei vorhandenen Zeilen ein Erfolgsergebnis mit Zeilenzahl liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestDataGrabber<br><spanclass="testname">test_aggregate_results_ohne_zeilen_liefert_keine_validen_eintraege</span></td><td>Prüft, dass _aggregate_results ohne Zeilen ok=False mit Aktion 'keine_validen_eintraege' liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_dateipruefer.py testdateipruefer test_leereingabe_erlaubt testdateipruefer test_leereingabe_nicht_erlaubt testdateipruefer test_standarddatei_vorschlagen testdateipruefer test_temporaer_erlaubt testdateipruefer test_datei_nicht_gefunden testdateipruefer test_datei_ok testdateipruefer test_erkenne_dateityp_unterscheidet_excel_datenbank_und_unbekannt testdateipruefer test_pfad_verbindet_relativen_pfad_mit_basispfad testdateipruefer test_pfad_laesst_absoluten_pfad_unveraendert testdateipruefer test_ist_gueltiger_gpkg_pfad_akzeptiert_vorhandenes_verzeichnis testdateipruefer test_ist_gueltiger_gpkg_pfad_lehnt_falsche_endung_ab testdateipruefer test_ist_gueltiger_gpkg_pfad_lehnt_fehlendes_verzeichnis_ab"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-dateipruefer-py"aria-
classDefskipfill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestDateipruefer<br><spanclass="testname">test_leereingabe_erlaubt</span></td><td>Prüft, dass eine leere Pfadangabe bei leereingabe_erlaubt=True als 'leereingabe_erlaubt' ohne Kontext gemeldet wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestDateipruefer<br><spanclass="testname">test_leereingabe_nicht_erlaubt</span></td><td>Prüft, dass eine leere Pfadangabe ohne leereingabe_erlaubt als 'leereingabe_nicht_erlaubt' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestDateipruefer<br><spanclass="testname">test_standarddatei_vorschlagen</span></td><td>Prüft, dass bei leerer Pfadangabe mit gesetzter Standarddatei 'standarddatei_vorschlagen' mit dem Standardpfad als Kontext geliefert wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestDateipruefer<br><spanclass="testname">test_temporaer_erlaubt</span></td><td>Prüft, dass eine leere Pfadangabe bei temporaer_erlaubt=True als 'temporaer_erlaubt' ohne Kontext gemeldet wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestDateipruefer<br><spanclass="testname">test_datei_nicht_gefunden</span></td><td>Prüft, dass ein nicht existierender Dateipfad als 'datei_nicht_gefunden' mit dem Pfad als Kontext abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestDateipruefer<br><spanclass="testname">test_datei_ok</span></td><td>Prüft, dass ein existierender Dateipfad als 'ok' mit dem Pfad als Kontext bestätigt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestDateipruefer<br><spanclass="testname">test_erkenne_dateityp_unterscheidet_excel_datenbank_und_unbekannt</span></td><td>Prüft, dass erkenne_dateityp .xlsx als 'excel', .gpkg/.sqlite als 'datenbank' und Rest als 'unbekannt' erkennt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestDateipruefer<br><spanclass="testname">test_pfad_verbindet_relativen_pfad_mit_basispfad</span></td><td>Prüft, dass _pfad einen relativen Pfad mit dem Basisverzeichnis verbindet.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestDateipruefer<br><spanclass="testname">test_pfad_laesst_absoluten_pfad_unveraendert</span></td><td>Prüft, dass _pfad einen bereits absoluten Pfad nicht mit dem Basisverzeichnis verbindet.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestDateipruefer<br><spanclass="testname">test_ist_gueltiger_gpkg_pfad_akzeptiert_vorhandenes_verzeichnis</span></td><td>Prüft, dass ein .gpkg-Pfad mit vorhandenem Zielverzeichnis als gültig gilt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestDateipruefer<br><spanclass="testname">test_ist_gueltiger_gpkg_pfad_lehnt_falsche_endung_ab</span></td><td>Prüft, dass ein Pfad ohne .gpkg-Endung als ungültig gilt, auch bei vorhandenem Verzeichnis.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestDateipruefe
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">DetermineSpatialFilterTests<br><spanclass="testname">test_raumfilter_ohne_liefert_none</span></td><td>Prüft, dass Raumfilter 'ohne' unabhängig vom Layer immer None liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DetermineSpatialFilterTests<br><spanclass="testname">test_fehlender_layer_liefert_none</span></td><td>Prüft, dass ohne Verfahrensgebiet-Layer kein Raumfilter gebaut wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DetermineSpatialFilterTests<br><spanclass="testname">test_unbekannter_raumfilter_liefert_none</span></td><td>Prüft, dass ein unbekannter Raumfilter-Wert None liefert, statt einen Fehler zu werfen.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DetermineSpatialFilterTests<br><spanclass="testname">test_verfahrensgebiet_liefert_extent_und_crs</span></td><td>Prüft, dass Raumfilter 'Verfahrensgebiet' Extent und CRS des Verfahrensgebiet-Layers liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DetermineSpatialFilterTests<br><spanclass="testname">test_verfahrensgebiet_ohne_extent_liefert_none</span></td><td>Prüft, dass ein Verfahrensgebiet-Layer ohne ermittelbaren Extent None liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DetermineSpatialFilterTests<br><spanclass="testname">test_pufferlayer_liefert_extent_des_pufferlayers</span></td><td>Prüft, dass Raumfilter 'Pufferlayer' Extent und CRS des erzeugten Pufferlayers liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DetermineSpatialFilterTests<br><spanclass="testname">test_pufferlayer_ohne_puffer_liefert_none</span></td><td>Prüft, dass 'Pufferlayer' None liefert, wenn kein Pufferlayer erzeugt werden konnte.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">BuildProviderUrlTests<br><spanclass="testname">test_wms_liefert_link_unveraendert</span></td><td>Prüft, dass bei Provider WMS der Link unverändert durchgereicht wird, auch mit Raumfilter.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">BuildProviderUrlTests<br><spanclass="testname">test_url_praefix_wird_entfernt</span></td><td>Prüft, dass ein vorangestelltes 'url=' aus dem Link entfernt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">BuildProviderUrlTests<br><spanclass="testname">test_wfs_baut_standardparameter_und_bbox_mit_crs</span></td><td>Prüft, dass WFS-Abrufe Standardparameter, umbenanntes TYPENAMES und BBOX mit CRS-URN erhalten.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">BuildProviderUrlTests<br><spanclass="testname">test_wfs_repariert_doppeltes_fragezeichen</span></td><td>Prüft, dass ein zweites '?' im WFS-Link zu '&' korrigiert wird, statt eine ungültige URL zu erzeugen.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">BuildProviderUrlTests<br><spanclass="testname">test_wfs_ohne_raumfilter_setzt_keine_bbox</span></td><td>Prüft, dass WFS ohne Raumfilter (bbox_geo
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">WriteLayerToGpkgTests<br><spanclass="testname">test_ungueltiger_layer_liefert_fehlermeldung</span></td><td>Prüft, dass ein ungültiger Layer eine Fehlermeldung statt eines Absturzes liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">WriteLayerToGpkgTests<br><spanclass="testname">test_gueltiger_layer_wird_ohne_fehler_geschrieben</span></td><td>Prüft, dass ein gültiger Layer im Mock-Modus ohne Fehlermeldung geschrieben wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ResolveStylePathTests<br><spanclass="testname">test_leerer_stilpfad_liefert_none</span></td><td>Prüft, dass ein leerer oder fehlender Stilpfad None liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ResolveStylePathTests<br><spanclass="testname">test_absoluter_vorhandener_stilpfad_wird_aufgeloest</span></td><td>Prüft, dass ein absoluter, vorhandener Stilpfad normalisiert und unverändert erkannt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ResolveStylePathTests<br><spanclass="testname">test_nicht_vorhandener_stilpfad_liefert_none</span></td><td>Prüft, dass ein nicht vorhandener Stilpfad None liefert, statt einen ungültigen Pfad zurückzugeben.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">SchreibeDatenTests<br><spanclass="testname">test_ohne_speicherort_wirft_valueerror</span></td><td>Prüft, dass schreibe_Daten ohne Speicherort einen ValueError wirft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">SchreibeDatenTests<br><spanclass="testname">test_eintrag_ohne_gueltigen_layer_wird_uebersprungen</span></td><td>Prüft, dass ein Eintrag ohne gültigen Layer übersprungen wird und ein Fehlerergebnis meldet.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">SchreibeDatenTests<br><spanclass="testname">test_erfolgreicher_eintrag_liefert_layer_path_und_thema</span></td><td>Prüft, dass ein gültiger Layer einen Layer-Path mit GPKG-Pfad und Layername liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">SchreibeDatenTests<br><spanclass="testname">test_ohne_thema_wird_ident_als_layername_verwendet</span></td><td>Prüft, dass ohne passendes Thema in processed_results der ident als Layername verwendet wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LadeLayerTests<br><spanclass="testname">test_ohne_layer_path_wird_uebersprungen</span></td><td>Prüft, dass ein Eintrag ohne layer_path übersprungen wird, ohne einen Fehler zu melden.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LadeLayerTests<br><spanclass="testname">test_gueltiger_layer_wird_dem_projekt_hinzugefuegt</span></td><td>Prüft, dass ein gültig ladbarer Layer ohne Fehlermeldung verarbeitet wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LadeLayerTests<br><spanclass="testname">test_ungueltiger_layer_meldet_layer_nicht_gefunden</span></td><td>Prüft, dass ein ungültig ladbarer Layer als 'layer_nicht_gefunden' gemeldet wird.</td><td><spanclass="pi
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">DockManagerShowTests<br><spanclass="testname">test_none_dock_meldet_fehler_und_zeigt_nichts_an</span></td><td>Prüft, dass ein fehlendes Dock-Widget (None) einen Fehler meldet und nichts anzeigt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DockManagerShowTests<br><spanclass="testname">test_setzt_objectname_wenn_leer</span></td><td>Prüft, dass ein Dock ohne Namen einen technischen Namen mit dem Präfix 'sn_dock_' erhält.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DockManagerShowTests<br><spanclass="testname">test_entfernt_andere_sn_docks_aber_nicht_sich_selbst</span></td><td>Prüft, dass andere sn_basis-Docks entfernt werden, das neue Dock und fremde Widgets aber unangetastet bleiben.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DockManagerShowTests<br><spanclass="testname">test_zeigt_neues_dock_mit_default_area_an</span></td><td>Prüft, dass ein neues Dock mit der Standard-Area (DockAreaRight) angezeigt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DockManagerShowTests<br><spanclass="testname">test_fehler_beim_entfernen_wird_als_warnung_gemeldet</span></td><td>Prüft, dass ein Fehler beim Entfernen alter Docks nur gewarnt und das neue Dock trotzdem angezeigt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DockManagerShowTests<br><spanclass="testname">test_fehler_beim_anzeigen_wird_gemeldet</span></td><td>Prüft, dass ein Fehler beim Anzeigen des Docks als Fehler gemeldet wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_excel_importer.py importxlsxtests test_erfolgreicher_import_liefert_zeilen_als_dicts importxlsxtests test_fehlende_datei_liefert_leere_liste importxlsxtests test_arbeitsblatt_ohne_header_liefert_leere_liste_und_meldet_kein_header importxlsxtests test_header_zeile_nur_leere_werte_liefert_kein_header importxlsxtests test_nicht_lesbare_datei_liefert_leere_liste_und_meldet_read_error excelimporterkonstruktortests test_ohne_dateipfad_wirft_valueerror excelimporterkonstruktortests test_ohne_pruefmanager_wirft_valueerror"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-excel-importer-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_excel_importer.py</span><spanclass="card-meta"><spanclass="count-total">7 Testfälle</span><spanclass="cpill cpill-ok">7</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">0% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-excel-importer-py"><pclass="filedesc">Tests für sn_basis/modules/excel_importer.py (Excel-Import für Linklisten, Issue #63).</p><divclass="gchips"><spanclass="gchip"title="">ImportXlsxTests <b>5</b></span><spanclass="gchip"title="">ExcelImporterKonstruktorTests <b>2</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">ImportXlsxTests<br><spanclass="testname">test_erfolgreicher_import_liefert_zeilen_als_dicts</span></td><td>Prüft, dass eine gültige Excel-Datei als Liste von Dicts mit den Header-Spalten geliefert wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ImportXlsxTests<br><spanclass="testname">test_fehlende_datei_liefert_leere_liste</span></td><td>Prüft, dass eine nicht vorhandene Datei eine leere Liste liefert, statt eine Ausnahme zu werfen.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ImportXlsxTests<br><spanclass="testname">test_arbeitsblatt_ohne_header_liefert_leere_liste_und_meldet_kein_header</span></td><td>Prüft, dass ein leeres Arbeitsblatt ohne Header-Zeile 'kein_header' meldet und eine leere Liste liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ImportXlsxTests<br><spanclass="testname">test_header_zeile_nur_leere_werte_liefert_kein_header</span></td><td>Prüft, dass eine Header-Zeile aus ausschließlich leeren Zellen ebenfalls als 'kein_header' gilt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ImportXlsxTests<br><spanclass="testname">test_nicht_lesbare_datei_liefert_leere_liste_und_meldet_read_error</span></td><td>Prüft, dass eine Datei mit ungültigem Excel-Inhalt 'read_error' meldet und eine leere Liste liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ExcelImporterKonstruktorTests<br><spanclass="testname">test_ohne_dateipfad_wirft_valueerror</span></td><td>Prüft, dass ExcelImporter ohne Dateipfad einen ValueError wirft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ExcelImporterKonstruktorTests<br><spanclass="testname">test_ohne_pruefmanager_wirft_valueerror</span></td><td>Prüft, dass ExcelImporter ohne Pruefmanager einen ValueError wirft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_laenderkennung.py testgetlaenderkennung test_bekannter_praefix_gibt_kennung_zurueck testgetlaenderkennung test_praefix_gross_klein_unabhaengig testgetlaenderkennung test_unbekannter_praefix_wirft_keyerror testgetlaenderkennung test_ohne_argument_wird_aus_aufrufendem_modul_abgeleitet testgetlaenderkennung test_mapping_enthaelt_sachsen"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="0"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-laenderkennung-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_laenderkennung.py</span><spanclass="card-meta"><spanclass="count-total">5 Testfälle</span><spanclass="cpill cpill-ok">5</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">100% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-laenderkennung-py"><pclass="filedesc">Unit-Tests für `sn_basis.functions.laenderkennung`.</p><divclass="gchips"><spanclass="gchip"title="">TestGetLaenderkennung <b>5</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestGetLaenderkennung<br><spanclass="testname">test_bekannter_praefix_gibt_kennung_zurueck</span></td><td>Prüft, dass der Präfix 'sn' die ALKIS-Länderkennung '14' für Sachsen liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestGetLaenderkennung<br><spanclass="testname">test_praefix_gross_klein_unabhaengig</span></td><td>Prüft, dass die Präfixsuche groß-/kleinschreibungsunabhängig ist.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestGetLaenderkennung<br><spanclass="testname">test_unbekannter_praefix_wirft_keyerror</span></td><td>Prüft, dass ein unbekannter Präfix einen KeyError auslöst.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestGetLaenderkennung<br><spanclass="testname">test_ohne_argument_wird_aus_aufrufendem_modul_abgeleitet</span></td><td>Prüft, dass ohne Argument der Präfix aus dem Modulnamen des Aufrufers abgeleitet wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestGetLaenderkennung<br><spanclass="testname">test_mapping_enthaelt_sachsen</span></td><td>Prüft, dass die Mapping-Tabelle LAENDERKENNUNGEN einen Eintrag für Sachsen ('sn' ->'14') enthält.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_landkreise.py ladelandkreisetests test_laedt_die_echte_landkreisliste_nicht_leer ladelandkreisetests test_fehlende_datei_liefert_leere_liste"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-landkreise-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_landkreise.py</span><spanclass="card-meta"><spanclass="count-total">2 Testfälle</span><spanclass="cpill cpill-ok">2</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">0% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-landkreise-py"><pclass="filedesc">Tests für sn_basis/functions/landkreise.py::_lade_landkreise (Issue #65).</p><divclass="gchips"><spanclass="gchip"title="">LadeLandkreiseTests <b>2</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">CreateLayerTests<br><spanclass="testname">test_wfs_baut_uri_ohne_getfeature_parameter</span></td><td>Prüft, dass für WFS die GetFeature-spezifischen Parameter aus der URI entfernt werden.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CreateLayerTests<br><spanclass="testname">test_wfs_mit_url_praefix_wird_nicht_doppelt_gesetzt</span></td><td>Prüft, dass ein bereits vorhandenes 'url='-Präfix im WFS-Link nicht verdoppelt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CreateLayerTests<br><spanclass="testname">test_wms_baut_url_praefix_und_nutzt_rasterlayer</span></td><td>Prüft, dass WMS-Layer über QgsRasterLayer mit 'url='-Präfix erzeugt werden.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CreateLayerTests<br><spanclass="testname">test_rest_featureserver_ergaenzt_layer_index</span></td><td>Prüft, dass ein REST-Link auf '.../FeatureServer' automatisch um '/0' ergänzt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CreateLayerTests<br><spanclass="testname">test_ogr_provider_nutzt_link_direkt</span></td><td>Prüft, dass ein OGR-Provider den Link unverändert an QgsVectorLayer übergibt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CreateLayerTests<br><spanclass="testname">test_ungueltiger_layer_meldet_layer_nicht_verfuegbar</span></td><td>Prüft, dass ein ungültig erzeugter Layer als 'layer_nicht_verfuegbar' gemeldet wird und None liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CreateLayerTests<br><spanclass="testname">test_ausnahme_beim_erstellen_wird_abgefangen</span></td><td>Prüft, dass eine Ausnahme beim Layer-Erstellen abgefangen und als Fehlerergebnis gemeldet wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TransformGeometryTests<br><spanclass="testname">test_fehlender_layer_liefert_geometrie_unveraendert</span></td><td>Prüft, dass ohne Quell- oder Ziel-Layer die Geometrie unverändert zurückgegeben wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TransformGeometryTests<br><spanclass="testname">test_gleiche_crs_liefert_geometrie_unveraendert</span></td><td>Prüft, dass bei identischem CRS von Quelle und Ziel keine Transformation stattfindet.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TransformGeometryTests<br><spanclass="testname">test_unterschiedliche_crs_klont_und_transformiert_geometrie</span></td><td>Prüft, dass bei unterschiedlichem CRS eine geklonte, transformierte Geometrie geliefert wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TransformExtentTests<br><spanclass="testname">test_gleiche_crs_liefert_extent_unveraendert</span></td><td>Prüft, dass bei identischem CRS von Quelle und Ziel der Extent unverändert bleibt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TransformExtentTests<br><spanclass="testname">test_unterschiedliche_crs_nutzt_coordinate_transform</span></td><td>Prüft, dass bei
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestLayerpruefer<br><spanclass="testname">test_layer_exists</span></td><td>Prüft, dass ein nicht vorhandener Layer als 'layer_nicht_gefunden' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLayerpruefer<br><spanclass="testname">test_layer_unsichtbar</span></td><td>Prüft, dass ein unsichtbarer Layer bei geforderter Sichtbarkeit als 'layer_unsichtbar' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLayerpruefer<br><spanclass="testname">test_falscher_layertyp</span></td><td>Prüft, dass ein Layer mit abweichendem Layertyp (Raster statt Vektor) als 'falscher_layertyp' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLayerpruefer<br><spanclass="testname">test_falscher_geotyp</span></td><td>Prüft, dass ein Layer mit abweichendem Geometrietyp (Punkt statt Polygon) als 'falscher_geotyp' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLayerpruefer<br><spanclass="testname">test_layer_leer</span></td><td>Prüft, dass ein Layer ohne Features als 'layer_leer' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLayerpruefer<br><spanclass="testname">test_falsches_crs</span></td><td>Prüft, dass ein Layer mit abweichendem Koordinatenbezugssystem als 'falsches_crs' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLayerpruefer<br><spanclass="testname">test_felder_fehlen</span></td><td>Prüft, dass ein Layer mit fehlenden Pflichtfeldern als 'felder_fehlen' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLayerpruefer<br><spanclass="testname">test_datenquelle_unerwartet</span></td><td>Prüft, dass eine Datenquelle außerhalb der erlaubten Liste als 'datenquelle_unerwartet' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLayerpruefer<br><spanclass="testname">test_layer_nicht_editierbar</span></td><td>Prüft, dass ein nicht editierbarer Layer bei geforderter Editierbarkeit als 'layer_nicht_editierbar' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLayerpruefer<br><spanclass="testname">test_layer_ok</span></td><td>Prüft, dass ein Layer, der alle Anforderungen erfüllt, als 'ok' bestätigt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_linkpruefer.py testlinkpruefer test_leere_eingabe testlinkpruefer test_remote_link_ok testlinkpruefer test_remote_link_error testlinkpruefer test_remote_link_network_error testlinkpruefer test_local_link_not_found testlinkpruefer test_local_link_ok"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="0"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-linkpruefer-py"aria-expanded="false"><spanclass="card-path m
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestLinkpruefer<br><spanclass="testname">test_leere_eingabe</span></td><td>Prüft, dass eine leere Eingabe ohne Netzwerk-/Dateizugriff als 'leer' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLinkpruefer<br><spanclass="testname">test_remote_link_ok</span></td><td>Prüft, dass eine erreichbare Remote-URL (HTTP HEAD ohne Fehler) als 'ok' bestätigt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLinkpruefer<br><spanclass="testname">test_remote_link_error</span></td><td>Prüft, dass eine Remote-URL mit Fehlerantwort als 'url_nicht_erreichbar' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLinkpruefer<br><spanclass="testname">test_remote_link_network_error</span></td><td>Prüft, dass eine ausbleibende Netzwerkantwort (None) als 'netzwerkfehler' gemeldet wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLinkpruefer<br><spanclass="testname">test_local_link_not_found</span></td><td>Prüft, dass ein nicht existierender lokaler Pfad als 'pfad_nicht_gefunden' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestLinkpruefer<br><spanclass="testname">test_local_link_ok</span></td><td>Prüft, dass ein existierender lokaler Pfad als 'ok' bestätigt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_ly_existence_wrapper.py layerisvalidtests test_none_ist_nicht_gueltig layerisvalidtests test_objekt_ohne_isvalid_ist_nicht_gueltig layerisvalidtests test_gueltiger_layer_liefert_true layerisvalidtests test_ungueltiger_layer_liefert_false layerisvalidtests test_ausnahme_bei_isvalid_liefert_false layerisusabletests test_none_ist_nicht_nutzbar layerisusabletests test_gueltiger_layer_ist_nutzbar layerisusabletests test_ungueltiger_layer_ist_nicht_nutzbar"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-ly-existence-wrapper-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_ly_existence_wrapper.py</span><spanclass="card-meta"><spanclass="count-total">8 Testfälle</span><spanclass="cpill cpill-ok">8</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">0% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-ly-existence-wrapper-py"><pclass="filedesc">Tests für sn_basis/functions/ly_existence_wrapper.py::layer_is_valid/layer_is_usable (Issue #65).</p><divclass="gchips"><spanclass="gchip"title="">LayerIsValidTests <b>5</b></span><spanclass="gchip"title="">LayerIsUsableTests <b>3</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">LayerIsValidTests<br><spanclass="testname">test_none_ist_nicht_gueltig</span></td><td>Prüft, dass layer_is_valid für None False liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LayerIsValidTests<br><spanclass="testname">test_objekt_ohne_isvalid_ist_nicht_gueltig</span></td><td>Prüft, dass ein Objekt ohne isValid()-Methode als ungültig gilt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LayerIsValidTests<br><spanclass="testname">test_gueltiger_layer_liefert_true</span></td><td>Prüft, dass ein Layer mit isValid()==True als gültig erkannt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LayerIsValidTests<br><spanclass="testname">test_ungueltiger_layer_liefert_false</span></td><td>Prüft, dass ein Layer mit isValid()==False als ungültig erkannt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LayerIsValidTests<br><spanclass="testname">test_ausnahme_bei_isvalid_liefert_false</span></td><td>Prüft, dass eine Ausnahme in isValid() abgefangen wird und False liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LayerIsUsableTests<br><spanclass="testname">test_none_ist_nicht_nutzbar</span></td><td>Prüft, dass layer_is_usable für None False liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LayerIsUsableTests<br><spanclass="testname">test_gueltiger_layer_ist_nutzbar</span></td><td>Prüft, dass ein vorhandener, gültiger Layer als nutzbar gilt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LayerIsUsableTests<br><spanclass="testname">test_ungueltiger_layer_ist_nicht_nutzbar</span></td><td>Prüft, dass ein vorhandener, aber ungültiger Layer als nicht nutzbar gilt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_ly_style_wrapper.py applystylefrompathtests test_fehlender_layer_liefert_false applystylefrompathtests test_erfolgreiches_laden_liefert_true_und_triggert_repaint applystylefrompathtests test_fehlgeschlagenes_laden_liefert_false_ohne_repaint applystylefrompathtests test_ausnahme_beim_laden_wird_abgefangen"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-ly-style-wrapper-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_ly_style_wrapper.py</span><spanclass="card-meta"><spanclass="count-total">4 Testfälle</span><spanclass="cpill cpill-ok">4</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">0% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-ly-style-wrapper-py"><pclass="filedesc">Tests für sn_basis/functions/ly_style_wrapper.py::apply_style_from_path (Issue #65).</p><divclass="gchips"><spanclass="gchip"title="">ApplyStyleFromPathTests <b>4</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">ApplyStyleFromPathTests<br><spanclass="testname">test_fehlender_layer_liefert_false</span></td><td>Prüft, dass ein fehlender Layer (None) False liefert, ohne einen Stil zu laden.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ApplyStyleFromPathTests<br><spanclass="testname">test_erfolgreiches_laden_liefert_true_und_triggert_repaint</span></td><td>Prüft, dass ein erfolgreich geladener Stil True liefert und den Layer neu zeichnet.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ApplyStyleFromPathTests<br><spanclass="testname">test_fehlgeschlagenes_laden_liefert_false_ohne_repaint</span></td><td>Prüft, dass ein fehlgeschlagenes Laden False liefert, ohne den Layer neu zu zeichnen.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ApplyStyleFromPathTests<br><spanclass="testname">test_ausnahme_beim_laden_wird_abgefangen</span></td><td>Prüft, dass eine Ausnahme beim Laden des Stils abgefangen wird und False liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_message_wrapper.py getmessagebartests test_liefert_objekt_mit_pushmessage_methode getmessagebartests test_faellt_bei_fehlerhaftem_iface_auf_mock_bar_zurueck pushmessagetests test_liefert_dict_mit_titel_text_level_und_dauer pushmessagetests test_fehler_in_der_message_bar_wird_abgefangen"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-message-wrapper-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_message_wrapper.py</span><spanclass="card-meta"><spanclass="count-total">4 Testfälle</span><spanclass="cpill cpill-ok">4</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">0% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-message-wrapper-py"><pclass="filedesc">Tests für sn_basis/functions/message_wrapper.py (Issue #65).</p><divclass="gchips"><spanclass="gchip"title="">GetMessageBarTests <b>2</b></span><spanclass="gchip"title="">PushMessageTests <b>2</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">GetMessageBarTests<br><spanclass="testname">test_liefert_objekt_mit_pushmessage_methode</span></td><td>Prüft, dass _get_message_bar ein Objekt mit aufrufbarer pushMessage()-Methode liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">GetMessageBarTests<br><spanclass="testname">test_faellt_bei_fehlerhaftem_iface_auf_mock_bar_zurueck</span></td><td>Prüft, dass ein Fehler beim Zugriff auf iface.messageBar() auf eine funktionierende Mock-MessageBar zurückfällt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">PushMessageTests<br><spanclass="testname">test_liefert_dict_mit_titel_text_level_und_dauer</span></td><td>Prüft, dass push_message im Mock-Modus ein Dict mit den übergebenen Werten liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">PushMessageTests<br><spanclass="testname">test_fehler_in_der_message_bar_wird_abgefangen</span></td><td>Prüft, dass eine fehlschlagende MessageBar push_message nicht zum Absturz bringt, sondern None liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_navigation.py addactiontests test_ohne_plugin_group_liefert_none addactiontests test_erzeugt_action_und_fuegt_sie_gruppe_und_liste_hinzu finalizemenuandtoolbartests test_ohne_menu_oder_toolbar_tut_nichts finalizemenuandtoolbartests test_sortiert_und_fuegt_aktionen_in_prioritaetsreihenfolge_hinzu setactiveplugintests test_setzt_nur_aktive_action_auf_checked setactiveplugintests test_ohne_aktive_action_setzt_alle_auf_false removeactiontests test_none_action_tut_nichts removeactiontests test_entfernt_action_aus_menu_toolbar_und_liste removeactiontests test_ohne_menu_oder_toolbar_entfernt_trotzdem_aus_liste removealltests test_entfernt_menu_toolbar_und_setzt_zustand_zurueck removealltests test_ohne_menu_und_toolbar_ruft_wrapper_nicht_auf"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-navigation-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_navigation.py</span><spanclass="card-meta"><spanclass="count-total">11 Testfälle</span><spanclass="cpill cpill-ok">11</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">0% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-navigation-py"><pclass="filedesc">Tests für sn_basis/ui/navigation.py::Navigation (Issue #67, ohne init_ui – s. Docstring dort).</p><divclass="gchips"><spanclass="gchip"title="">AddActionTests <b>2</b></span><spanclass="gchip"title="">FinalizeMenuAndToolbarTests <b>2</b></span><spanclass="gchip"title="">SetActivePluginTests <b>2</b></span><spanclass="gchip"title="">RemoveActionTests <b>3</b></span><spanclass="gchip"title="">RemoveAllTests <b>2</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">AddActionTests<br><spanclass="testname">test_ohne_plugin_group_liefert_none</span></td><td>Prüft, dass add_action ohne initialisierte Aktionsgruppe None liefert und nichts anlegt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">AddActionTests<br><spanclass="testname">test_erzeugt_action_und_fuegt_sie_gruppe_und_liste_hinzu</span></td><td>Prüft, dass add_action eine Action erzeugt, ihr die Gruppe zuweist und sie priorisiert in der Liste ablegt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">FinalizeMenuAndToolbarTests<br><spanclass="testname">test_ohne_menu_oder_toolbar_tut_nichts</span></td><td>Prüft, dass finalize_menu_and_toolbar ohne Menü oder Toolbar keine Ausnahme wirft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">FinalizeMenuAndToolbarTests<br><spanclass="testname">test_sortiert_und_fuegt_aktionen_in_prioritaetsreihenfolge_hinzu</span></td><td>Prüft, dass finalize_menu_and_toolbar Aktionen nach Priorität sortiert in Menü und Toolbar einträgt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">SetActivePluginTests<br><spanclass="testname">test_setzt_nur_aktive_action_auf_checked</span></td><td>Prüft, dass set_active_plugin nur die übergebene Action markiert, alle anderen abwählt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">SetActivePluginTests<br><spanclass="testname">test_ohne_aktive_action_setzt_alle_auf_false</span></td><td>Prüft, dass set_active_plugin ohne aktive Action alle bestehenden Actions abwählt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">RemoveActionTests<br><spanclass="testname">test_none_action_tut_nichts</span></td><td>Prüft, dass remove_action mit None keine Ausnahme wirft und die Liste unverändert lässt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">RemoveActionTests<br><spanclass="testname">test_entfernt_action_aus_menu_toolbar_und_liste</span></td><td>Prüft, dass remove_action die Action aus Menü, Toolbar und der internen Liste entfernt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">RemoveActionTests<br><spanclass="testname">test_ohne_menu_oder_toolbar_entfernt_trotzdem_aus_liste</span></td><td>Prüft, dass remove_action ohne Menü/Toolbar trotzdem aus der internen Liste entfernt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">RemoveAllTests<br><spanclass="testname">test_entfernt_menu_toolbar_und_setzt_zustand_zurueck</span></td><td>Prüft, dass remove_all Menü und Toolbar über die Wrapper entfernt und den Navigationszustand zurücksetzt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">RemoveAllTests<br><spanclass="testname">test_ohne_menu_und_toolbar_ruft_wrapper_nicht_auf</span></td><td>Prüft, dass remove_all ohne vorhandenes Menü/Toolbar die Wrapper nicht aufruft, aber die Liste leert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_os_wrapper.py iscasesensitivefstests test
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestPrintLayout<br><spanclass="testname">test_create_legend_item_links_map_and_enables_map_filtering</span></td><td>Prüft, dass eine erzeugte Legende mit der übergebenen Karte verknüpft ist und automatisch nach deren Sichtbarkeit gefiltert wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLayout<br><spanclass="testname">test_create_legend_item_does_not_copy_project_layers_into_legend_model</span></td><td>Prüft, dass eine neu erzeugte Legende keine Projekt-Layer in ihr Legendenmodell übernimmt (leere Root-Gruppe).</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLayout<br><spanclass="testname">test_configure_legend_size_uses_content_adaptive_size</span></td><td>Prüft, dass die Legendengröße inhaltsadaptiv bestimmt wird (kein manuelles Resize) und die ermittelte Höhe zurückgegeben wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLayout<br><spanclass="testname">test_configure_hauptkarte_grids_uses_wrapper_constants</span></td><td>Prüft, dass das Gitternetz der Hauptkarte mit den erwarteten Stil-, Rahmen- und Beschriftungskonstanten (nur rechts/unten beschriftet, Schriftgröße und Hintergrund) konfiguriert wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLayout<br><spanclass="testname">test_create_single_page_layout_keeps_legend_linked_to_hauptkarte_and_theme</span></td><td>Prüft, dass ein einseitiges Layout die Hauptkarte auf das übergebene Kartenthema festlegt und die Legende mit dieser Karte verknüpft bleibt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_print_logic.py testprintlogic test_get_baufreigabe_page_dimensions_prefers_a4_for_small_extent testprintlogic test_get_baufreigabe_page_dimensions_escalates_to_a3 testprintlogic test_get_baufreigabe_page_dimensions_respects_a4_as_maximum_with_fallback testprintlogic test_get_baufreigabe_page_dimensions_falls_back_to_a3_for_oversize_extent testprintlogic test_select_standard_page_layout_uses_a4_as_minimum_sheet testprintlogic test_select_standard_page_layout_limits_hauptkarte_to_a3 testprintlogic test_select_standard_page_layout_returns_none_if_a3_is_too_small testprintlogic test_get_standard_layout_dimensions_uses_a4_and_forces_fit_for_small_extent testprintlogic test_get_standard_layout_dimensions_caps_endlosrolle_width_at_2000_mm testprintlogic test_apply_standard_minimum_a4_fallback_for_small_page testprintlogic test_apply_standard_minimum_a4_fallback_keeps_large_page testprintlogic test_does_plot_fit_page_true_for_standard_a4 testprintlogic test_does_plot_fit_page_false_if_objects_exceed_page testprintlogic test_set_druckbereich_accepts_wie_kartenfenster testprintlogic test_get_canvas_extent_returns_valid_extent testprintlogic test_resolve_extent_uses_canvas_extent_without_buffer testprintlogic test_resolve_extent_uses_rectangle_extent_without_buffer"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-print-logic-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_print_logic.py</span><spanclass="card-meta"><spanclass="count-total">17 Testfälle</span><spanclass="cpill cpill-ok">17</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprü
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestPrintLogic<br><spanclass="testname">test_get_baufreigabe_page_dimensions_prefers_a4_for_small_extent</span></td><td>Prüft, dass für einen kleinen Kartenausschnitt (Baufreigabe) das Format DIN A4 ohne Fallback gewählt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLogic<br><spanclass="testname">test_get_baufreigabe_page_dimensions_escalates_to_a3</span></td><td>Prüft, dass ein größerer Kartenausschnitt (Baufreigabe) auf DIN A3 eskaliert wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLogic<br><spanclass="testname">test_get_baufreigabe_page_dimensions_respects_a4_as_maximum_with_fallback</span></td><td>Prüft, dass bei auf DIN A4 begrenztem Höchstformat ein eigentlich A3-großer Ausschnitt mit Fallback-Kennzeichnung auf A4 reduziert wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLogic<br><spanclass="testname">test_get_baufreigabe_page_dimensions_falls_back_to_a3_for_oversize_extent</span></td><td>Prüft, dass ein Ausschnitt, der auch DIN A3 übersteigt, mit Fallback-Kennzeichnung auf DIN A3 begrenzt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLogic<br><spanclass="testname">test_select_standard_page_layout_uses_a4_as_minimum_sheet</span></td><td>Prüft, dass für einen kleinen Ausschnitt trotz Höchstgrenze DIN A3 mindestens DIN A4 als Blattgröße gewählt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLogic<br><spanclass="testname">test_select_standard_page_layout_limits_hauptkarte_to_a3</span></td><td>Prüft, dass ein die Fläche voll ausnutzender Ausschnitt auf DIN A3 als größtes zulässiges Format begrenzt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLogic<br><spanclass="testname">test_select_standard_page_layout_returns_none_if_a3_is_too_small</span></td><td>Prüft, dass kein Layout gewählt wird (None), wenn der Ausschnitt selbst DIN A3 als Höchstformat übersteigt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLogic<br><spanclass="testname">test_get_standard_layout_dimensions_uses_a4_and_forces_fit_for_small_extent</span></td><td>Prüft, dass für einen kleinen Ausschnitt DIN A4 gewählt und das Einpassen (force_fit) erzwungen wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLogic<br><spanclass="testname">test_get_standard_layout_dimensions_caps_endlosrolle_width_at_2000_mm</span></td><td>Prüft, dass bei aktiviertem Formfaktor (Endlosrolle) die Seitenbreite auf die maximale Rollenbreite (2000 mm) begrenzt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLogic<br><spanclass="testname">test_apply_standard_minimum_a4_fallback_for_small_page</span></td><td>Prüft, dass eine zu kleine Seite auf die A4-Mindestgröße angehoben und als erzwungen (forced) markiert wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestPrintLogic<br><spanclass="testname">test_apply_standard_minimum_a4_fallback_keeps_large_page</span></td><td>Prüft, dass eine bereits a
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">SetServicesTests<br><spanclass="testname">test_ruft_alle_set_methoden_mit_combo_werten_auf</span></td><td>Prüft, dass set_services alle set_*-Methoden von PrintLogic mit den aktuellen Combo-Werten aufruft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">SetServicesTests<br><spanclass="testname">test_ohne_combos_ruft_keine_set_methode_auf</span></td><td>Prüft, dass set_services ohne vorhandene Combos keine set_*-Methode von PrintLogic aufruft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">RestoreStateTests<br><spanclass="testname">test_gueltige_gespeicherte_werte_werden_uebernommen</span></td><td>Prüft, dass _restore_state gültige gespeicherte Werte in die jeweiligen Widgets übernimmt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">RestoreStateTests<br><spanclass="testname">test_ungueltige_oder_fehlende_werte_fallen_auf_defaults_zurueck</span></td><td>Prüft, dass _restore_state ohne (gültige) gespeicherte Werte auf die Default-Konstanten zurückfällt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">OnDruckpufferClickedTests<br><spanclass="testname">test_gueltige_zahl_setzt_variable_und_button_text</span></td><td>Prüft, dass eine bestätigte, gültige Zahl den Druckpuffer speichert und den Button-Text aktualisiert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">OnDruckpufferClickedTests<br><spanclass="testname">test_abgebrochen_aendert_nichts</span></td><td>Prüft, dass ein abgebrochener Dialog den Druckpuffer nicht verändert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">OnDruckpufferClickedTests<br><spanclass="testname">test_ungueltige_zahl_zeigt_hinweis_und_setzt_nichts</span></td><td>Prüft, dass eine nicht-numerische Eingabe einen Hinweis zeigt und den Druckpuffer nicht setzt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">OnVorlageErstellenTests<br><spanclass="testname">test_ruft_druckvorlage_anlegen_mit_combo_werten_auf</span></td><td>Prüft, dass _on_vorlage_erstellen druckvorlage_anlegen mit den aktuellen Combo-Werten aufruft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">OnVorlageErstellenTests<br><spanclass="testname">test_ohne_logic_tut_nichts</span></td><td>Prüft, dass _on_vorlage_erstellen ohne gesetzte PrintLogic keine Ausnahme wirft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ProjectSignalsTests<br><spanclass="testname">test_connect_verbindet_alle_drei_signale</span></td><td>Prüft, dass _connect_project_signals alle drei Projektsignale mit _on_project_changed verbindet.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ProjectSignalsTests<br><spanclass="testname">test_disconnect_trennt_alle_drei_signale</span></td><td>Prüft, dass _disconnect_project_signals alle drei zuvor verbundenen Projektsignale trennt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ProjectSignalsTests<br><spanclass="testname">test_instance_wirft_ausnahme_wird_abgefangen</span></td><td>Prüft, dass eine
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">IstVerfahrensDbAktionTests<br><spanclass="testname">test_liefert_true_fuer_alle_verfahrens_db_aktionen</span></td><td>Prüft, dass ist_verfahrens_db_aktion für alle vier Verfahrens-DB-Aktionscodes True liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">IstVerfahrensDbAktionTests<br><spanclass="testname">test_liefert_false_fuer_andere_aktionen</span></td><td>Prüft, dass ist_verfahrens_db_aktion für Nicht-Verfahrens-DB-Aktionen und ohne Aktion False liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ErlaubtePersistierungTests<br><spanclass="testname">test_liefert_true_fuer_erzeugen_ueberschreiben_anhaengen</span></td><td>Prüft, dass erlaubte_persistierung für Erzeugen/Überschreiben/Anhängen True liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ErlaubtePersistierungTests<br><spanclass="testname">test_liefert_false_fuer_ueberspringen_und_reines_existieren</span></td><td>Prüft, dass erlaubte_persistierung bei Überspringen und reinem 'datei_existiert' False liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DateipfadTests<br><spanclass="testname">test_liefert_path_wenn_kontext_ein_path_ist</span></td><td>Prüft, dass dateipfad den Kontext liefert, wenn dieser bereits ein Path-Objekt ist.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">DateipfadTests<br><spanclass="testname">test_liefert_none_wenn_kontext_kein_path_ist</span></td><td>Prüft, dass dateipfad None liefert, wenn der Kontext kein Path-Objekt ist (z. B. String oder Layer).</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_pruefmanager.py testpruefmanager test_ok testpruefmanager test_leereingabe_erlaubt_ja testpruefmanager test_leereingabe_erlaubt_nein testpruefmanager test_standarddatei_vorschlagen_ja testpruefmanager test_standarddatei_vorschlagen_nein testpruefmanager test_temporaer_erlaubt_ja testpruefmanager test_temporaer_erlaubt_nein testpruefmanager test_layer_unsichtbar_ja testpruefmanager test_layer_unsichtbar_nein testpruefmanager test_unbekannte_aktion testpruefmanager test_datei_existiert_overwrite testpruefmanager test_datei_existiert_append testpruefmanager test_datei_existiert_cancel testpruefmanager test_datei_existiert_in_non_qgis_mode_returns_input testpruefmanager test_verfahrensgebiet_layer_existiert_ergaenzen testpruefmanager test_verfahrensgebiet_layer_existiert_abbrechen testpruefmanager test_verfahrensgebiet_layer_existiert_in_non_qgis_mode_returns_input testpruefmanager test_report_error_kritische_aktion_ruft_error_auf testpruefmanager test_report_error_warn_aktion_ruft_warning_auf testpruefmanager test_report_error_unbekannte_aktion_faellt_auf_warning_zurueck testpruefmanager test_frage_ja_nein_im_qgis_modus_fragt_nutzer testpruefmanager test_frage_ja_nein_ausserhalb_qgis_liefert_default_ohne_rueckfrage testpruefmanager test_frage_text_im_qgis_modus_fragt_nutzer testpruefmanager test_frage_text_ausserhalb_qgis_liefert_default_ohne_rueckfrage"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-pruefmanager-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_pruefmanager.py</span><spanclass="card-meta"><spanclass="count-total">24 T
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestPruefmanager<br><spanclass="testname">test_ok</span></td><td>Prüft, dass ein bereits erfolgreiches Prüfergebnis ohne Nutzerinteraktion als 'ok' durchgereicht wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestPruefmanager<br><spanclass="testname">test_leereingabe_erlaubt_ja</span></td><td>Prüft, dass bei erlaubter leerer Eingabe eine Ja-Antwort des Nutzers die Entscheidung 'ok' liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestPruefmanager<br><spanclass="testname">test_leereingabe_erlaubt_nein</span></td><td>Prüft, dass bei erlaubter leerer Eingabe eine Nein-Antwort die Aktion 'leereingabe_erlaubt' als abgelehnt bestehen lässt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestPruefmanager<br><spanclass="testname">test_standarddatei_vorschlagen_ja</span></td><td>Prüft, dass eine Ja-Antwort auf den Vorschlag der Standarddatei die Entscheidung 'ok' mit dem Standardpfad als Kontext liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestPruefmanager<br><spanclass="testname">test_standarddatei_vorschlagen_nein</span></td><td>Prüft, dass eine Nein-Antwort auf den Vorschlag der Standarddatei die Aktion 'standarddatei_vorschlagen' als abgelehnt bestehen lässt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestPruefmanager<br><spanclass="testname">test_temporaer_erlaubt_ja</span></td><td>Prüft, dass eine Ja-Antwort auf die Rückfrage nach einer temporären Datei die Aktion 'temporaer_erzeugen' auslöst.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestPruefmanager<br><spanclass="testname">test_temporaer_erlaubt_nein</span></td><td>Prüft, dass eine Nein-Antwort auf die Rückfrage nach einer temporären Datei die Aktion 'temporaer_erlaubt' als abgelehnt bestehen lässt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestPruefmanager<br><spanclass="testname">test_layer_unsichtbar_ja</span></td><td>Prüft, dass eine Ja-Antwort bei unsichtbarem Layer den Layer sichtbar schaltet und die Entscheidung 'ok' liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestPruefmanager<br><spanclass="testname">test_layer_unsichtbar_nein</span></td><td>Prüft, dass eine Nein-Antwort bei unsichtbarem Layer die Aktion 'layer_unsichtbar' als abgelehnt bestehen lässt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestPruefmanager<br><spanclass="testname">test_unbekannte_aktion</span></td><td>Prüft, dass eine unbekannte Aktion eine Warnung auslöst und unverarbeitet als Fehlschlag zurückgegeben wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestPruefmanager<br><spanclass="testname">test_datei_existiert_overwrite</span></td><td>Prüft, dass die Nutzerwahl 'überschreiben' bei bestehender Datei zur Aktion 'datei_existiert_ueberschreiben' führt.</td><td><spanclass="pill pill-ok">grün</spa
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">PolygonZuLinieTests<br><spanclass="testname">test_none_liefert_none</span></td><td>Prüft, dass polygon_zu_linie für None-Eingabe None liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">PolygonZuLinieTests<br><spanclass="testname">test_leere_geometrie_liefert_none</span></td><td>Prüft, dass eine leere Geometrie None liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">PolygonZuLinieTests<br><spanclass="testname">test_stufe1_nutzt_boundary_wenn_vorhanden</span></td><td>Prüft, dass eine Geometrie mit boundary() (QGIS 3.x-Pfad) deren Ergebnis direkt liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">PolygonZuLinieTests<br><spanclass="testname">test_stufe2_extrahiert_ringe_bei_einfachem_polygon</span></td><td>Prüft, dass ohne boundary() die Ringe eines einfachen Polygons manuell extrahiert werden.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">PolygonZuLinieTests<br><spanclass="testname">test_stufe2_extrahiert_alle_ringe_bei_multipolygon</span></td><td>Prüft, dass bei einem MultiPolygon die Ringe aller Teilpolygone extrahiert werden.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">PolygonZuLinieTests<br><spanclass="testname">test_stufe3_fallback_wenn_keine_ringe_extrahierbar</span></td><td>Prüft, dass bei fehlgeschlagener Ringextraktion auf convertToType zurückgefallen wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">PolygonZuLinieTests<br><spanclass="testname">test_alle_stufen_scheitern_liefert_none</span></td><td>Prüft, dass polygon_zu_linie None liefert, wenn Ringextraktion und convertToType beide scheitern.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LayerExistsInGpkgTests<br><spanclass="testname">test_fehlende_datei_liefert_false</span></td><td>Prüft, dass eine nicht vorhandene GPKG-Datei False liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LayerExistsInGpkgTests<br><spanclass="testname">test_leerer_pfad_oder_layername_liefert_false</span></td><td>Prüft, dass ein leerer Pfad oder Layername False liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LayerExistsInGpkgTests<br><spanclass="testname">test_vorhandener_layer_liefert_true</span></td><td>Prüft, dass ein in gpkg_contents eingetragener Layername als vorhanden erkannt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LayerExistsInGpkgTests<br><spanclass="testname">test_fehlender_layer_liefert_false</span></td><td>Prüft, dass ein nicht in gpkg_contents eingetragener Layername als nicht vorhanden gilt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CreateBufferLayerTests<br><spanclass="testname">test_ohne_qgis_liefert_none</span></td><td>Prüft, dass create_buffer_layer ohne verfügbares QGIS None liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">CreateBufferLayerTests<br><spanclass="testname">test_fehlender
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">AddLayerToProjectTests<br><spanclass="testname">test_none_layer_liefert_false</span></td><td>Prüft, dass add_layer_to_project für einen fehlenden Layer (None) False liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">AddLayerToProjectTests<br><spanclass="testname">test_mock_modus_liefert_true_ohne_projektzugriff</span></td><td>Prüft, dass im Mock-Modus (ohne QGIS) ein gültiger Layer True liefert, ohne das Projekt anzufassen.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">AddLayerToProjectTests<br><spanclass="testname">test_mit_qgis_fuegt_layer_dem_projekt_hinzu</span></td><td>Prüft, dass bei verfügbarem QGIS der Layer über QgsProject.instance().addMapLayer hinzugefügt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">AddLayerToProjectTests<br><spanclass="testname">test_mit_qgis_fehler_liefert_false</span></td><td>Prüft, dass ein Fehler beim Hinzufügen zum Projekt abgefangen wird und False liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">FindDockWidgetsTests<br><spanclass="testname">test_ohne_main_window_liefert_leere_liste</span></td><td>Prüft, dass find_dock_widgets ohne verfügbares Hauptfenster eine leere Liste liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">FindDockWidgetsTests<br><spanclass="testname">test_liefert_dock_widgets_des_main_window</span></td><td>Prüft, dass find_dock_widgets die vom Hauptfenster gefundenen Dock-Widgets durchreicht.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">FindDockWidgetsTests<br><spanclass="testname">test_fehler_beim_suchen_liefert_leere_liste</span></td><td>Prüft, dass ein Fehler beim Suchen der Dock-Widgets abgefangen wird und eine leere Liste liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">AddRemoveMenuTests<br><spanclass="testname">test_add_menu_ohne_main_window_tut_nichts</span></td><td>Prüft, dass add_menu ohne Hauptfenster keine Ausnahme wirft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">AddRemoveMenuTests<br><spanclass="testname">test_add_menu_mit_echtem_qt_menu_fuegt_es_der_menubar_hinzu</span></td><td>Prüft, dass ein echtes Qt-Menü (mit menuAction) der Menüleiste hinzugefügt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">AddRemoveMenuTests<br><spanclass="testname">test_add_menu_ohne_menuaction_wird_ignoriert</span></td><td>Prüft, dass ein Objekt ohne menuAction nicht an die Menüleiste übergeben wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">AddRemoveMenuTests<br><spanclass="testname">test_remove_menu_entfernt_ueber_menuaction</span></td><td>Prüft, dass remove_menu das Menü über dessen menuAction() aus der Menüleiste entfernt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">AddRemoveMenuTests<br><spanclass="testname">test_remove_menu_ohne_main_window_tut_nichts</span></td><td>Prüft, dass remove_menu ohne Hauptfenster keine Ausnahme wirft.</td><td><spanclass="pill pill-ok">grün</span>
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestSettingsLogic<br><spanclass="testname">test_load</span></td><td>Prüft, dass load() jede bekannte Projektvariable genau einmal über get_variable() liest.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestSettingsLogic<br><spanclass="testname">test_save</span></td><td>Prüft, dass save() nur bekannte Variablen-Keys speichert und unbekannte Keys ignoriert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestSettingsLogic<br><spanclass="testname">test_load_handles_partial_values_with_empty_fallback</span></td><td>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.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestSettingsLogic<br><spanclass="testname">test_save_empty_string_value_is_persisted</span></td><td>Prüft, dass save() einen leeren String als gültigen Wert speichert, statt ihn wie einen fehlenden Key zu behandeln.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_settings_tab.py savedatatests test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl savedatatests test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt loaddatatests test_befuellt_textfelder_aus_gespeicherten_daten loaddatatests test_ohne_gespeicherten_wert_bleibt_textfeld_leer loaddatatests test_waehlt_combobox_eintrag_bei_bekanntem_namen loaddatatests test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag buildinputtests test_landkreis_feld_liefert_combobox_mit_allen_landkreisen buildinputtests test_anderes_feld_liefert_lineedit"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-settings-tab-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_settings_tab.py</span><spanclass="card-meta"><spanclass="count-total">8 Testfälle</span><spanclass="cpill cpill-ok">8</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">0% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-settings-tab-py"><pclass="filedesc">Tests für sn_basis/ui/tabs/settings_tab.py::save_data/load_data/_build_input (Issue #65/#67).</p><divclass="gchips"><spanclass="gchip"title="">SaveDataTests <b>2</b></span><spanclass="gchip"title="">LoadDataTests <b>4</b></span><spanclass="gchip"title="">BuildInputTests <b>2</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">SaveDataTests<br><spanclass="testname">test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl</span></td><td>Prüft, dass save_data Text- und Dropdown-Werte sammelt und die Landkreiskennzahl separat ergänzt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">SaveDataTests<br><spanclass="testname">test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt</span></td><td>Prüft, dass ohne Landkreis-Dropdown im Formular keine 'landkreis_kennzahl' ergänzt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LoadDataTests<br><spanclass="testname">test_befuellt_textfelder_aus_gespeicherten_daten</span></td><td>Prüft, dass load_data ein Textfeld mit dem gespeicherten Wert befüllt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LoadDataTests<br><spanclass="testname">test_ohne_gespeicherten_wert_bleibt_textfeld_leer</span></td><td>Prüft, dass load_data ohne gespeicherten Wert das Textfeld auf einen leeren Text setzt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LoadDataTests<br><spanclass="testname">test_waehlt_combobox_eintrag_bei_bekanntem_namen</span></td><td>Prüft, dass load_data im Landkreis-Dropdown den gespeicherten Landkreisnamen auswählt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">LoadDataTests<br><spanclass="testname">test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag</span></td><td>Prüft, dass load_data bei einem nicht mehr vorhandenen Landkreisnamen auf den ersten Eintrag zurückfällt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">BuildInputTests<br><spanclass="testname">test_landkreis_feld_liefert_combobox_mit_allen_landkreisen</span></td><td>Prüft, dass _build_input für das Landkreis-Feld eine ComboBox mit Platzhalter und allen Landkreisen liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">BuildInputTests<br><spanclass="testname">test_anderes_feld_liefert_lineedit</span></td><td>Prüft, dass _build_input für ein normales Feld ein leeres Textfeld liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_stilpruefer.py teststilpruefer test_keine_datei_angegeben teststilpruefer test_datei_existiert_mit_qml teststilpruefer test_datei_existiert_falsche_endung teststilpruefer test_datei_existiert_nicht"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="0"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-stilpruefer-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_stilpruefer.py</span><spanclass="card-meta"><spanclass="count-total">4 Testfälle</span><spanclass="cpill cpill-ok">4</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">100% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-stilpruefer-py"><pclass="filedesc">— (Docstring fehlt)</p><divclass="gchips"><spanclass="gchip"title="">TestStilpruefer <b>4</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestStilpruefer<br><spanclass="testname">test_keine_datei_angegeben</span></td><td>Prüft, dass eine leere Pfadangabe als 'ok' ohne Kontext akzeptiert wird (Stil ist optional).</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestStilpruefer<br><spanclass="testname">test_datei_existiert_mit_qml</span></td><td>Prüft, dass eine existierende .qml-Datei als 'stil_anwendbar' bestätigt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestStilpruefer<br><spanclass="testname">test_datei_existiert_falsche_endung</span></td><td>Prüft, dass eine existierende Datei ohne .qml-Endung als 'falsche_endung' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">TestStilpruefer<br><spanclass="testname">test_datei_existiert_nicht</span></td><td>Prüft, dass ein nicht existierender .qml-Pfad als 'datei_nicht_gefunden' abgelehnt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_sys_wrapper.py testgetpluginroot test_get_plugin_root_folgt_keiner_verzeichnisverknuepfung joinpathtests test_verbindet_mehrere_pfadbestandteile ensuredirtests test_legt_fehlendes_verzeichnis_inklusive_eltern_an ensuredirtests test_vorhandenes_verzeichnis_wirft_keinen_fehler getattrsafetests test_liefert_vorhandenes_attribut getattrsafetests test_liefert_default_bei_fehlendem_attribut"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-sys-wrapper-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_sys_wrapper.py</span><spanclass="card-meta"><spanclass="count-total">6 Testfälle</span><spanclass="cpill cpill-ok">6</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">17% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-sys-wrapper-py"><pclass="filedesc">Unit-Tests für sn_basis.functions.sys_wrapper.get_plugin_root().</p><divclass="gchips"><spanclass="gchip"title="">TestGetPluginRoot <b>1</b></span><spanclass="gchip"title="">JoinPathTests <b>1</b></span><spanclass="gchip"title="">EnsureDirTests <b>2</b></span><spanclass="gchip"title="">GetattrSafeTests <b>2</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestGetPluginRoot<br><spanclass="testname">test_get_plugin_root_folgt_keiner_verzeichnisverknuepfung</span></td><td>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).</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><tdclass="mono">JoinPathTests<br><spanclass="testname">test_verbindet_mehrere_pfadbestandteile</span></td><td>Prüft, dass join_path mehrere Bestandteile OS-sicher zu einem Path zusammenfügt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">EnsureDirTests<br><spanclass="testname">test_legt_fehlendes_verzeichnis_inklusive_eltern_an</span></td><td>Prüft, dass ensure_dir ein fehlendes Verzeichnis samt Elternverzeichnissen anlegt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">EnsureDirTests<br><spanclass="testname">test_vorhandenes_verzeichnis_wirft_keinen_fehler</span></td><td>Prüft, dass ensure_dir bei einem bereits vorhandenen Verzeichnis keinen Fehler wirft.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">GetattrSafeTests<br><spanclass="testname">test_liefert_vorhandenes_attribut</span></td><td>Prüft, dass getattr_safe ein vorhandenes Attribut liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">GetattrSafeTests<br><spanclass="testname">test_liefert_default_bei_fehlendem_attribut</span></td><td>Prüft, dass getattr_safe bei fehlendem Attribut den Default-Wert liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_text_wrapper.py testsanitizebezeichner test_umlaute_bleiben_erhalten testsanitizebezeichner test_bindestrich_bleibt_erhalten testsanitizebezeichner test_unterstrich_bleibt_erhalten testsanitizebezeichner test_leerzeichen_wird_durch_ersatz_zusammengefasst testsanitizebezeichner test_fuehrender_und_folgender_ersatz_wird_entfernt testsanitizebezeichner test_eigenes_ersatzzeichen_wird_verwendet testsanitizebezeichner test_nur_unzulaessige_zeichen_ergibt_leeren_string"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-text-wrapper-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_text_wrapper.py</span><spanclass="card-meta"><spanclass="count-total">7 Testfälle</span><spanclass="cpill cpill-ok">7</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">0% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-text-wrapper-py"><pclass="filedesc">Unit-Tests für `sn_basis.functions.text_wrapper`.</p><divclass="gchips"><spanclass="gchip"title="">TestSanitizeBezeichner <b>7</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestSanitizeBezeichner<br><spanclass="testname">test_umlaute_bleiben_erhalten</span></td><td>Prüft, dass Umlaute und ß nicht durch den Ersatz entfernt werden.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestSanitizeBezeichner<br><spanclass="testname">test_bindestrich_bleibt_erhalten</span></td><td>Prüft, dass ein Bindestrich im Bezeichner erhalten bleibt (Issue #42).</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestSanitizeBezeichner<br><spanclass="testname">test_unterstrich_bleibt_erhalten</span></td><td>Prüft, dass ein Unterstrich im Bezeichner erhalten bleibt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestSanitizeBezeichner<br><spanclass="testname">test_leerzeichen_wird_durch_ersatz_zusammengefasst</span></td><td>Prüft, dass Leerzeichen (kein zulässiges Zeichen) zu einem Ersatzzeichen werden.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestSanitizeBezeichner<br><spanclass="testname">test_fuehrender_und_folgender_ersatz_wird_entfernt</span></td><td>Prüft, dass ein Ersatzzeichen am Anfang oder Ende des Ergebnisses entfernt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestSanitizeBezeichner<br><spanclass="testname">test_eigenes_ersatzzeichen_wird_verwendet</span></td><td>Prüft, dass ein abweichendes Ersatzzeichen anstelle von Unterstrich genutzt wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestSanitizeBezeichner<br><spanclass="testname">test_nur_unzulaessige_zeichen_ergibt_leeren_string</span></td><td>Prüft, dass ein Bezeichner ganz aus unzulässigen Zeichen zu einem leeren String wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_variable_wrapper.py testvariablewrapper test_set_variable_project_noop_write_is_skipped testvariablewrapper test_set_variable_project_changed_value_is_written testvariablewrapper test_set_variable_global_writes_prefixed_name testvariablewrapper test_get_variable_global_returns_empty_string_fallback testvariablewrapper test_get_variable_invalid_scope_raises testvariablewrapper test_set_variable_invalid_scope_raises"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-variable-wrapper-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_variable_wrapper.py</span><spanclass="card-meta"><spanclass="count-total">6 Testfälle</span><spanclass="cpill cpill-ok">6</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">0% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-variable-wrapper-py"><pclass="filedesc">— (Docstring fehlt)</p><divclass="gchips"><spanclass="gchip"title="">TestVariableWrapper <b>6</b></span></div><divclass="diagram-wrap"><preclass="mermaid">flowchart TD
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestVariableWrapper<br><spanclass="testname">test_set_variable_project_noop_write_is_skipped</span></td><td>Prüft, dass set_variable() im Projekt-Scope nicht schreibt, wenn der neue Wert dem bestehenden entspricht.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestVariableWrapper<br><spanclass="testname">test_set_variable_project_changed_value_is_written</span></td><td>Prüft, dass set_variable() im Projekt-Scope bei geändertem Wert mit dem Präfix 'sn_' geschrieben wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestVariableWrapper<br><spanclass="testname">test_set_variable_global_writes_prefixed_name</span></td><td>Prüft, dass set_variable() im globalen Scope den Variablennamen mit 'sn_' vorangestellt schreibt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestVariableWrapper<br><spanclass="testname">test_get_variable_global_returns_empty_string_fallback</span></td><td>Prüft, dass get_variable() im globalen Scope für eine nicht gesetzte Variable einen leeren String liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestVariableWrapper<br><spanclass="testname">test_get_variable_invalid_scope_raises</span></td><td>Prüft, dass get_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestVariableWrapper<br><spanclass="testname">test_set_variable_invalid_scope_raises</span></td><td>Prüft, dass set_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><articleclass="filecard"data-search="plugin_sn_basis/tests/test_verfahrensgebiet_manager.py testverfahrensgebietmanager test_get_verfahrensgebiet_layer_id_returns_value testverfahrensgebietmanager test_get_verfahrensgebiet_layer_id_returns_none_for_empty_value testverfahrensgebietmanager test_set_verfahrensgebiet_layer_id_writes_project_variable testverfahrensgebietmanager test_update_without_layer_does_not_write_when_already_empty testverfahrensgebietmanager test_update_with_layer_writes_variable onhandlertests test_on_project_changed_ohne_layer_setzt_variable_leer onhandlertests test_on_project_changed_mit_layer_setzt_variable onhandlertests test_on_layers_added_findet_neuen_layer onhandlertests test_on_layer_removed_bei_aktuellem_layer_sucht_neu onhandlertests test_on_layer_removed_bei_anderem_layer_aendert_nichts listenersetuptests test_setup_ohne_qgis_tut_nichts listenersetuptests test_setup_verbindet_signale_und_ist_idempotent listenersetuptests test_teardown_trennt_alle_signale_und_ist_idempotent"data-hasred="0"data-hasskip="0"data-nodoc="0"data-ungeprueft="1"data-veraltet="0"><buttonclass="card-toggle"data-target="plugin-sn-basis-tests-test-verfahrensgebiet-manager-py"aria-expanded="false"><spanclass="card-path mono">Plugin_SN_Basis/tests/test_verfahrensgebiet_manager.py</span><spanclass="card-meta"><spanclass="count-total">13 Testfälle</span><spanclass="cpill cpill-ok">13</span><spanclass="docbadge"title="Anteil mit Docstring">100% beschrieben</span><spanclass="auditbadge"title="Anteil fachlich aktuell geprüft">0% geprüft</span><spanclass="chev"aria-hidden="true">▾</span></span></button><divclass="card-body"id="body-plugin-sn-basis-tests-test-verfahrensgebiet-manager-py"><pclass="filedesc">Tests f
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestVerfahrensgebietManager<br><spanclass="testname">test_get_verfahrensgebiet_layer_id_returns_value</span></td><td>Prüft, dass get_verfahrensgebiet_layer_id() die in der Projektvariable gespeicherte Layer-ID liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestVerfahrensgebietManager<br><spanclass="testname">test_get_verfahrensgebiet_layer_id_returns_none_for_empty_value</span></td><td>Prüft, dass get_verfahrensgebiet_layer_id() bei leerer Projektvariable None statt eines leeren Strings liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestVerfahrensgebietManager<br><spanclass="testname">test_set_verfahrensgebiet_layer_id_writes_project_variable</span></td><td>Prüft, dass set_verfahrensgebiet_layer_id() die Layer-ID als Projektvariable 'verfahrensgebiet_layer' speichert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestVerfahrensgebietManager<br><spanclass="testname">test_update_without_layer_does_not_write_when_already_empty</span></td><td>Prüft, dass ohne gefundenen Verfahrensgebiet-Layer keine Schreibaktion erfolgt, wenn die Variable bereits leer ist.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestVerfahrensgebietManager<br><spanclass="testname">test_update_with_layer_writes_variable</span></td><td>Prüft, dass ein gefundener Verfahrensgebiet-Layer seine ID als Projektvariable speichert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">OnHandlerTests<br><spanclass="testname">test_on_project_changed_ohne_layer_setzt_variable_leer</span></td><td>Prüft, dass _on_project_changed die Variable leert, wenn kein Verfahrensgebiet-Layer existiert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">OnHandlerTests<br><spanclass="testname">test_on_project_changed_mit_layer_setzt_variable</span></td><td>Prüft, dass _on_project_changed die Layer-ID eines gefundenen Verfahrensgebiet-Layers übernimmt.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">OnHandlerTests<br><spanclass="testname">test_on_layers_added_findet_neuen_layer</span></td><td>Prüft, dass _on_layers_added nach neu hinzugefügten Layern sucht und die Variable aktualisiert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">OnHandlerTests<br><spanclass="testname">test_on_layer_removed_bei_aktuellem_layer_sucht_neu</span></td><td>Prüft, dass das Entfernen des aktuell aktiven Verfahrensgebiet-Layers eine Neusuche auslöst.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">OnHandlerTests<br><spanclass="testname">test_on_layer_removed_bei_anderem_layer_aendert_nichts</span></td><td>Prüft, dass das Entfernen eines anderen Layers keine Neusuche auslöst.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ListenerSetupTests<br><spanclass="testname">test_setup_ohne_qgis_tut_nichts</span></td><td>Prüft, dass setup_verfahrensgebiet_listener ohne QGIS keine Signale registriert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">ListenerSetupTest
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestFlurstueckAlkis<br><spanclass="testname">test_user_cancel_returns_none</span></td><td>Prüft, dass ein Abbruch im Eingabedialog (ok=False) (None, LoadStatus.NONE) liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestFlurstueckAlkis<br><spanclass="testname">test_empty_text_after_confirmation_returns_none</span></td><td>Prüft, dass ein bestätigter, aber leerer Eingabetext ebenfalls (None, LoadStatus.NONE) liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestFlurstueckAlkis<br><spanclass="testname">test_invalid_wfs_layer_returns_none</span></td><td>Prüft, dass ein ungültiger WFS-Layer (None, LoadStatus.NONE) liefert.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestFlurstueckAlkis<br><spanclass="testname">test_success_returns_layer_and_first_status</span></td><td>Prüft, dass ohne bestehenden Layer der von lade_flurstuecke_per_gemarkung gelieferte Layer mit LoadStatus.FIRST zurückgegeben wird.</td><td><spanclass="pill pill-warn">rot</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestFlurstueckAlkis<br><spanclass="testname">test_sql_filter_contains_all_schluessel</span></td><td>Prüft, dass lade_flurstuecke_per_gemarkung für jeden Gemarkungsschlüssel eine eigene WFS-Anfrage mit dessen Schlüssel stellt.</td><td><spanclass="pill pill-warn">rot</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestFlurstueckAlkis<br><spanclass="testname">test_existing_layer_reload_yes</span></td><td>Prüft, dass bei bestehendem Layer und Klick auf 'Überschreiben' der alte Layer entfernt und LoadStatus.RELOAD geliefert wird.</td><td><spanclass="pill pill-warn">rot</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestFlurstueckAlkis<br><spanclass="testname">test_existing_layer_abbrechen_returns_none</span></td><td>Prüft, dass bei bestehendem Layer und Klick auf 'Abbrechen' nichts verändert wird und (None, LoadStatus.NONE) geliefert wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestFlurstueckAlkis<br><spanclass="testname">test_vorgabe_schluessel_prefills_default_text</span></td><td>Prüft, dass vorgabe_schluessel als vorbelegter default_text im Eingabedialog erscheint.</td><td><spanclass="pill pill-warn">rot</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestFlurstueckAlkis<br><spanclass="testname">test_vorgabe_namen_appears_in_label</span></td><td>Prüft, dass vorgabe_namen im Beschriftungstext des Eingabedialogs erscheint.</td><td><spanclass="pill pill-warn">rot</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestFlurstueckAlkis<br><spanclass="testname">test_backwards_compatible_no_new_params</span></td><td>Prüft, dass flurstueck_alkis() ohne die neuen optionalen Parameter weiterhin fehlerfrei einen Layer mit LoadStatus.FIRST liefert.</td><td><spanclass="pill pill-warn">rot</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestFlurstueckAlkis<br><spanclass="testname">test_ohne_schluessel_abfrage_ueberspringt_ask_text</span></td><td>Prüft, dass ohne_schluessel_abfrage=True vorgabe_schluessel direkt verwendet und ask_text nicht aufgerufen wird.</td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestFlurstueckAlkisAnhae
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><tableclass="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><tdclass="mono">TestExtractSchluesselUndName<br><spanclass="testname">test_standard_attribute</span></td><td><spanclass="nodoc">— (Docstring fehlt)</span></td><td><spanclass="pill pill-warn">rot</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestExtractSchluesselUndName<br><spanclass="testname">test_fallback_attribute</span></td><td><spanclass="nodoc">— (Docstring fehlt)</span></td><td><spanclass="pill pill-warn">rot</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestExtractSchluesselUndName<br><spanclass="testname">test_missing_attribute_returns_empty</span></td><td><spanclass="nodoc">— (Docstring fehlt)</span></td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestExtractSchluesselUndName<br><spanclass="testname">test_none_value_returns_empty</span></td><td><spanclass="nodoc">— (Docstring fehlt)</span></td><td><spanclass="pill pill-ok">grün</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestGemarkungSchluesselbbox<br><spanclass="testname">test_success_bbox_filter</span></td><td>WFS-BBox-Filter liefert Features → korrekte Tupel-Liste.</td><td><spanclass="pill pill-skip"title="Legacy API (by_bbox) not available in current module">übersp.</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestGemarkungSchluesselbbox<br><spanclass="testname">test_fallback_when_bbox_fails</span></td><td>BBox-Filter schlägt fehl → Fallback auf Volllade + client-seitige Filterung.</td><td><spanclass="pill pill-skip"title="Legacy API (by_bbox) not available in current module">übersp.</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestGemarkungSchluesselbbox<br><spanclass="testname">test_both_layers_fail_returns_empty</span></td><td>Beide Lade-Strategien scheitern → leere Liste.</td><td><spanclass="pill pill-skip"title="Legacy API (by_bbox) not available in current module">übersp.</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestGemarkungSchluesselbbox<br><spanclass="testname">test_deduplication_and_sorting</span></td><td>Doppelte Schlüssel werden dedupliziert, Ergebnis ist sortiert.</td><td><spanclass="pill pill-skip"title="Legacy API (by_bbox) not available in current module">übersp.</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestGemarkungSchluesselbbox<br><spanclass="testname">test_feature_without_schluessel_skipped</span></td><td>Feature ohne Schlüssel-Attribut wird übersprungen.</td><td><spanclass="pill pill-skip"title="Legacy API (by_bbox) not available in current module">übersp.</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestGemarkungSchluesselbbox<br><spanclass="testname">test_exception_returns_empty</span></td><td>Exception im Ladevorgang → leere Liste (kein Crash).</td><td><spanclass="pill pill-skip"title="Legacy API (by_bbox) not available in current module">übersp.</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestGemarkungSchluesselnurNummern<br><spanclass="testname">test_returns_only_nummern</span></td><td><spanclass="nodoc">— (Docstring fehlt)</span></td><td><spanclass="pill pill-skip"title="Legacy API (by_bbox) not available in current module">übersp.</span></td><td><spanclass="pill pill-pr-skip">nie geprüft</span></td></tr><tr><tdclass="mono">TestGemarkungSchluesselnurNummern<br><spanclass="testname">test_empty_input_returns_empty</span></td><td><spanclass="nodoc">— (Docstring fehlt)</span></td><td><spanclass="pill
<footer>Erzeugt von <spanclass="mono">python scripts/testkatalog.py</span> aus den unittest-Suiten der sn_*-Plugins. Diagramme gruppieren Testfälle je Testdatei nach <spanclass="mono">unittest.TestCase</span>-Klasse; Farbe zeigt den Baseline-Status (grün / rot / übersprungen), nicht die fachliche Wichtigkeit.</footer>