Files
Plugin_SN_Basis/test/test_linkpruefer.py

109 lines
3.4 KiB
Python

# sn_basis/test/test_linkpruefer.py
import unittest
from unittest.mock import patch
from sn_basis.modules.linkpruefer import Linkpruefer
from sn_basis.modules.pruef_ergebnis import pruef_ergebnis
# ---------------------------------------------------------
# Mock-Ergebnisse für network_head()
# ---------------------------------------------------------
class MockResponseOK:
ok = True
status = 200
error = None
class MockResponseNotFound:
ok = False
status = 404
error = "Not Found"
class MockResponseConnectionError:
ok = False
status = None
error = "Connection refused"
# ---------------------------------------------------------
# Testklasse
# ---------------------------------------------------------
class TestLinkpruefer(unittest.TestCase):
# -----------------------------------------------------
# 1. Remote-Link erreichbar
# -----------------------------------------------------
@patch("sn_basis.functions.qgisqt_wrapper.network_head")
def test_remote_link_ok(self, mock_head):
mock_head.return_value = MockResponseOK()
lp = Linkpruefer("http://example.com", "REST")
result = lp.pruefe()
self.assertTrue(result.ok)
self.assertEqual(result.aktion, "ok")
# -----------------------------------------------------
# 2. Remote-Link nicht erreichbar
# -----------------------------------------------------
@patch("sn_basis.functions.qgisqt_wrapper.network_head")
def test_remote_link_error(self, mock_head):
mock_head.return_value = MockResponseConnectionError()
lp = Linkpruefer("http://example.com", "REST")
result = lp.pruefe()
self.assertFalse(result.ok)
self.assertEqual(result.aktion, "url_nicht_erreichbar")
self.assertIn("Connection refused", result.meldung)
# -----------------------------------------------------
# 3. Remote-Link 404
# -----------------------------------------------------
@patch("sn_basis.functions.qgisqt_wrapper.network_head")
def test_remote_link_404(self, mock_head):
mock_head.return_value = MockResponseNotFound()
lp = Linkpruefer("http://example.com/missing", "REST")
result = lp.pruefe()
self.assertFalse(result.ok)
self.assertEqual(result.aktion, "url_nicht_erreichbar")
self.assertIn("404", result.meldung)
# -----------------------------------------------------
# 4. Lokaler Pfad existiert nicht
# -----------------------------------------------------
@patch("sn_basis.functions.syswrapper.file_exists")
def test_local_link_not_found(self, mock_exists):
mock_exists.return_value = False
lp = Linkpruefer("/path/to/missing/file.shp", "OGR")
result = lp.pruefe()
self.assertFalse(result.ok)
self.assertEqual(result.aktion, "pfad_nicht_gefunden")
# -----------------------------------------------------
# 5. Lokaler Pfad existiert, aber ungewöhnlich
# -----------------------------------------------------
@patch("sn_basis.functions.syswrapper.file_exists")
def test_local_link_warning(self, mock_exists):
mock_exists.return_value = True
lp = Linkpruefer("/path/to/file_without_extension", "OGR")
result = lp.pruefe()
self.assertTrue(result.ok)
self.assertEqual(result.aktion, "ok")
self.assertIn("ungewöhnlich", result.meldung)
if __name__ == "__main__":
unittest.main()