# sn_basis/test/test_linkpruefer.py import unittest from pathlib import Path from unittest.mock import patch from sn_basis.modules.linkpruefer import Linkpruefer from sn_basis.functions.qgiscore_wrapper import NetworkReply class TestLinkpruefer(unittest.TestCase): # ----------------------------------------------------- # 1. Remote-Link erreichbar # ----------------------------------------------------- @patch("sn_basis.modules.linkpruefer.network_head") def test_remote_link_ok(self, mock_head): mock_head.return_value = NetworkReply(error=0) lp = Linkpruefer() result = lp.pruefe("http://example.com") self.assertTrue(result.ok) self.assertEqual(result.aktion, "ok") self.assertEqual(result.kontext, "http://example.com") # ----------------------------------------------------- # 2. Remote-Link nicht erreichbar # ----------------------------------------------------- @patch("sn_basis.modules.linkpruefer.network_head") def test_remote_link_error(self, mock_head): mock_head.return_value = NetworkReply(error=1) lp = Linkpruefer() result = lp.pruefe("http://example.com") self.assertFalse(result.ok) self.assertEqual(result.aktion, "url_nicht_erreichbar") self.assertEqual(result.kontext, "http://example.com") # ----------------------------------------------------- # 3. Netzwerkfehler (None) # ----------------------------------------------------- @patch("sn_basis.modules.linkpruefer.network_head", return_value=None) def test_remote_link_network_error(self, mock_head): lp = Linkpruefer() result = lp.pruefe("http://example.com") self.assertFalse(result.ok) self.assertEqual(result.aktion, "netzwerkfehler") self.assertEqual(result.kontext, "http://example.com") # ----------------------------------------------------- # 4. Lokaler Pfad existiert nicht # ----------------------------------------------------- @patch("sn_basis.modules.linkpruefer.file_exists", return_value=False) def test_local_link_not_found(self, mock_exists): lp = Linkpruefer() result = lp.pruefe("/path/to/missing/file.shp") self.assertFalse(result.ok) self.assertEqual(result.aktion, "pfad_nicht_gefunden") self.assertEqual(result.kontext, Path("/path/to/missing/file.shp")) # ----------------------------------------------------- # 5. Lokaler Pfad existiert # ----------------------------------------------------- @patch("sn_basis.modules.linkpruefer.file_exists", return_value=True) def test_local_link_ok(self, mock_exists): lp = Linkpruefer() result = lp.pruefe("/path/to/file.shp") self.assertTrue(result.ok) self.assertEqual(result.aktion, "ok") self.assertEqual(result.kontext, Path("/path/to/file.shp")) if __name__ == "__main__": unittest.main()