From e5e1b6e768ee7d9d75bd5683ce4961833a05c506 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 17 Sep 2026 16:29:26 +0200 Subject: [PATCH] =?UTF-8?q?Testkatalog:=20neuer=20Test=20f=C3=BCr=20Grenzp?= =?UTF-8?q?unkt-Stilanbringung=20(#53)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5 --- docs/tests/testkatalog.html | 20 ++++++++++++-------- docs/tests/testkatalog.md | 18 ++++++++++-------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/docs/tests/testkatalog.html b/docs/tests/testkatalog.html index 2189720..c4d77da 100644 --- a/docs/tests/testkatalog.html +++ b/docs/tests/testkatalog.html @@ -121,8 +121,8 @@ Testkatalog der sn_*-Plugins — was die Suite heute prüft, auf einen Blick.
Quelle: docs/tests/testkatalog.md
Baseline: docs/status/testbaseline.json (SHA-256 aeabc946a7f3)
Prüf-Audit: docs/status/testpruefungen.json (SHA-256 68b590c8feef)
-
347Testfälle
-
304grün
+
348Testfälle
+
305grün
35rot (Baseline)
58%mit Docstring
@@ -131,12 +131,12 @@
Verteilung je Paket
sn_basis15 Dateien · 96 Testfälle
-
sn_verfahrensgebiet12 Dateien · 207 Testfälle
+
sn_verfahrensgebiet12 Dateien · 208 Testfälle
sn_plan415 Dateien · 44 Testfälle
@@ -484,9 +484,9 @@

sn_verfahrensgebiet

-

Fachplugin · Ordner Plugin_SN_Verfahrensgebiet · 12 Testdateien · 207 Testfälle

+

Fachplugin · Ordner Plugin_SN_Verfahrensgebiet · 12 Testdateien · 208 Testfälle

- @@ -656,7 +656,7 @@ classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420; classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20; classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08; - classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
TestfallprüftStatusgeprüft
TestExtractSchluesselUndName
test_standard_attribute
— (Docstring fehlt)rotnie geprüft
TestExtractSchluesselUndName
test_fallback_attribute
— (Docstring fehlt)rotnie geprüft
TestExtractSchluesselUndName
test_missing_attribute_returns_empty
— (Docstring fehlt)grünnie geprüft
TestExtractSchluesselUndName
test_none_value_returns_empty
— (Docstring fehlt)grünnie geprüft
TestGemarkungSchluesselbbox
test_success_bbox_filter
WFS-BBox-Filter liefert Features → korrekte Tupel-Liste.übersp.nie geprüft
TestGemarkungSchluesselbbox
test_fallback_when_bbox_fails
BBox-Filter schlägt fehl → Fallback auf Volllade + client-seitige Filterung.übersp.nie geprüft
TestGemarkungSchluesselbbox
test_both_layers_fail_returns_empty
Beide Lade-Strategien scheitern → leere Liste.übersp.nie geprüft
TestGemarkungSchluesselbbox
test_deduplication_and_sorting
Doppelte Schlüssel werden dedupliziert, Ergebnis ist sortiert.übersp.nie geprüft
TestGemarkungSchluesselbbox
test_feature_without_schluessel_skipped
Feature ohne Schlüssel-Attribut wird übersprungen.übersp.nie geprüft
TestGemarkungSchluesselbbox
test_exception_returns_empty
Exception im Ladevorgang → leere Liste (kein Crash).übersp.nie geprüft
TestGemarkungSchluesselnurNummern
test_returns_only_nummern
— (Docstring fehlt)übersp.nie geprüft
TestGemarkungSchluesselnurNummern
test_empty_input_returns_empty
— (Docstring fehlt)übersp.nie geprüft
TestLadeGemarkungenlayer
test_returns_layer_when_service_reachable
Dienst erreichbar (isValid=True) → Layer-Objekt zurückgegeben.grünnie geprüft
TestLadeGemarkungenlayer
test_returns_none_when_service_unreachable
Dienst nicht erreichbar (isValid=False) → None zurückgegeben.grünnie geprüft

Unit-Tests für `sn_verfahrensgebiet.functions.grenzpunkt_alkis`.

TestExtrahiereGmlIds 5TestGrenzpunktAlkis 7
flowchart TD
+  classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
TestfallprüftStatusgeprüft
TestExtractSchluesselUndName
test_standard_attribute
— (Docstring fehlt)rotnie geprüft
TestExtractSchluesselUndName
test_fallback_attribute
— (Docstring fehlt)rotnie geprüft
TestExtractSchluesselUndName
test_missing_attribute_returns_empty
— (Docstring fehlt)grünnie geprüft
TestExtractSchluesselUndName
test_none_value_returns_empty
— (Docstring fehlt)grünnie geprüft
TestGemarkungSchluesselbbox
test_success_bbox_filter
WFS-BBox-Filter liefert Features → korrekte Tupel-Liste.übersp.nie geprüft
TestGemarkungSchluesselbbox
test_fallback_when_bbox_fails
BBox-Filter schlägt fehl → Fallback auf Volllade + client-seitige Filterung.übersp.nie geprüft
TestGemarkungSchluesselbbox
test_both_layers_fail_returns_empty
Beide Lade-Strategien scheitern → leere Liste.übersp.nie geprüft
TestGemarkungSchluesselbbox
test_deduplication_and_sorting
Doppelte Schlüssel werden dedupliziert, Ergebnis ist sortiert.übersp.nie geprüft
TestGemarkungSchluesselbbox
test_feature_without_schluessel_skipped
Feature ohne Schlüssel-Attribut wird übersprungen.übersp.nie geprüft
TestGemarkungSchluesselbbox
test_exception_returns_empty
Exception im Ladevorgang → leere Liste (kein Crash).übersp.nie geprüft
TestGemarkungSchluesselnurNummern
test_returns_only_nummern
— (Docstring fehlt)übersp.nie geprüft
TestGemarkungSchluesselnurNummern
test_empty_input_returns_empty
— (Docstring fehlt)übersp.nie geprüft
TestLadeGemarkungenlayer
test_returns_layer_when_service_reachable
Dienst erreichbar (isValid=True) → Layer-Objekt zurückgegeben.grünnie geprüft
TestLadeGemarkungenlayer
test_returns_none_when_service_unreachable
Dienst nicht erreichbar (isValid=False) → None zurückgegeben.grünnie geprüft

Unit-Tests für `sn_verfahrensgebiet.functions.grenzpunkt_alkis`.

TestExtrahiereGmlIds 5TestGrenzpunktAlkis 7TestGrenzpunkteGemarkungsweiseStil 1
flowchart TD
   root(["test_grenzpunkt_alkis.py"])
   class root rootnode
   root --> g1["TestExtrahiereGmlIds (5)"]
@@ -675,6 +675,9 @@
   g2 --> t10("grenzpunkt_batch_empty")
   g2 --> t11("success_returns_both_layers")
   g2 --> t12("extent_derived_from_vg_layer")
+  root --> g3["TestGrenzpunkteGemarkungsweiseStil (1)"]
+  class g3 groupnode
+  g3 --> t13("stil_wird_nach_dem_laden_auf_den_ergebnis_layer_angewendet")
   class t1 ok
   class t2 ok
   class t3 ok
@@ -687,11 +690,12 @@
   class t10 warn
   class t11 warn
   class t12 warn
+  class t13 ok
   classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600;
   classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
   classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
   classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
-  classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
TestfallprüftStatusgeprüft
TestExtrahiereGmlIds
test_xlink_href_format
URN-Format 'urn:adv:oid:DEABC123' → nur 'DEABC123' extrahiert.grünnie geprüft
TestExtrahiereGmlIds
test_plain_gml_id
Plain-GML-ID ohne Doppelpunkt → direkt übernommen.grünnie geprüft
TestExtrahiereGmlIds
test_empty_value_skipped
Leerer gehoertZu-Wert wird übersprungen.grünnie geprüft
TestExtrahiereGmlIds
test_deduplication
Doppelte Referenzen werden dedupliziert.grünnie geprüft
TestExtrahiereGmlIds
test_sorted_output
Rückgabe ist aufsteigend sortiert.grünnie geprüft
TestGrenzpunktAlkis
test_no_vg_layer_returns_none
— (Docstring fehlt)grünnie geprüft
TestGrenzpunktAlkis
test_invalid_punktort_layer
— (Docstring fehlt)grünnie geprüft
TestGrenzpunktAlkis
test_empty_punktort_layer
— (Docstring fehlt)grünnie geprüft
TestGrenzpunktAlkis
test_no_gml_ids_returns_pta_only
— (Docstring fehlt)rotnie geprüft
TestGrenzpunktAlkis
test_grenzpunkt_batch_empty
— (Docstring fehlt)rotnie geprüft
TestGrenzpunktAlkis
test_success_returns_both_layers
— (Docstring fehlt)rotnie geprüft
TestGrenzpunktAlkis
test_extent_derived_from_vg_layer
Wenn kein extent übergeben → Extent aus VG-Layer holen.rotnie geprüft

Unit-Tests für `sn_verfahrensgebiet.functions.knickpunkt_pruefung`.

TestExtrahiereKnickpunkte 4TestKnickpunktPruefungInputvalidierung 3TestKnickpunktPruefungKlassifizierung 2TestFehlendKnickpunkteViaVerbindungslinien 4
flowchart TD
+  classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
TestfallprüftStatusgeprüft
TestExtrahiereGmlIds
test_xlink_href_format
URN-Format 'urn:adv:oid:DEABC123' → nur 'DEABC123' extrahiert.grünnie geprüft
TestExtrahiereGmlIds
test_plain_gml_id
Plain-GML-ID ohne Doppelpunkt → direkt übernommen.grünnie geprüft
TestExtrahiereGmlIds
test_empty_value_skipped
Leerer gehoertZu-Wert wird übersprungen.grünnie geprüft
TestExtrahiereGmlIds
test_deduplication
Doppelte Referenzen werden dedupliziert.grünnie geprüft
TestExtrahiereGmlIds
test_sorted_output
Rückgabe ist aufsteigend sortiert.grünnie geprüft
TestGrenzpunktAlkis
test_no_vg_layer_returns_none
— (Docstring fehlt)grünnie geprüft
TestGrenzpunktAlkis
test_invalid_punktort_layer
— (Docstring fehlt)grünnie geprüft
TestGrenzpunktAlkis
test_empty_punktort_layer
— (Docstring fehlt)grünnie geprüft
TestGrenzpunktAlkis
test_no_gml_ids_returns_pta_only
— (Docstring fehlt)rotnie geprüft
TestGrenzpunktAlkis
test_grenzpunkt_batch_empty
— (Docstring fehlt)rotnie geprüft
TestGrenzpunktAlkis
test_success_returns_both_layers
— (Docstring fehlt)rotnie geprüft
TestGrenzpunktAlkis
test_extent_derived_from_vg_layer
Wenn kein extent übergeben → Extent aus VG-Layer holen.rotnie geprüft
TestGrenzpunkteGemarkungsweiseStil
test_stil_wird_nach_dem_laden_auf_den_ergebnis_layer_angewendet
Prüft, dass grenzpunkte_gemarkungsweise() nach dem Laden apply_style() mit dem neuen ALKIS-Grenzpunkt-Stil auf den fertigen Join-Layer anwendet (#53).grünnie geprüft

Unit-Tests für `sn_verfahrensgebiet.functions.knickpunkt_pruefung`.

TestExtrahiereKnickpunkte 4TestKnickpunktPruefungInputvalidierung 3TestKnickpunktPruefungKlassifizierung 2TestFehlendKnickpunkteViaVerbindungslinien 4
flowchart TD
   root(["test_knickpunkt_pruefung.py"])
   class root rootnode
   root --> g1["TestExtrahiereKnickpunkte (4)"]
diff --git a/docs/tests/testkatalog.md b/docs/tests/testkatalog.md
index 8a8543c..eb180e5 100644
--- a/docs/tests/testkatalog.md
+++ b/docs/tests/testkatalog.md
@@ -10,18 +10,18 @@ selbst (Docstrings) und aus der Testbaseline.
 Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`)
 Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `68b590c8feef`)
 
-Gesamt: 3 Pakete, 32 Testdateien, 347 Testfälle – 304 grün, 35 rot (Baseline), 8 übersprungen.
-Mit Beschreibung (Docstring): 202 von 347 (58 %).
-Fachlich geprüft: 55 von 347 (16 %) aktuell, 0 veraltet seit Codeänderung, 292 nie geprüft.
+Gesamt: 3 Pakete, 32 Testdateien, 348 Testfälle – 305 grün, 35 rot (Baseline), 8 übersprungen.
+Mit Beschreibung (Docstring): 203 von 348 (58 %).
+Fachlich geprüft: 55 von 348 (16 %) aktuell, 0 veraltet seit Codeänderung, 293 nie geprüft.
 
 ## Zusammenfassung
 
 | Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung | fachlich geprüft |
 | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
 | `sn_basis` | 15 | 96 | 96 | 0 | 0 | 96 von 96 (100 %) | 55 von 96 (57 %) |
-| `sn_verfahrensgebiet` | 12 | 207 | 165 | 34 | 8 | 105 von 207 (51 %) | 0 von 207 (0 %) |
+| `sn_verfahrensgebiet` | 12 | 208 | 166 | 34 | 8 | 106 von 208 (51 %) | 0 von 208 (0 %) |
 | `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | 0 von 44 (0 %) |
-| **Summe** | **32** | **347** | **304** | **35** | **8** | **202 von 347 (58 %)** | **55 von 347 (16 %)** |
+| **Summe** | **32** | **348** | **305** | **35** | **8** | **203 von 348 (58 %)** | **55 von 348 (16 %)** |
 
 ### Legende
 
@@ -294,7 +294,7 @@ Testgruppen:
 
 ## Paket `sn_verfahrensgebiet`
 
-Fachplugin, Ordner `Plugin_SN_Verfahrensgebiet` – 12 Testdateien mit 207 Testfällen (165 grün, 34 rot, 8 übersprungen).
+Fachplugin, Ordner `Plugin_SN_Verfahrensgebiet` – 12 Testdateien mit 208 Testfällen (166 grün, 34 rot, 8 übersprungen).
 
 ### `Plugin_SN_Verfahrensgebiet/tests/test_beteiligung_pruefung.py`
 
@@ -413,6 +413,7 @@ Testgruppen:
 
 - `TestExtrahiereGmlIds` (5 Testfälle): — (Docstring fehlt)
 - `TestGrenzpunktAlkis` (7 Testfälle): — (Docstring fehlt)
+- `TestGrenzpunkteGemarkungsweiseStil` (1 Testfälle): — (Docstring fehlt)
 
 | Testfall | prüft | Status | geprüft |
 | --- | --- | --- | --- |
@@ -428,6 +429,7 @@ Testgruppen:
 | `TestGrenzpunktAlkis.test_grenzpunkt_batch_empty` | — (Docstring fehlt) | rot (Baseline) | nie geprüft |
 | `TestGrenzpunktAlkis.test_success_returns_both_layers` | — (Docstring fehlt) | rot (Baseline) | nie geprüft |
 | `TestGrenzpunktAlkis.test_extent_derived_from_vg_layer` | Wenn kein extent übergeben → Extent aus VG-Layer holen. | rot (Baseline) | nie geprüft |
+| `TestGrenzpunkteGemarkungsweiseStil.test_stil_wird_nach_dem_laden_auf_den_ergebnis_layer_angewendet` | Prüft, dass grenzpunkte_gemarkungsweise() nach dem Laden apply_style() mit dem neuen ALKIS-Grenzpunkt-Stil auf den fertigen Join-Layer anwendet (#53). | grün | nie geprüft |
 
 ### `Plugin_SN_Verfahrensgebiet/tests/test_knickpunkt_pruefung.py`
 
@@ -781,7 +783,7 @@ dann verschwindet er hier von selbst.
 
 Keine Lücken.
 
-### `sn_verfahrensgebiet` – 102 von 207 Testfällen ohne Beschreibung
+### `sn_verfahrensgebiet` – 102 von 208 Testfällen ohne Beschreibung
 
 #### `Plugin_SN_Verfahrensgebiet/tests/test_beteiligung_pruefung.py` (25 von 25)
 
@@ -825,7 +827,7 @@ Keine Lücken.
 - `TestGemarkungSchluesselnurNummern.test_returns_only_nummern`
 - `TestGemarkungSchluesselnurNummern.test_empty_input_returns_empty`
 
-#### `Plugin_SN_Verfahrensgebiet/tests/test_grenzpunkt_alkis.py` (6 von 12)
+#### `Plugin_SN_Verfahrensgebiet/tests/test_grenzpunkt_alkis.py` (6 von 13)
 
 - `TestGrenzpunktAlkis.test_no_vg_layer_returns_none`
 - `TestGrenzpunktAlkis.test_invalid_punktort_layer`