try2 und try3 laden das Verfahrensgebiet mit Detailprüfung anstelle der Flurstücke vom wfs
This commit is contained in:
@@ -27,7 +27,7 @@ import sys
|
||||
import tempfile
|
||||
import types
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Minimales QGIS-Mock-Setup
|
||||
@@ -49,9 +49,12 @@ from sn_verfahrensgebiet.functions.beteiligung_pruefung import (
|
||||
baue_flurstueck_csv_liste,
|
||||
lade_beteiligung_csv,
|
||||
BeteiligungPruefungFehler,
|
||||
BeteiligungErgebnis,
|
||||
FELD_FLURSTUECK_CSV,
|
||||
CSV_SPALTE_FLURSTUECK,
|
||||
CSV_SPALTE_VEF_VKZF,
|
||||
_lade_via_alkis_pipeline_und_vergleiche,
|
||||
_try3_bootstrap_und_try2,
|
||||
)
|
||||
|
||||
_MOD = "sn_verfahrensgebiet.functions.beteiligung_pruefung"
|
||||
@@ -83,6 +86,30 @@ class TestBaueFlurstueckCsv(unittest.TestCase):
|
||||
self.assertIsNone(baue_flurstueck_csv("", "14"))
|
||||
self.assertIsNone(baue_flurstueck_csv(None, "14"))
|
||||
|
||||
def test_nenner_9001_wird_zu_buchstabe_a(self):
|
||||
ergebnis = baue_flurstueck_csv("1234/123/9001/00", "14")
|
||||
self.assertEqual(ergebnis, "141234___00123000a00")
|
||||
|
||||
def test_nenner_9002_wird_zu_buchstabe_b(self):
|
||||
ergebnis = baue_flurstueck_csv("1234/123/9002/00", "14")
|
||||
self.assertEqual(ergebnis, "141234___00123000b00")
|
||||
|
||||
def test_nenner_9026_wird_zu_buchstabe_z(self):
|
||||
ergebnis = baue_flurstueck_csv("1234/123/9026/00", "14")
|
||||
self.assertEqual(ergebnis, "141234___00123000z00")
|
||||
|
||||
def test_nenner_ausserhalb_buchstaben_bereich_bleibt_numerisch(self):
|
||||
ergebnis = baue_flurstueck_csv("1234/123/9027/00", "14")
|
||||
self.assertEqual(ergebnis, "141234___00123902700")
|
||||
|
||||
def test_nenner_9001_mit_fuehrenden_nullen_wird_erkannt(self):
|
||||
ergebnis = baue_flurstueck_csv("1234/123/09001/00", "14")
|
||||
self.assertEqual(ergebnis, "141234___00123000a00")
|
||||
|
||||
def test_einstellige_folge_wird_auf_2_stellen_aufgefuellt(self):
|
||||
ergebnis = baue_flurstueck_csv("1234/123/45/5", "14")
|
||||
self.assertEqual(ergebnis, "141234___00123004505")
|
||||
|
||||
|
||||
class TestBaueFlurstueckCsvListe(unittest.TestCase):
|
||||
def test_nur_gueltige_zeilen_in_liste(self):
|
||||
@@ -98,6 +125,88 @@ class TestBaueFlurstueckCsvListe(unittest.TestCase):
|
||||
self.assertEqual(zeilen[2][FELD_FLURSTUECK_CSV], "145678___00001____01")
|
||||
|
||||
|
||||
class TestLadeViaAlkisPipelineUndVergleiche(unittest.TestCase):
|
||||
@patch(f"{_MOD}._try1_listenabgleich")
|
||||
@patch(f"{_MOD}.apply_style")
|
||||
@patch(f"{_MOD}.QgsProject")
|
||||
@patch(f"{_MOD}.verfahrensgebiet_alkis_komplett")
|
||||
def test_pipeline_fehler_wirft_beteiligung_pruefung_fehler(
|
||||
self, mock_pipeline, mock_project_cls, mock_apply_style, mock_try1
|
||||
):
|
||||
mock_pipeline.return_value = (None, None, None, None)
|
||||
with self.assertRaises(BeteiligungPruefungFehler):
|
||||
_lade_via_alkis_pipeline_und_vergleiche(object(), ["145678___00001____01"])
|
||||
mock_try1.assert_not_called()
|
||||
|
||||
@patch(f"{_MOD}._try1_listenabgleich")
|
||||
@patch(f"{_MOD}.apply_style")
|
||||
@patch(f"{_MOD}.QgsProject")
|
||||
@patch(f"{_MOD}.verfahrensgebiet_alkis_komplett")
|
||||
def test_ruft_pipeline_silent_auf_und_delegiert_an_try1(
|
||||
self, mock_pipeline, mock_project_cls, mock_apply_style, mock_try1
|
||||
):
|
||||
tab_widget = object()
|
||||
enriched = MagicMock(name="enriched")
|
||||
enriched.isValid.return_value = True
|
||||
enriched.id.return_value = "vg1"
|
||||
flst = MagicMock(name="flst")
|
||||
flst.isValid.return_value = True
|
||||
flst.name.return_value = "Flurstücke"
|
||||
bror = MagicMock(name="bror")
|
||||
bror.isValid.return_value = True
|
||||
bror.id.return_value = "bror1"
|
||||
mock_pipeline.return_value = (enriched, flst, bror, "FIRST")
|
||||
|
||||
mock_project = MagicMock()
|
||||
mock_project.mapLayersByName.return_value = []
|
||||
mock_project.mapLayer.return_value = None
|
||||
mock_project_cls.instance.return_value = mock_project
|
||||
|
||||
vergleich_layer = MagicMock(name="vergleich")
|
||||
statistik = {"beide": 1, "nur_verfahrensgebiet": 2, "nur_aglb": 3}
|
||||
mock_try1.return_value = (vergleich_layer, statistik)
|
||||
|
||||
flurstueck_csv_liste = ["145678___00001____01"]
|
||||
ergebnis = _lade_via_alkis_pipeline_und_vergleiche(tab_widget, flurstueck_csv_liste)
|
||||
|
||||
mock_pipeline.assert_called_once_with(tab_widget, silent=True)
|
||||
mock_try1.assert_called_once_with(tab_widget, enriched, flurstueck_csv_liste)
|
||||
|
||||
self.assertIsInstance(ergebnis, BeteiligungErgebnis)
|
||||
self.assertEqual(ergebnis.modus, "try2")
|
||||
self.assertEqual(ergebnis.statistik, statistik)
|
||||
self.assertIn("Übereinstimmend: 1", ergebnis.statistik_text)
|
||||
layers = [lyr for lyr, _ in ergebnis.layers]
|
||||
self.assertIn(enriched, layers)
|
||||
self.assertIn(vergleich_layer, layers)
|
||||
self.assertIn(flst, layers)
|
||||
self.assertIn(bror, layers)
|
||||
|
||||
|
||||
class TestTry3BootstrapUndTry2(unittest.TestCase):
|
||||
@patch(f"{_MOD}._lade_via_alkis_pipeline_und_vergleiche")
|
||||
@patch(f"{_MOD}.set_variable")
|
||||
def test_setzt_verfahrensnummer_und_ergaenzt_statistik_text(
|
||||
self, mock_set_variable, mock_lade
|
||||
):
|
||||
basis_ergebnis = BeteiligungErgebnis(
|
||||
modus="try2",
|
||||
layers=[],
|
||||
statistik={"beide": 0, "nur_verfahrensgebiet": 0, "nur_aglb": 0},
|
||||
statistik_text="Übereinstimmend: 0\n...",
|
||||
)
|
||||
mock_lade.return_value = basis_ergebnis
|
||||
|
||||
zeilen = [{CSV_SPALTE_VEF_VKZF: "12345", CSV_SPALTE_FLURSTUECK: "1234/1/1/00"}]
|
||||
spaltennamen = [CSV_SPALTE_VEF_VKZF, CSV_SPALTE_FLURSTUECK]
|
||||
|
||||
ergebnis = _try3_bootstrap_und_try2(object(), zeilen, spaltennamen, ["kz1"])
|
||||
|
||||
mock_set_variable.assert_called_once_with("verfahrensnummer", "12345", scope="project")
|
||||
self.assertEqual(ergebnis.modus, "try3")
|
||||
self.assertTrue(ergebnis.statistik_text.startswith("Verfahrensnummer aus CSV: 12345"))
|
||||
|
||||
|
||||
class TestLadeBeteiligungCsv(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self._tmp_files = []
|
||||
|
||||
Reference in New Issue
Block a user