Test-Audit sn_basis fortgesetzt: landkreise.py und LayerLoader.py fachlich geprüft (#76)

38 Testfälle fachlich geprüft und markiert: test_landkreise.py komplett (6, inkl.
4 neuer Tests) und test_layerloader.py komplett (32, inkl. 7 neuer Tests). Dabei
gefunden und in Plugin_SN_Basis als Issues vorbereitet (Absenden durch den
Menschen): #80 (REST-Link ohne Layer-Index lädt still Layer 0), #81 (unbekannter
Provider fällt still auf ogr zurück), #82 (Datenabruf und LayerLoader bauen aus
demselben REST-Link widersprüchliche URLs), #83 (filter_by_extent/filter_by_layer
reichen ungültige Layer still durch).

Testkatalog neu erzeugt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-22 15:26:25 +02:00
co-authored by Claude Sonnet 5
parent a6dfbefbd4
commit 94ab55923d
3 changed files with 264 additions and 73 deletions
+152
View File
@@ -331,6 +331,158 @@
"datum": "2026-09-17", "datum": "2026-09-17",
"hash": "14f73fb0a974" "hash": "14f73fb0a974"
}, },
"sn_basis.tests.test_landkreise.AlleLandkreiseSentinelTests.test_alle_landkreise_sentinel_kollidiert_nicht_mit_echter_kennzahl": {
"datum": "2026-09-22",
"hash": "3904d6ac7626"
},
"sn_basis.tests.test_landkreise.LadeLandkreiseTests.test_alle_kennzahlen_kommen_genau_einmal_vor": {
"datum": "2026-09-22",
"hash": "fca83f397af2"
},
"sn_basis.tests.test_landkreise.LadeLandkreiseTests.test_fehlende_datei_liefert_leere_liste": {
"datum": "2026-09-22",
"hash": "247c9b9bc02e"
},
"sn_basis.tests.test_landkreise.LadeLandkreiseTests.test_laedt_die_echte_landkreisliste_nicht_leer": {
"datum": "2026-09-22",
"hash": "5daef82a286e"
},
"sn_basis.tests.test_landkreise.LadeLandkreiseTests.test_ungueltiges_json_liefert_leere_liste": {
"datum": "2026-09-22",
"hash": "29c14c5d2401"
},
"sn_basis.tests.test_landkreise.LandkreislisteVollstaendigkeitTests.test_landkreisliste_enthaelt_alle_13_saechsischen_gebietskoerperschaften": {
"datum": "2026-09-22",
"hash": "6081fa0fbbd1"
},
"sn_basis.tests.test_layerloader.AddToProjectTests.test_gueltiger_layer_wird_dem_projekt_hinzugefuegt": {
"datum": "2026-09-22",
"hash": "7c8ed62e7051"
},
"sn_basis.tests.test_layerloader.AddToProjectTests.test_none_layer_wird_nicht_hinzugefuegt": {
"datum": "2026-09-22",
"hash": "db489f5f485f"
},
"sn_basis.tests.test_layerloader.AddToProjectTests.test_ungueltiger_layer_wird_nicht_hinzugefuegt": {
"datum": "2026-09-22",
"hash": "1261f9711940"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_ausnahme_beim_erstellen_wird_abgefangen": {
"datum": "2026-09-22",
"hash": "12cd21f33e57"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_ogr_provider_nutzt_link_direkt": {
"datum": "2026-09-22",
"hash": "1910e68956dd"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_rest_featureserver_ergaenzt_layer_index": {
"datum": "2026-09-22",
"hash": "776f68881c59"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_rest_mit_url_praefix_wird_nicht_doppelt_gesetzt": {
"datum": "2026-09-22",
"hash": "25d8a8ad0d5a"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_rest_ohne_featureserver_endung_bleibt_unveraendert": {
"datum": "2026-09-22",
"hash": "fc7415b43710"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_unbekannter_provider_faellt_auf_ogr_zurueck": {
"datum": "2026-09-22",
"hash": "6bb5f7ab89e3"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_ungueltiger_layer_meldet_layer_nicht_verfuegbar": {
"datum": "2026-09-22",
"hash": "feabb435d115"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_wfs_baut_uri_ohne_getfeature_parameter": {
"datum": "2026-09-22",
"hash": "92bb8d53e711"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_wfs_ergaenzt_service_und_version_defaults": {
"datum": "2026-09-22",
"hash": "81ecbf43a140"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_wfs_erkennt_typename_in_grossschreibung": {
"datum": "2026-09-22",
"hash": "2898b56c4e1c"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_wfs_mit_url_praefix_wird_nicht_doppelt_gesetzt": {
"datum": "2026-09-22",
"hash": "5385bc25e511"
},
"sn_basis.tests.test_layerloader.CreateLayerTests.test_wms_baut_url_praefix_und_nutzt_rasterlayer": {
"datum": "2026-09-22",
"hash": "407c1a9ba825"
},
"sn_basis.tests.test_layerloader.FilterByExtentTests.test_abbruch_liefert_none_und_meldet_needs_user_action": {
"datum": "2026-09-22",
"hash": "839e5055e5eb"
},
"sn_basis.tests.test_layerloader.FilterByExtentTests.test_erfolgreicher_filter_liefert_neuen_layer_mit_features": {
"datum": "2026-09-22",
"hash": "d42dbc209f8d"
},
"sn_basis.tests.test_layerloader.FilterByExtentTests.test_falscher_layertyp_wird_unveraendert_zurueckgegeben": {
"datum": "2026-09-22",
"hash": "571bcc79cd34"
},
"sn_basis.tests.test_layerloader.FilterByExtentTests.test_keine_treffer_liefert_none": {
"datum": "2026-09-22",
"hash": "ead34605a071"
},
"sn_basis.tests.test_layerloader.FilterByExtentTests.test_ohne_extent_wird_layer_unveraendert_zurueckgegeben": {
"datum": "2026-09-22",
"hash": "6df5b38eda97"
},
"sn_basis.tests.test_layerloader.FilterByExtentTests.test_ungueltiger_layer_wird_unveraendert_zurueckgegeben": {
"datum": "2026-09-22",
"hash": "f98f92c748d3"
},
"sn_basis.tests.test_layerloader.FilterByLayerTests.test_erfolgreicher_geometriefilter_liefert_neuen_layer": {
"datum": "2026-09-22",
"hash": "8bc46d7cc336"
},
"sn_basis.tests.test_layerloader.FilterByLayerTests.test_filterlayer_ohne_features_liefert_none": {
"datum": "2026-09-22",
"hash": "a8963f651828"
},
"sn_basis.tests.test_layerloader.FilterByLayerTests.test_keine_ueberschneidung_liefert_none": {
"datum": "2026-09-22",
"hash": "4d033b3df276"
},
"sn_basis.tests.test_layerloader.FilterByLayerTests.test_ungueltiger_layer_oder_filterlayer_wird_unveraendert_zurueckgegeben": {
"datum": "2026-09-22",
"hash": "29d5ae987f69"
},
"sn_basis.tests.test_layerloader.TransformExtentTests.test_ausnahme_bei_der_extent_transformation_liefert_extent_unveraendert": {
"datum": "2026-09-22",
"hash": "f11e2c936436"
},
"sn_basis.tests.test_layerloader.TransformExtentTests.test_gleiche_crs_liefert_extent_unveraendert": {
"datum": "2026-09-22",
"hash": "7f5d3da32cfc"
},
"sn_basis.tests.test_layerloader.TransformExtentTests.test_unterschiedliche_crs_nutzt_coordinate_transform": {
"datum": "2026-09-22",
"hash": "1f99cdecd25a"
},
"sn_basis.tests.test_layerloader.TransformGeometryTests.test_ausnahme_bei_der_transformation_liefert_geometrie_unveraendert": {
"datum": "2026-09-22",
"hash": "6cfb8b4dbd06"
},
"sn_basis.tests.test_layerloader.TransformGeometryTests.test_fehlender_layer_liefert_geometrie_unveraendert": {
"datum": "2026-09-22",
"hash": "9577d78fb696"
},
"sn_basis.tests.test_layerloader.TransformGeometryTests.test_gleiche_crs_liefert_geometrie_unveraendert": {
"datum": "2026-09-22",
"hash": "31d753a90fb5"
},
"sn_basis.tests.test_layerloader.TransformGeometryTests.test_unterschiedliche_crs_klont_und_transformiert_geometrie": {
"datum": "2026-09-22",
"hash": "ec11affdda72"
},
"sn_basis.tests.test_layerpruefer.TestLayerpruefer.test_datenquelle_unerwartet": { "sn_basis.tests.test_layerpruefer.TestLayerpruefer.test_datenquelle_unerwartet": {
"datum": "2026-09-17", "datum": "2026-09-17",
"hash": "4b838528f751" "hash": "4b838528f751"
File diff suppressed because one or more lines are too long
+52 -39
View File
@@ -8,21 +8,21 @@ für die fachliche Frage, ob die Abdeckung sinnvoll ist. Die Angaben stammen aus
selbst (Docstrings) und aus der Testbaseline. selbst (Docstrings) und aus der Testbaseline.
Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`) Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`)
Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `ab63e2f916cd`) Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `2f7e27c76ee7`)
Gesamt: 3 Pakete, 49 Testdateien, 581 Testfälle – 538 grün, 35 rot (Baseline), 8 übersprungen. Gesamt: 3 Pakete, 49 Testdateien, 592 Testfälle – 549 grün, 35 rot (Baseline), 8 übersprungen.
Mit Beschreibung (Docstring): 436 von 581 (75 %). Mit Beschreibung (Docstring): 447 von 592 (76 %).
Fachlich geprüft: 122 von 581 (21 %) aktuell, 0 veraltet seit Codeänderung, 459 nie geprüft. Fachlich geprüft: 160 von 592 (27 %) aktuell, 0 veraltet seit Codeänderung, 432 nie geprüft.
Strukturelle Lücken (heuristisch, Namensabgleich): 145 von 413 (35 %) Funktionen/Methoden ohne erkennbaren Testbezug – Abschnitt „Ungetestete Funktionen“. Strukturelle Lücken (heuristisch, Namensabgleich): 145 von 413 (35 %) Funktionen/Methoden ohne erkennbaren Testbezug – Abschnitt „Ungetestete Funktionen“.
## Zusammenfassung ## Zusammenfassung
| Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung | fachlich geprüft | ohne Testbezug | | Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung | fachlich geprüft | ohne Testbezug |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| `sn_basis` | 32 | 329 | 329 | 0 | 0 | 329 von 329 (100 %) | 122 von 329 (37 %) | 72 von 229 (31 %) | | `sn_basis` | 32 | 340 | 340 | 0 | 0 | 340 von 340 (100 %) | 160 von 340 (47 %) | 72 von 229 (31 %) |
| `sn_verfahrensgebiet` | 12 | 208 | 166 | 34 | 8 | 106 von 208 (51 %) | 0 von 208 (0 %) | 34 von 104 (33 %) | | `sn_verfahrensgebiet` | 12 | 208 | 166 | 34 | 8 | 106 von 208 (51 %) | 0 von 208 (0 %) | 34 von 104 (33 %) |
| `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | 0 von 44 (0 %) | 39 von 80 (49 %) | | `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | 0 von 44 (0 %) | 39 von 80 (49 %) |
| **Summe** | **49** | **581** | **538** | **35** | **8** | **436 von 581 (75 %)** | **122 von 581 (21 %)** | **145 von 413 (35 %)** | | **Summe** | **49** | **592** | **549** | **35** | **8** | **447 von 592 (76 %)** | **160 von 592 (27 %)** | **145 von 413 (35 %)** |
### Legende ### Legende
@@ -36,7 +36,7 @@ Strukturelle Lücken (heuristisch, Namensabgleich): 145 von 413 (35 %) Funktione
## Paket `sn_basis` ## Paket `sn_basis`
Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 329 Testfällen (329 grün, 0 rot, 0 übersprungen). Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 340 Testfällen (340 grün, 0 rot, 0 übersprungen).
### `Plugin_SN_Basis/tests/test_base_dockwidget.py` ### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
@@ -237,12 +237,18 @@ Worum es in der Datei geht: Tests für sn_basis/functions/landkreise.py::_lade_l
Testgruppen: Testgruppen:
- `LadeLandkreiseTests` (2 Testfälle): — (Docstring fehlt) - `LadeLandkreiseTests` (4 Testfälle): — (Docstring fehlt)
- `LandkreislisteVollstaendigkeitTests` (1 Testfälle): — (Docstring fehlt)
- `AlleLandkreiseSentinelTests` (1 Testfälle): — (Docstring fehlt)
| Testfall | prüft | Status | geprüft | | Testfall | prüft | Status | geprüft |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| `LadeLandkreiseTests.test_laedt_die_echte_landkreisliste_nicht_leer` | Prüft, dass _lade_landkreise die echte landkreise.json als nicht-leere Liste von (Kennzahl, Name)-Tupeln liefert. | grün | nie geprüft | | `LadeLandkreiseTests.test_laedt_die_echte_landkreisliste_nicht_leer` | Prüft, dass _lade_landkreise die echte landkreise.json als nicht-leere Liste von (Kennzahl, Name)-Tupeln liefert. | grün | geprüft am 2026-09-22 |
| `LadeLandkreiseTests.test_fehlende_datei_liefert_leere_liste` | Prüft, dass eine nicht lesbare Datenquelle eine leere Liste liefert, statt eine Ausnahme zu werfen. | grün | nie geprüft | | `LadeLandkreiseTests.test_fehlende_datei_liefert_leere_liste` | Prüft, dass eine nicht lesbare Datenquelle eine leere Liste liefert, statt eine Ausnahme zu werfen. | grün | geprüft am 2026-09-22 |
| `LadeLandkreiseTests.test_ungueltiges_json_liefert_leere_liste` | Prüft, dass eine Datei mit syntaktisch ungültigem JSON eine leere Liste liefert, statt eine Ausnahme zu werfen. | grün | geprüft am 2026-09-22 |
| `LadeLandkreiseTests.test_alle_kennzahlen_kommen_genau_einmal_vor` | Prüft, dass jede Landkreiskennzahl in der geladenen Landkreisliste genau einmal vorkommt. | grün | geprüft am 2026-09-22 |
| `LandkreislisteVollstaendigkeitTests.test_landkreisliste_enthaelt_alle_13_saechsischen_gebietskoerperschaften` | Prüft, dass die geladene Landkreisliste genau die 13 amtlichen sächsischen Kreisschlüssel und Namen enthält. | grün | geprüft am 2026-09-22 |
| `AlleLandkreiseSentinelTests.test_alle_landkreise_sentinel_kollidiert_nicht_mit_echter_kennzahl` | Prüft, dass die Sentinel-Kennzahl ALLE_LANDKREISE mit keiner echten Landkreiskennzahl übereinstimmt. | grün | geprüft am 2026-09-22 |
### `Plugin_SN_Basis/tests/test_layerloader.py` ### `Plugin_SN_Basis/tests/test_layerloader.py`
@@ -250,40 +256,47 @@ Worum es in der Datei geht: Tests für sn_basis/modules/LayerLoader.py (Layer er
Testgruppen: Testgruppen:
- `CreateLayerTests` (7 Testfälle): — (Docstring fehlt) - `CreateLayerTests` (12 Testfälle): — (Docstring fehlt)
- `TransformGeometryTests` (3 Testfälle): — (Docstring fehlt) - `TransformGeometryTests` (4 Testfälle): — (Docstring fehlt)
- `TransformExtentTests` (2 Testfälle): — (Docstring fehlt) - `TransformExtentTests` (3 Testfälle): — (Docstring fehlt)
- `FilterByExtentTests` (6 Testfälle): — (Docstring fehlt) - `FilterByExtentTests` (6 Testfälle): — (Docstring fehlt)
- `FilterByLayerTests` (4 Testfälle): — (Docstring fehlt) - `FilterByLayerTests` (4 Testfälle): — (Docstring fehlt)
- `AddToProjectTests` (3 Testfälle): — (Docstring fehlt) - `AddToProjectTests` (3 Testfälle): — (Docstring fehlt)
| Testfall | prüft | Status | geprüft | | Testfall | prüft | Status | geprüft |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| `CreateLayerTests.test_wfs_baut_uri_ohne_getfeature_parameter` | Prüft, dass für WFS die GetFeature-spezifischen Parameter aus der URI entfernt werden. | grün | nie geprüft | | `CreateLayerTests.test_wfs_baut_uri_ohne_getfeature_parameter` | Prüft, dass für WFS die GetFeature-spezifischen Parameter aus der URI entfernt werden. | grün | geprüft am 2026-09-22 |
| `CreateLayerTests.test_wfs_mit_url_praefix_wird_nicht_doppelt_gesetzt` | Prüft, dass ein bereits vorhandenes 'url='-Präfix im WFS-Link nicht verdoppelt wird. | grün | nie geprüft | | `CreateLayerTests.test_wfs_mit_url_praefix_wird_nicht_doppelt_gesetzt` | Prüft, dass ein bereits vorhandenes 'url='-Präfix im WFS-Link nicht verdoppelt wird. | grün | geprüft am 2026-09-22 |
| `CreateLayerTests.test_wms_baut_url_praefix_und_nutzt_rasterlayer` | Prüft, dass WMS-Layer über QgsRasterLayer mit 'url='-Präfix erzeugt werden. | grün | nie geprüft | | `CreateLayerTests.test_wms_baut_url_praefix_und_nutzt_rasterlayer` | Prüft, dass WMS-Layer über QgsRasterLayer mit 'url='-Präfix erzeugt werden. | grün | geprüft am 2026-09-22 |
| `CreateLayerTests.test_rest_featureserver_ergaenzt_layer_index` | Prüft, dass ein REST-Link auf '.../FeatureServer' automatisch um '/0' ergänzt wird. | grün | nie geprüft | | `CreateLayerTests.test_rest_featureserver_ergaenzt_layer_index` | Prüft, dass ein REST-Link auf '.../FeatureServer' automatisch um '/0' ergänzt wird. | grün | geprüft am 2026-09-22 |
| `CreateLayerTests.test_ogr_provider_nutzt_link_direkt` | Prüft, dass ein OGR-Provider den Link unverändert an QgsVectorLayer übergibt. | grün | nie geprüft | | `CreateLayerTests.test_ogr_provider_nutzt_link_direkt` | Prüft, dass ein OGR-Provider den Link unverändert an QgsVectorLayer übergibt. | grün | geprüft am 2026-09-22 |
| `CreateLayerTests.test_ungueltiger_layer_meldet_layer_nicht_verfuegbar` | Prüft, dass ein ungültig erzeugter Layer als 'layer_nicht_verfuegbar' gemeldet wird und None liefert. | grün | nie geprüft | | `CreateLayerTests.test_ungueltiger_layer_meldet_layer_nicht_verfuegbar` | Prüft, dass ein ungültig erzeugter Layer als 'layer_nicht_verfuegbar' gemeldet wird und None liefert. | grün | geprüft am 2026-09-22 |
| `CreateLayerTests.test_ausnahme_beim_erstellen_wird_abgefangen` | Prüft, dass eine Ausnahme beim Layer-Erstellen abgefangen und als Fehlerergebnis gemeldet wird. | grün | nie geprüft | | `CreateLayerTests.test_ausnahme_beim_erstellen_wird_abgefangen` | Prüft, dass eine Ausnahme beim Layer-Erstellen abgefangen und als Fehlerergebnis gemeldet wird. | grün | geprüft am 2026-09-22 |
| `TransformGeometryTests.test_fehlender_layer_liefert_geometrie_unveraendert` | Prüft, dass ohne Quell- oder Ziel-Layer die Geometrie unverändert zurückgegeben wird. | grün | nie geprüft | | `CreateLayerTests.test_unbekannter_provider_faellt_auf_ogr_zurueck` | Prüft, dass ein unbekannter Provider wie 'ogr' behandelt wird und den Link unverändert übergibt. | grün | geprüft am 2026-09-22 |
| `TransformGeometryTests.test_gleiche_crs_liefert_geometrie_unveraendert` | Prüft, dass bei identischem CRS von Quelle und Ziel keine Transformation stattfindet. | grün | nie geprüft | | `CreateLayerTests.test_rest_ohne_featureserver_endung_bleibt_unveraendert` | Prüft, dass ein REST-Link ohne 'FeatureServer'-Endung nicht um '/0' ergänzt wird. | grün | geprüft am 2026-09-22 |
| `TransformGeometryTests.test_unterschiedliche_crs_klont_und_transformiert_geometrie` | Prüft, dass bei unterschiedlichem CRS eine geklonte, transformierte Geometrie geliefert wird. | grün | nie geprüft | | `CreateLayerTests.test_rest_mit_url_praefix_wird_nicht_doppelt_gesetzt` | Prüft, dass ein bereits vorhandenes 'url='-Präfix im REST-Link nicht verdoppelt wird. | grün | geprüft am 2026-09-22 |
| `TransformExtentTests.test_gleiche_crs_liefert_extent_unveraendert` | Prüft, dass bei identischem CRS von Quelle und Ziel der Extent unverändert bleibt. | grün | nie geprüft | | `CreateLayerTests.test_wfs_erkennt_typename_in_grossschreibung` | Prüft, dass für WFS auch der Parameter 'TYPENAME' (Großschreibung) als Layername erkannt wird. | grün | geprüft am 2026-09-22 |
| `TransformExtentTests.test_unterschiedliche_crs_nutzt_coordinate_transform` | Prüft, dass bei unterschiedlichem CRS der Extent über QgsCoordinateTransform umgerechnet wird. | grün | nie geprüft | | `CreateLayerTests.test_wfs_ergaenzt_service_und_version_defaults` | Prüft, dass für WFS ohne 'service'/'version'-Parameter die Defaults 'WFS'/'2.0.0' ergänzt werden. | grün | geprüft am 2026-09-22 |
| `FilterByExtentTests.test_ungueltiger_layer_wird_unveraendert_zurueckgegeben` | Prüft, dass ein ungültiger Layer von filter_by_extent unverändert zurückgegeben wird. | grün | nie geprüft | | `TransformGeometryTests.test_fehlender_layer_liefert_geometrie_unveraendert` | Prüft, dass ohne Quell- oder Ziel-Layer die Geometrie unverändert zurückgegeben wird. | grün | geprüft am 2026-09-22 |
| `FilterByExtentTests.test_ohne_extent_wird_layer_unveraendert_zurueckgegeben` | Prüft, dass ohne Extent (None) der Layer unverändert zurückgegeben wird. | grün | nie geprüft | | `TransformGeometryTests.test_gleiche_crs_liefert_geometrie_unveraendert` | Prüft, dass bei identischem CRS von Quelle und Ziel keine Transformation stattfindet. | grün | geprüft am 2026-09-22 |
| `FilterByExtentTests.test_falscher_layertyp_wird_unveraendert_zurueckgegeben` | Prüft, dass ein Nicht-Vektor-Layer (z. B. Rasterlayer) unverändert zurückgegeben wird. | grün | nie geprüft | | `TransformGeometryTests.test_unterschiedliche_crs_klont_und_transformiert_geometrie` | Prüft, dass bei unterschiedlichem CRS eine geklonte, transformierte Geometrie geliefert wird. | grün | geprüft am 2026-09-22 |
| `FilterByExtentTests.test_keine_treffer_liefert_none` | Prüft, dass ein Raumfilter ohne Treffer None statt eines leeren Layers liefert. | grün | nie geprüft | | `TransformGeometryTests.test_ausnahme_bei_der_transformation_liefert_geometrie_unveraendert` | Prüft, dass eine Ausnahme während der CRS-Transformation abgefangen wird und die ursprüngliche Geometrie unverändert liefert. | grün | geprüft am 2026-09-22 |
| `FilterByExtentTests.test_abbruch_liefert_none_und_meldet_needs_user_action` | Prüft, dass ein Abbruch während des Raumfilters None liefert und gemeldet wird. | grün | nie geprüft | | `TransformExtentTests.test_gleiche_crs_liefert_extent_unveraendert` | Prüft, dass bei identischem CRS von Quelle und Ziel der Extent unverändert bleibt. | grün | geprüft am 2026-09-22 |
| `FilterByExtentTests.test_erfolgreicher_filter_liefert_neuen_layer_mit_features` | Prüft, dass ein erfolgreicher BBOX-Filter einen neuen Speicherlayer mit den gefundenen Features liefert. | grün | nie geprüft | | `TransformExtentTests.test_unterschiedliche_crs_nutzt_coordinate_transform` | Prüft, dass bei unterschiedlichem CRS der Extent über QgsCoordinateTransform umgerechnet wird. | grün | geprüft am 2026-09-22 |
| `FilterByLayerTests.test_ungueltiger_layer_oder_filterlayer_wird_unveraendert_zurueckgegeben` | Prüft, dass ein ungültiger Haupt- oder Filter-Layer unverändert zurückgegeben wird. | grün | nie geprüft | | `TransformExtentTests.test_ausnahme_bei_der_extent_transformation_liefert_extent_unveraendert` | Prüft, dass eine Ausnahme während der Extent-Transformation abgefangen wird und den ursprünglichen Extent unverändert liefert. | grün | geprüft am 2026-09-22 |
| `FilterByLayerTests.test_filterlayer_ohne_features_liefert_none` | Prüft, dass ein Filter-Layer ohne Features (leere Vereinigungsgeometrie) None liefert. | grün | nie geprüft | | `FilterByExtentTests.test_ungueltiger_layer_wird_unveraendert_zurueckgegeben` | Prüft, dass ein ungültiger Layer von filter_by_extent unverändert zurückgegeben wird. | grün | geprüft am 2026-09-22 |
| `FilterByLayerTests.test_erfolgreicher_geometriefilter_liefert_neuen_layer` | Prüft, dass ein erfolgreicher Geometriefilter einen neuen Speicherlayer mit den passenden Features liefert. | grün | nie geprüft | | `FilterByExtentTests.test_ohne_extent_wird_layer_unveraendert_zurueckgegeben` | Prüft, dass ohne Extent (None) der Layer unverändert zurückgegeben wird. | grün | geprüft am 2026-09-22 |
| `FilterByLayerTests.test_keine_ueberschneidung_liefert_none` | Prüft, dass ohne überschneidende Features None statt eines leeren Layers geliefert wird. | grün | nie geprüft | | `FilterByExtentTests.test_falscher_layertyp_wird_unveraendert_zurueckgegeben` | Prüft, dass ein Nicht-Vektor-Layer (z. B. Rasterlayer) unverändert zurückgegeben wird. | grün | geprüft am 2026-09-22 |
| `AddToProjectTests.test_gueltiger_layer_wird_dem_projekt_hinzugefuegt` | Prüft, dass ein gültiger Layer über QgsProject.instance().addMapLayer hinzugefügt wird. | grün | nie geprüft | | `FilterByExtentTests.test_keine_treffer_liefert_none` | Prüft, dass ein Raumfilter ohne Treffer None statt eines leeren Layers liefert. | grün | geprüft am 2026-09-22 |
| `AddToProjectTests.test_ungueltiger_layer_wird_nicht_hinzugefuegt` | Prüft, dass ein ungültiger Layer nicht ans Projekt übergeben wird. | grün | nie geprüft | | `FilterByExtentTests.test_abbruch_liefert_none_und_meldet_needs_user_action` | Prüft, dass ein Abbruch während des Raumfilters None liefert und gemeldet wird. | grün | geprüft am 2026-09-22 |
| `AddToProjectTests.test_none_layer_wird_nicht_hinzugefuegt` | Prüft, dass ein fehlender Layer (None) nicht ans Projekt übergeben wird. | grün | nie geprüft | | `FilterByExtentTests.test_erfolgreicher_filter_liefert_neuen_layer_mit_features` | Prüft, dass ein erfolgreicher BBOX-Filter einen neuen Speicherlayer mit den gefundenen Features liefert. | grün | geprüft am 2026-09-22 |
| `FilterByLayerTests.test_ungueltiger_layer_oder_filterlayer_wird_unveraendert_zurueckgegeben` | Prüft, dass ein ungültiger Haupt- oder Filter-Layer unverändert zurückgegeben wird. | grün | geprüft am 2026-09-22 |
| `FilterByLayerTests.test_filterlayer_ohne_features_liefert_none` | Prüft, dass ein Filter-Layer ohne Features (leere Vereinigungsgeometrie) None liefert. | grün | geprüft am 2026-09-22 |
| `FilterByLayerTests.test_erfolgreicher_geometriefilter_liefert_neuen_layer` | Prüft, dass ein erfolgreicher Geometriefilter einen neuen Speicherlayer mit den passenden Features liefert. | grün | geprüft am 2026-09-22 |
| `FilterByLayerTests.test_keine_ueberschneidung_liefert_none` | Prüft, dass ohne überschneidende Features None statt eines leeren Layers geliefert wird. | grün | geprüft am 2026-09-22 |
| `AddToProjectTests.test_gueltiger_layer_wird_dem_projekt_hinzugefuegt` | Prüft, dass ein gültiger Layer über QgsProject.instance().addMapLayer hinzugefügt wird. | grün | geprüft am 2026-09-22 |
| `AddToProjectTests.test_ungueltiger_layer_wird_nicht_hinzugefuegt` | Prüft, dass ein ungültiger Layer nicht ans Projekt übergeben wird. | grün | geprüft am 2026-09-22 |
| `AddToProjectTests.test_none_layer_wird_nicht_hinzugefuegt` | Prüft, dass ein fehlender Layer (None) nicht ans Projekt übergeben wird. | grün | geprüft am 2026-09-22 |
### `Plugin_SN_Basis/tests/test_layerpruefer.py` ### `Plugin_SN_Basis/tests/test_layerpruefer.py`
@@ -1249,7 +1262,7 @@ Arbeitsliste: Diese Testfälle haben keinen Docstring; was sie fachlich prüfen,
aus dem Quelltext erschließen. Jeder Eintrag braucht eine einzeilige Beschreibung im Testfall, aus dem Quelltext erschließen. Jeder Eintrag braucht eine einzeilige Beschreibung im Testfall,
dann verschwindet er hier von selbst. dann verschwindet er hier von selbst.
### `sn_basis` – 0 von 329 Testfällen ohne Beschreibung ### `sn_basis` – 0 von 340 Testfällen ohne Beschreibung
Keine Lücken. Keine Lücken.