Befund aus dem QGIS-Test: Die Bildschirmwahl wirkte nicht, das Fenster erschien immer auf dem Hauptbildschirm. Im Vollbild ließ es sich weder verschieben noch schließen und verdeckte QGIS; nur ein hartes Beenden von QGIS half. Bildschirmwahl und Vollbild entfallen. Das Anzeigefenster öffnet als normales Fenster mit Rahmen; der Bearbeiter schiebt es auf den Bildschirm des Eigentümers und kann es dort maximieren. Größe und Lage werden beim Beenden gemerkt und in der nächsten Sitzung wiederhergestellt (bis zum Neustart von QGIS). Unter den Knöpfen steht jetzt Pfad und Name der Korrektur-Datei, mit Hinweis, solange sie noch nicht angelegt ist oder erst abgefragt wird. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
92 lines
4.2 KiB
Python
92 lines
4.2 KiB
Python
"""Tests für das Anzeigefenster des Eigentümer-Datenabgleichs (#56).
|
|
|
|
Alle Namen und Anschriften sind erfunden.
|
|
"""
|
|
|
|
import unittest
|
|
from unittest.mock import MagicMock
|
|
|
|
from sn_verfahrensgebiet.ui import eigentuemer_anzeige as ea
|
|
from sn_verfahrensgebiet.functions.eigentuemer_suche import Eigentuemer
|
|
|
|
ANNA = Eigentuemer(anrede="Frau", titel="Dr.", vorname="Anna", nachname="Beispiel", strasse="Hauptstraße 1",
|
|
plz="01234", wohnort="Musterstadt", ortsteil="Unterdorf", emails=("anna@example.org",),
|
|
verstorben=True, rechtsperson=("0",), per_ids=("4711",), konten=("98765",))
|
|
|
|
|
|
class TestAnzeigetext(unittest.TestCase):
|
|
|
|
def test_name_anschrift_email(self):
|
|
"""Prüft, dass die Anzeige Name mit Anrede und Titel, die mehrzeilige Anschrift mit Ortsteil und die E-Mail zeigt."""
|
|
text = ea.anzeige_html([ANNA])
|
|
self.assertIn("Frau Dr. Anna Beispiel", text)
|
|
self.assertIn("Hauptstraße 1<br/>01234 Musterstadt<br/>OT Unterdorf", text)
|
|
self.assertIn("anna@example.org", text)
|
|
|
|
def test_keine_internen_angaben(self):
|
|
"""Prüft, dass der Eigentümer weder Konten, Personen-IDs, Rechtsperson-Wert noch das Kennzeichen „verstorben“ sieht."""
|
|
text = ea.anzeige_html([ANNA])
|
|
for intern in ("98765", "4711", "verstorben", "Rechtsperson"):
|
|
self.assertNotIn(intern, text)
|
|
|
|
def test_fehlende_email_wird_genannt(self):
|
|
"""Prüft, dass eine fehlende E-Mail ausdrücklich als „keine angegeben“ erscheint."""
|
|
self.assertIn(ea.OHNE_EMAIL, ea.anzeige_html([Eigentuemer(nachname="Muster")]))
|
|
|
|
def test_werte_werden_maskiert(self):
|
|
"""Prüft, dass Sonderzeichen aus den Daten maskiert werden und kein HTML einschleusen."""
|
|
text = ea.anzeige_html([Eigentuemer(nachname="<b>Muster</b> & Co")])
|
|
self.assertIn("<b>Muster</b> & Co", text)
|
|
self.assertNotIn("<b>Muster", text)
|
|
|
|
def test_mehrere_eintraege_getrennt(self):
|
|
"""Prüft, dass mehrere Einträge untereinander, durch eine Linie getrennt, erscheinen."""
|
|
text = ea.anzeige_html([ANNA, Eigentuemer(vorname="Bernd", nachname="Muster")])
|
|
self.assertEqual(text.count("<hr/>"), 1)
|
|
self.assertIn("Bernd Muster", text)
|
|
|
|
def test_leer_nur_platzhalter(self):
|
|
"""Prüft, dass die leere Anzeige nur den neutralen Platzhalter zeigt."""
|
|
text = ea.anzeige_html([])
|
|
self.assertIn(ea.PLATZHALTER, text)
|
|
self.assertNotIn("Name", text)
|
|
|
|
|
|
class TestFensterOeffnen(unittest.TestCase):
|
|
|
|
def test_normales_fenster_in_standardgroesse(self):
|
|
"""Prüft, dass das Anzeigefenster ohne gemerkte Lage als normales Fenster mit Rahmen in Standardgröße öffnet, nie im Vollbild."""
|
|
fenster = MagicMock()
|
|
ea.zeige_anzeigefenster(fenster)
|
|
fenster.resize.assert_called_once_with(*ea.STANDARDGROESSE)
|
|
fenster.show.assert_called_once()
|
|
fenster.showFullScreen.assert_not_called()
|
|
fenster.setWindowFlags.assert_not_called()
|
|
|
|
def test_gemerkte_lage_wird_wiederhergestellt(self):
|
|
"""Prüft, dass eine gemerkte Größe und Lage der letzten Sitzung wiederhergestellt wird."""
|
|
fenster = MagicMock()
|
|
fenster.restoreGeometry.return_value = True
|
|
ea.zeige_anzeigefenster(fenster, b"geometrie")
|
|
fenster.restoreGeometry.assert_called_once_with(b"geometrie")
|
|
fenster.resize.assert_not_called()
|
|
fenster.show.assert_called_once()
|
|
fenster.showFullScreen.assert_not_called()
|
|
|
|
def test_unbrauchbare_lage_ergibt_standardgroesse(self):
|
|
"""Prüft, dass eine nicht wiederherstellbare Lage auf die Standardgröße zurückfällt."""
|
|
for ergebnis in (False, RuntimeError("kaputt")):
|
|
with self.subTest(ergebnis=ergebnis):
|
|
fenster = MagicMock()
|
|
if isinstance(ergebnis, Exception):
|
|
fenster.restoreGeometry.side_effect = ergebnis
|
|
else:
|
|
fenster.restoreGeometry.return_value = ergebnis
|
|
ea.zeige_anzeigefenster(fenster, b"alt")
|
|
fenster.resize.assert_called_once_with(*ea.STANDARDGROESSE)
|
|
fenster.show.assert_called_once()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|