Drei getrennte Flurstuecke-Ladelogiken auf eine konsolidiert (#47)
handle_flurst_aus_gemarkungen() hatte eine eigene Kopie des "Layer bereits vorhanden"-Dialogs und rief lade_flurstuecke_per_gemarkung direkt auf, statt die bereits vorhandene, getestete Logik in flurstueck_alkis() wiederzuverwenden. Grund war, dass ohne_dialog=True zwei unabhaengige Dinge zugleich abschaltete: die Schluessel-Abfrage per ask_text UND den Existenz-Dialog samt Anhaengen-Dedup. Neuer Parameter ohne_schluessel_abfrage trennt beides: er ueberspringt nur die Schluessel-Abfrage (Schluessel kommen bereits aus der Gemarkungen-Layer-Auswahl), der Existenz-Dialog mit Dedup bleibt aktiv. ohne_dialog bleibt fuer die automatischen Pipelines unveraendert. handle_flurst_alkis() und handle_flurst_aus_gemarkungen() teilen sich jetzt zusaetzlich die Nachbehandlung des Ladeergebnisses (_uebernimm_flurstuecke_ergebnis). lade_flurstuecke_per_gemarkung() wird wieder nur noch von einer Stelle aus aufgerufen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -311,6 +311,28 @@ class TestFlurstueckAlkis(unittest.TestCase):
|
||||
self.assertIsNotNone(layer)
|
||||
self.assertEqual(status, LoadStatus.FIRST)
|
||||
|
||||
# ------------------------------------------------------------------ #
|
||||
# 10. ohne_schluessel_abfrage: vorgabe_schluessel direkt, kein ask_text (#47)
|
||||
# ------------------------------------------------------------------ #
|
||||
@patch("sn_verfahrensgebiet.functions.flurstueck_alkis.lade_flurstuecke_per_gemarkung")
|
||||
@patch("sn_verfahrensgebiet.functions.flurstueck_alkis.QgsProject.instance")
|
||||
@patch("sn_verfahrensgebiet.functions.flurstueck_alkis.ask_text")
|
||||
def test_ohne_schluessel_abfrage_ueberspringt_ask_text(
|
||||
self, mock_ask_text, mock_project, mock_lade
|
||||
):
|
||||
"""ohne_schluessel_abfrage=True verwendet vorgabe_schluessel direkt, ohne ask_text aufzurufen."""
|
||||
mock_project.return_value = _DummyProject()
|
||||
geladen = _DummyFlstLayer([_DummyFlstFeature("110001_0001__00001")])
|
||||
mock_lade.return_value = geladen
|
||||
|
||||
layer, status = flurstueck_alkis(
|
||||
None, vorgabe_schluessel=["1234", "5678"], ohne_schluessel_abfrage=True
|
||||
)
|
||||
|
||||
mock_ask_text.assert_not_called()
|
||||
self.assertIs(layer, geladen)
|
||||
self.assertEqual(status, LoadStatus.FIRST)
|
||||
mock_lade.assert_called_once_with(["1234", "5678"])
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -422,6 +444,28 @@ class TestFlurstueckAlkisAnhaengenDedup(unittest.TestCase):
|
||||
self.assertEqual(status, LoadStatus.APPEND)
|
||||
self.assertEqual(len(bestehend.added), 2)
|
||||
|
||||
@patch("sn_verfahrensgebiet.functions.flurstueck_alkis.lade_flurstuecke_per_gemarkung")
|
||||
@patch("sn_verfahrensgebiet.functions.flurstueck_alkis._check_existing_flurstueck_layer")
|
||||
@patch("sn_verfahrensgebiet.functions.flurstueck_alkis.ask_text")
|
||||
def test_ohne_schluessel_abfrage_append_dedup(self, mock_ask_text, mock_check, mock_lade):
|
||||
"""ohne_schluessel_abfrage=True: Anhängen dedupliziert trotzdem, ohne nach Schlüsseln zu fragen (#47)."""
|
||||
bestehend = _DummyFlstLayer([_DummyFlstFeature("110001_0001__00001")])
|
||||
neu_geladen = _DummyFlstLayer([
|
||||
_DummyFlstFeature("110001_0001__00001"), # bereits vorhanden
|
||||
_DummyFlstFeature("110001_0002__00007"), # neu
|
||||
])
|
||||
mock_check.return_value = (bestehend, LoadStatus.APPEND)
|
||||
mock_lade.return_value = neu_geladen
|
||||
|
||||
layer, status = flurstueck_alkis(
|
||||
None, vorgabe_schluessel=["0001", "0002"], ohne_schluessel_abfrage=True
|
||||
)
|
||||
|
||||
mock_ask_text.assert_not_called()
|
||||
self.assertEqual(status, LoadStatus.APPEND)
|
||||
self.assertEqual(len(bestehend.added), 1)
|
||||
self.assertEqual(bestehend.added[0][FELD_FLURSTUECKSKENNZEICHEN], "110001_0002__00007")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user