# sn_basis/test/test_stilpruefer.py import unittest import tempfile import os from pathlib import Path from unittest.mock import patch from sn_basis.modules.stilpruefer import Stilpruefer class TestStilpruefer(unittest.TestCase): def setUp(self): self.pruefer = Stilpruefer() # ----------------------------------------------------- # 1. Keine Datei angegeben # ----------------------------------------------------- def test_keine_datei_angegeben(self): result = self.pruefer.pruefe("") self.assertTrue(result.ok) self.assertEqual(result.aktion, "ok") self.assertIn("Kein Stil angegeben", result.meldung) self.assertIsNone(result.kontext) # ----------------------------------------------------- # 2. Datei existiert und ist .qml # ----------------------------------------------------- @patch("sn_basis.modules.stilpruefer.file_exists", return_value=True) def test_datei_existiert_mit_qml(self, mock_exists): with tempfile.NamedTemporaryFile(suffix=".qml", delete=False) as tmp: tmp_path = tmp.name try: result = self.pruefer.pruefe(tmp_path) self.assertTrue(result.ok) self.assertEqual(result.aktion, "stil_anwendbar") self.assertEqual(result.kontext, Path(tmp_path)) finally: os.remove(tmp_path) # ----------------------------------------------------- # 3. Datei existiert, aber falsche Endung # ----------------------------------------------------- @patch("sn_basis.modules.stilpruefer.file_exists", return_value=True) def test_datei_existiert_falsche_endung(self, mock_exists): with tempfile.NamedTemporaryFile(suffix=".txt", delete=False) as tmp: tmp_path = tmp.name try: result = self.pruefer.pruefe(tmp_path) self.assertFalse(result.ok) self.assertEqual(result.aktion, "falsche_endung") self.assertIn(".qml", result.meldung) self.assertEqual(result.kontext, Path(tmp_path)) finally: os.remove(tmp_path) # ----------------------------------------------------- # 4. Datei existiert nicht # ----------------------------------------------------- @patch("sn_basis.modules.stilpruefer.file_exists", return_value=False) def test_datei_existiert_nicht(self, mock_exists): fake_path = "/tmp/nichtvorhanden.qml" result = self.pruefer.pruefe(fake_path) self.assertFalse(result.ok) self.assertEqual(result.aktion, "datei_nicht_gefunden") self.assertIn("nicht gefunden", result.meldung) self.assertEqual(result.kontext, Path(fake_path)) if __name__ == "__main__": unittest.main()