forked from AG_QGIS/Plugin_SN_Plan41
Dateieingabe Verfahrens-DB und Linkliste in Tab A eingefügt, Verfahrensgebiets-Layerauswahl in Tab A eingefügt.
This commit is contained in:
112
test/test_tab_a.py
Normal file
112
test/test_tab_a.py
Normal file
@@ -0,0 +1,112 @@
|
||||
import unittest
|
||||
import os
|
||||
import tempfile
|
||||
import sys
|
||||
|
||||
# Plugin-Ordner in den Python-Pfad aufnehmen
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
||||
|
||||
from qgis.PyQt.QtWidgets import QApplication
|
||||
from qgis.core import QgsProject, QgsVectorLayer
|
||||
|
||||
from sn_plan41.ui.tabs import tab_a
|
||||
|
||||
|
||||
class TestTabA(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
"""Qt-Anwendung initialisieren."""
|
||||
cls.app = QApplication([])
|
||||
|
||||
def setUp(self):
|
||||
"""Vor jedem Test: Projektvariablen löschen und TabA neu erzeugen."""
|
||||
self.project = QgsProject.instance()
|
||||
self.project.setCustomVariables({})
|
||||
|
||||
# TabA erzeugen
|
||||
self.tab = TabA()
|
||||
|
||||
# Temporäre Testdateien
|
||||
self.tmp_dir = tempfile.gettempdir()
|
||||
self.test_db = os.path.join(self.tmp_dir, "test_db.gpkg")
|
||||
self.test_link = os.path.join(self.tmp_dir, "test_link.gpkg")
|
||||
|
||||
# Dummy-Dateien anlegen
|
||||
with open(self.test_db, "w") as f:
|
||||
f.write("")
|
||||
with open(self.test_link, "w") as f:
|
||||
f.write("")
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Verfahrens-DB speichern & wiederherstellen
|
||||
# ---------------------------------------------------------
|
||||
def test_save_and_restore_verfahrens_db(self):
|
||||
self.tab.on_file_changed(self.test_db)
|
||||
|
||||
vars = self.project.customVariables()
|
||||
self.assertEqual(vars.get("sn_verfahrens_db"), self.test_db)
|
||||
|
||||
tab2 = TabA()
|
||||
self.assertEqual(tab2.verfahrens_db, self.test_db)
|
||||
self.assertEqual(tab2.file_widget.filePath(), self.test_db)
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Verfahrens-DB löschen
|
||||
# ---------------------------------------------------------
|
||||
def test_delete_verfahrens_db(self):
|
||||
self.tab.on_file_changed(self.test_db)
|
||||
self.tab.on_file_changed("")
|
||||
|
||||
vars = self.project.customVariables()
|
||||
self.assertNotIn("sn_verfahrens_db", vars)
|
||||
self.assertIsNone(self.tab.verfahrens_db)
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Linkliste speichern & löschen
|
||||
# ---------------------------------------------------------
|
||||
def test_save_and_delete_linkliste(self):
|
||||
self.tab.on_linkliste_changed(self.test_link)
|
||||
|
||||
vars = self.project.customVariables()
|
||||
self.assertEqual(vars.get("sn_linkliste"), self.test_link)
|
||||
|
||||
self.tab.on_linkliste_changed("")
|
||||
|
||||
vars = self.project.customVariables()
|
||||
self.assertNotIn("sn_linkliste", vars)
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Layer-Vorauswahl
|
||||
# ---------------------------------------------------------
|
||||
def test_preselect_verfahrensgebiet_layer(self):
|
||||
vg_layer = QgsVectorLayer("Polygon?crs=EPSG:4326", "Verfahrensgebiet", "memory")
|
||||
other_layer = QgsVectorLayer("Polygon?crs=EPSG:4326", "AndereDaten", "memory")
|
||||
|
||||
self.project.addMapLayer(other_layer)
|
||||
self.project.addMapLayer(vg_layer)
|
||||
|
||||
tab2 = TabA()
|
||||
|
||||
selected = tab2.layer_combo.currentLayer()
|
||||
self.assertIsNotNone(selected)
|
||||
self.assertEqual(selected.name(), "Verfahrensgebiet")
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Gespeicherter Layer wird wiederhergestellt
|
||||
# ---------------------------------------------------------
|
||||
def test_restore_saved_layer(self):
|
||||
vg_layer = QgsVectorLayer("Polygon?crs=EPSG:4326", "Verfahrensgebiet", "memory")
|
||||
self.project.addMapLayer(vg_layer)
|
||||
|
||||
vars = {"sn_verfahrensgebiet_layer": vg_layer.id()}
|
||||
self.project.setCustomVariables(vars)
|
||||
|
||||
tab2 = TabA()
|
||||
|
||||
selected = tab2.layer_combo.currentLayer()
|
||||
self.assertEqual(selected.id(), vg_layer.id())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user