Testkonzept Eigentümersuche: PER_RECHTSPERSON als Rohwert

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-06 13:13:50 +02:00
co-authored by Claude Opus 5.5
parent 44cce10bda
commit aa7fe5b2e4
3 changed files with 35 additions and 29 deletions
File diff suppressed because one or more lines are too long
+10 -9
View File
@@ -9,17 +9,17 @@ selbst (Docstrings) und aus der Testbaseline.
Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`)
Gesamt: 3 Pakete, 64 Testdateien, 782 Testfälle – 739 grün, 35 rot (Baseline), 8 übersprungen.
Mit Beschreibung (Docstring): 637 von 782 (81 %).
Gesamt: 3 Pakete, 64 Testdateien, 783 Testfälle – 740 grün, 35 rot (Baseline), 8 übersprungen.
Mit Beschreibung (Docstring): 638 von 783 (81 %).
## Zusammenfassung
| Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| `sn_basis` | 43 | 490 | 490 | 0 | 0 | 490 von 490 (100 %) |
| `sn_verfahrensgebiet` | 16 | 248 | 206 | 34 | 8 | 146 von 248 (59 %) |
| `sn_verfahrensgebiet` | 16 | 249 | 207 | 34 | 8 | 147 von 249 (59 %) |
| `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) |
| **Summe** | **64** | **782** | **739** | **35** | **8** | **637 von 782 (81 %)** |
| **Summe** | **64** | **783** | **740** | **35** | **8** | **638 von 783 (81 %)** |
### Legende
@@ -1071,7 +1071,7 @@ Testgruppen:
## Paket `sn_verfahrensgebiet`
Fachplugin, Ordner `Plugin_SN_Verfahrensgebiet` – 16 Testdateien mit 248 Testfällen (206 grün, 34 rot, 8 übersprungen).
Fachplugin, Ordner `Plugin_SN_Verfahrensgebiet` – 16 Testdateien mit 249 Testfällen (207 grün, 34 rot, 8 übersprungen).
### `Plugin_SN_Verfahrensgebiet/tests/test_beteiligung_pruefung.py`
@@ -1135,7 +1135,7 @@ Worum es in der Datei geht: Tests für die Eigentümersuche im Serienbriefexport
Testgruppen:
- `TestLayererkennung` (2 Testfälle): — (Docstring fehlt)
- `TestSuche` (9 Testfälle): — (Docstring fehlt)
- `TestSuche` (10 Testfälle): — (Docstring fehlt)
- `TestAnzeigeformen` (1 Testfälle): — (Docstring fehlt)
| Testfall | prüft | Status |
@@ -1148,7 +1148,8 @@ Testgruppen:
| `TestSuche.test_umlaute_und_eszett` | Prüft, dass „Müller“ auch „Mueller“ findet und „Strauss“ auch „Strauß“. | grün |
| `TestSuche.test_gleiche_person_gleiche_anschrift_zusammengefasst` | Prüft, dass Zeilen mit gleichem Namen und gleicher Anschrift ein Treffer werden und Konten, Personen-IDs und E-Mails gesammelt werden. | grün |
| `TestSuche.test_andere_anschrift_eigener_treffer` | Prüft, dass dieselbe Person mit anderer Anschrift ein eigener Treffer bleibt, sortiert nach Wohnort. | grün |
| `TestSuche.test_kennzeichen_verstorben_und_rechtsperson` | Prüft, dass „verstorben“ und „Rechtsperson“ aus üblichen Ja-Werten erkannt werden und Nein-Werte, Leeres und NULL nicht zählen. | grün |
| `TestSuche.test_kennzeichen_verstorben` | Prüft, dass „verstorben“ beim Exportwert 1 (auch als Zahl gelesen) gesetzt ist und bei 0, Leerem und NULL nicht. | grün |
| `TestSuche.test_rechtsperson_als_rohwert` | Prüft, dass PER_RECHTSPERSON unverändert angezeigt wird (0, 1, 5, 9; noch nicht entschlüsselt) und abweichende Werte einer Person gesammelt werden. | grün |
| `TestSuche.test_plz_mit_fuehrender_null` | Prüft, dass eine von QGIS als Zahl gelesene PLZ wieder fünfstellig mit führender Null erscheint und Zeilen dadurch zusammenfinden. | grün |
| `TestSuche.test_suche_gibt_nichts_aus` | Prüft, dass die Suche keine Personendaten auf die Konsole schreibt (Datenschutz). | grün |
| `TestAnzeigeformen.test_name_und_anschrift` | Prüft, dass Name mit Titel und einzeilige Anschrift mit Ortsteil lesbar zusammengesetzt werden. | grün |
@@ -1175,7 +1176,7 @@ Testgruppen:
| `TestEigentuemerSuchen.test_suchfehler_als_warnung` | Prüft, dass ein Fehler der Suche (z. B. leere Eingabe) als Warnung erscheint. | grün |
| `TestEigentuemerSuchen.test_kein_treffer_ohne_namen_in_meldung` | Prüft, dass ohne Treffer ein Hinweis erscheint, der den gesuchten Namen nicht wiederholt (Datenschutz). | grün |
| `TestEigentuemerSuchen.test_treffer_oeffnen_trefferliste_und_ersetzen_die_alte` | Prüft, dass Treffer in einer neuen Trefferliste erscheinen, eine offene alte Liste geschlossen wird und die Eingaben an die Suche gehen. | grün |
| `TestTrefferliste.test_trefferzeile_mit_hinweis` | Prüft, dass die Trefferliste Name, Anschrift, E-Mail und die Kennzeichen „verstorben“/„Rechtsperson“ zeigt. | grün |
| `TestTrefferliste.test_trefferzeile_mit_hinweis` | Prüft, dass die Trefferliste Name, Anschrift, E-Mail, den Rohwert von PER_RECHTSPERSON und das Kennzeichen „verstorben“ zeigt. | grün |
| `TestTrefferliste.test_ausgewaehlte_eigentuemer` | Prüft, dass das Trefferfenster die in der Tabelle gewählten Einträge zurückgibt. | grün |
| `TestDockWidgetTabs.test_tab_ist_im_dockwidget_eingetragen` | Prüft, dass der Tab „Eigentümer“ im DockWidget direkt nach dem Bearbeitungs-Tab steht. | grün |
@@ -1651,7 +1652,7 @@ dann verschwindet er hier von selbst.
Keine Lücken.
### `sn_verfahrensgebiet` – 102 von 248 Testfällen ohne Beschreibung
### `sn_verfahrensgebiet` – 102 von 249 Testfällen ohne Beschreibung
#### `Plugin_SN_Verfahrensgebiet/tests/test_beteiligung_pruefung.py` (25 von 25)
@@ -9,7 +9,9 @@ E-Mail. Grundlage ist der Serienbriefexport als CSV-Datei, den die Sachbearbeitu
Sie sucht nach Name und/oder Vorname. Die Trefferliste fasst Einträge derselben Person mit derselben Anschrift
zusammen, denn im Export steht eine Person für jedes Eigentumskonto einmal. Dieselbe Person mit einer anderen
Anschrift bleibt ein eigener Eintrag. Damit fällt eine abweichende Anschrift sofort auf. Verstorbene und
Rechtspersonen sind in der Liste gekennzeichnet.
Rechtspersonen sind in der Liste gekennzeichnet:
verstorben als Hinweis (`PER_VERSTORBEN` = 1), die Art der Person als Rohwert von `PER_RECHTSPERSON`
(0, 1, 5 oder 9; die Bedeutung der Werte wird später entschlüsselt).
Die Trefferliste sieht nur die Sachbearbeitung. Das Anzeigefenster für den Eigentümer auf dem zweiten Bildschirm
und die Korrekturen folgen im nächsten Schritt von Issue Verfahrensgebiet #56.
@@ -27,7 +29,7 @@ flowchart TD
G --> H["6 Gleiche Person mit gleicher<br/>Anschrift zusammenfassen"]
H --> I{"7 Treffer?"}
I -->|nein| J["Hinweis: keine Einträge<br/>(ohne den Namen zu wiederholen)"]
I -->|ja| K["8 Trefferliste mit Anschrift, E-Mail,<br/>verstorben / Rechtsperson;<br/>Mehrfachauswahl"]
I -->|ja| K["8 Trefferliste mit Anschrift, E-Mail,<br/>Rechtsperson-Wert, verstorben;<br/>Mehrfachauswahl"]
style D fill:#fff4e6,stroke:#d9822b
style F fill:#fff4e6,stroke:#d9822b
@@ -51,7 +53,7 @@ Die Tests liegen in `Plugin_SN_Verfahrensgebiet/tests/test_eigentuemer_suche.py`
| 6 | Andere Anschrift bleibt eigener Eintrag | `test_andere_anschrift_eigener_treffer` | Mock |
| 7 | Kein Treffer, Meldung ohne Namen | `test_kein_treffer_ohne_namen_in_meldung` | Mock |
| 8 | Trefferliste öffnen, alte ersetzen | `test_treffer_oeffnen_trefferliste_und_ersetzen_die_alte` | Mock |
| 8 | Spalten der Trefferliste, Kennzeichen | `test_trefferzeile_mit_hinweis`, `test_kennzeichen_verstorben_und_rechtsperson` | Mock |
| 8 | Spalten der Trefferliste, Kennzeichen | `test_trefferzeile_mit_hinweis`, `test_kennzeichen_verstorben`, `test_rechtsperson_als_rohwert` | Mock |
| 8 | Ausgewählte Einträge, auch nach Umsortieren | `test_ausgewaehlte_eigentuemer`, `test_auswahl_nach_umsortieren` | Mock |
| 8 | Suchfeld in der Trefferliste | `test_suchfilter_ueber_alle_spalten` | Mock |
| — | Keine Personendaten auf der Konsole | `test_suche_gibt_nichts_aus` | Mock |
@@ -67,9 +69,10 @@ Ebene: `Mock` (ohne QGIS, Sekunden) · `QGIS` (gegen echtes QGIS) · `manuell` (
| Schreibweise weicht ab (Groß-/Kleinschreibung, Leerzeichen) | Handeingaben über Jahre | `test_gleiche_person_gleiche_anschrift_zusammengefasst` |
| `Müller` gesucht, `Mueller` gespeichert | ältere Datenbestände | `test_umlaute_und_eszett` |
| PLZ ohne führende Null (`1067`) | QGIS erkennt beim CSV-Laden die Spalte als Zahl | `test_plz_mit_fuehrender_null` |
| Verstorben/Rechtsperson als `J`, `1`, `ja`, `true` | unterschiedliche Exportstände | `test_kennzeichen_verstorben_und_rechtsperson` |
| Leere Felder bzw. QGIS-NULL | unvollständige Datensätze | `test_kennzeichen_verstorben_und_rechtsperson` |
| Rechtsperson ohne Vornamen (z. B. Gemeinde) | Körperschaften als Eigentümer | `test_name_und_anschrift` |
| `PER_VERSTORBEN` als Text oder als Zahl gelesen | QGIS erkennt beim CSV-Laden die Spalte als Zahl | `test_kennzeichen_verstorben` |
| Eine Person mit verschiedenen `PER_RECHTSPERSON`-Werten | mehrere Konten mit unterschiedlicher Erfassung | `test_rechtsperson_als_rohwert` (Werte werden gesammelt) |
| Leere Felder bzw. QGIS-NULL | unvollständige Datensätze | `test_kennzeichen_verstorben`, `test_rechtsperson_als_rohwert` |
| Rechtsperson ohne Vornamen (z. B. Gemeinde) | Körperschaften als Eigentümer | `test_name_und_anschrift`, `test_rechtsperson_als_rohwert` |
## Bewusst nicht getestet