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:
1
test/__init__.py
Normal file
1
test/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
#Testordner
|
||||
27
test/run_tests.py
Normal file
27
test/run_tests.py
Normal file
@@ -0,0 +1,27 @@
|
||||
import unittest
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Plugin-Hauptverzeichnis ermitteln
|
||||
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
# Plugin-Ordner in den Python-Pfad aufnehmen
|
||||
sys.path.insert(0, BASE_DIR)
|
||||
|
||||
def run():
|
||||
# Testverzeichnis
|
||||
test_dir = os.path.join(BASE_DIR, "tests")
|
||||
|
||||
# Test-Suite automatisch finden
|
||||
suite = unittest.defaultTestLoader.discover(test_dir)
|
||||
|
||||
# Runner starten
|
||||
runner = unittest.TextTestRunner(verbosity=2)
|
||||
result = runner.run(suite)
|
||||
|
||||
# Exit-Code setzen (für CI oder Skripte nützlich)
|
||||
sys.exit(not result.wasSuccessful())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
run()
|
||||
9
test/start_osgeo4w_qgis.bat
Normal file
9
test/start_osgeo4w_qgis.bat
Normal file
@@ -0,0 +1,9 @@
|
||||
@echo off
|
||||
SET OSGEO4W_ROOT=D:\QGISQT5
|
||||
call %OSGEO4W_ROOT%\bin\o4w_env.bat
|
||||
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT%\apps\qgis
|
||||
set PYTHONPATH=%QGIS_PREFIX_PATH%\python;%PYTHONPATH%
|
||||
set PATH=%OSGEO4W_ROOT%\bin;%QGIS_PREFIX_PATH%\bin;%PATH%
|
||||
|
||||
REM Neue Eingabeaufforderung starten und Python-Skript ausführen
|
||||
start cmd /k "python run_tests.py"
|
||||
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