Testkonzept docs/tests/verfahrensgebiet-eigentuemer-anzeige.md, Fallstricke (Korrektur-CSV mit Personendaten, Fenster auf bestimmtem Bildschirm öffnen), Modulkarte und Testkatalog. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5.8 KiB
Testkonzept: Eigentümersuche im Tab „Eigentümer“
Plugin: sn_verfahrensgebiet · Stand: 06.10.2026 · Pflege: bei jeder Änderung an diesem Ablauf
Worum es fachlich geht
Im Termin mit Eigentümern gleicht die Sachbearbeitung die gespeicherten Personendaten ab: Name, Anschrift und
E-Mail. Grundlage ist der Serienbriefexport als CSV-Datei, den die Sachbearbeitung von Hand ins Projekt lädt.
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:
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. Wie die gewählten Einträge dem Eigentümer angezeigt und korrigiert
werden, beschreibt verfahrensgebiet-eigentuemer-anzeige.md.
Der Ablauf
flowchart TD
A["1 Anwender lädt den Serienbriefexport<br/>als CSV-Layer ins Projekt"] --> B["2 Eigentümerdatei wählen<br/>(nur Layer mit Nachname und Vorname)"]
B --> C{"3 Eigentümerdatei<br/>gewählt?"}
C -->|nein| D["Hinweis: CSV laden und wählen"]
C -->|ja| E{"4 Name oder Vorname<br/>eingegeben?"}
E -->|nein| F["Hinweis: Namen eingeben"]
E -->|ja| G["5 Einträge suchen<br/>(Teilwort, Groß-/Kleinschreibung<br/>und Umlaute egal)"]
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/>Rechtsperson-Wert, verstorben;<br/>Mehrfachauswahl"]
style D fill:#fff4e6,stroke:#d9822b
style F fill:#fff4e6,stroke:#d9822b
Was geprüft wird
Die Tests liegen in Plugin_SN_Verfahrensgebiet/tests/test_eigentuemer_suche.py (Suchlogik),
tests/test_eigentuemer_tab.py (Bedienung, Trefferliste) und tests/test_verfahrensgebiet_dialoge.py
(gemeinsame Auswahltabelle).
| # | Schritt | Wird geprüft durch | Ebene |
|---|---|---|---|
| 2 | Nur Layer mit Nachname und Vorname, auch mit BOM oder anderer Schreibweise | test_layer_mit_name_und_vorname_ist_eigentuemerlayer, test_eigentuemerlayer_im_projekt |
Mock |
| 3 | Keine Eigentümerdatei gewählt | test_ohne_eigentuemerdatei_warnung |
Mock |
| 3 | Layer ohne die nötigen Spalten | test_layer_ohne_pflichtspalten |
Mock |
| 4 | Ohne Eingabe keine Komplettliste | test_ohne_eingabe_fehler, test_suchfehler_als_warnung |
Mock |
| 5 | Teilwort, Groß-/Kleinschreibung | test_teilstring_ohne_gross_kleinschreibung |
Mock |
| 5 | Umlaute und ß | test_umlaute_und_eszett |
Mock |
| 6 | Zusammenfassen, Konten und E-Mails sammeln | test_gleiche_person_gleiche_anschrift_zusammengefasst |
Mock |
| 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, 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 |
| — | Sieht das in QGIS richtig aus? | manueller Test | manuell |
Ebene: Mock (ohne QGIS, Sekunden) · QGIS (gegen echtes QGIS) · manuell (Mensch in QGIS).
Fachliche Sonderfälle
| Sonderfall | Kommt vor bei | Wird geprüft durch |
|---|---|---|
| Eine Person mit mehreren Eigentumskonten | Regelfall im Serienbriefexport | test_gleiche_person_gleiche_anschrift_zusammengefasst |
| 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 |
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
| Was | Warum | Wie stattdessen abgesichert |
|---|---|---|
| Aufbau von Trefferfenster und Auswahltabelle mit echten Qt-Widgets | im Mock-Modus gibt es keine Widgets; die Filter- und Zuordnungslogik ist als reine Funktion getestet | manueller Test in QGIS |
| Echter Serienbriefexport | personenbezogen, gehört nicht ins Repository | erfundene Testzeilen mit der Kopfzeile der Blanko-Vorlage aus dem Issue |
Bekannte Lücken
| Lücke | Auswirkung | Issue |
|---|---|---|
| Der manuelle QGIS-Test steht aus, auch für den Landkreis-Dialog, dessen Tabelle jetzt aus der gemeinsamen Funktion kommt | Ein Fehler beim Herauslösen der Tabelle bliebe in beiden Dialogen unbemerkt | Verfahrensgebiet #56 |