forked from AG_QGIS/Plugin_SN_Plan41
113 lines
3.8 KiB
Python
113 lines
3.8 KiB
Python
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()
|