— (Docstring fehlt)
Keine Testfälle: Die Datei enthält keine unittest.TestCase-Klasse – sie ist eine reine Hilfsdatei, die beim Testlauf nur importiert wird.
diff --git a/docs/architektur/modulkarte.md b/docs/architektur/modulkarte.md index 58f69d4..203f972 100644 --- a/docs/architektur/modulkarte.md +++ b/docs/architektur/modulkarte.md @@ -63,7 +63,7 @@ Legende: ⚠ = über 600 Zeilen, nie komplett laden, per `grep -n "def "` navigi | Pfad | Zweck | |---|---| -| `tests/` | 29 Testdateien, `unittest`, Mock-Modus; `run_tests.py` (farbiger Runner), `test_qgis.bat` (Coverage in OSGeo4W) | +| `tests/` | 32 Testdateien, `unittest`, Mock-Modus; `run_tests.py` (farbiger Runner), `test_qgis.bat` (Coverage in OSGeo4W) | | `styles/` | QML-Stile (Verfahrensgebiet, LSG, Denkmalschutz, Flurstücksbeschriftung) | | `data/landkreise.json` | Landkreise mit Kennzahl | | `assets/plan-qgis340ExitCrashFix.prompt.md` | KI-Planungsnotiz zum Exit-Crash (historisch) | diff --git a/docs/tests/testkatalog.html b/docs/tests/testkatalog.html index 6c22c40..a81b2f3 100644 --- a/docs/tests/testkatalog.html +++ b/docs/tests/testkatalog.html @@ -121,22 +121,22 @@ Testkatalog der sn_*-Plugins — was die Suite heute prüft, auf einen Blick.
Plattform-Plugin · Ordner Plugin_SN_Basis · 29 Testdateien · 249 Testfälle
+Plattform-Plugin · Ordner Plugin_SN_Basis · 32 Testdateien · 317 Testfälle
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| CloseEventTests test_ruft_cleanup_aller_tabs_auf | Prüft, dass closeEvent cleanup() auf allen Tabs des Dock-Widgets aufruft. | grün | nie geprüft |
| CloseEventTests test_ignoriert_tabs_ohne_cleanup | Prüft, dass ein Tab ohne cleanup()-Methode nicht zu einem Fehler führt. | grün | nie geprüft |
| CloseEventTests test_fehler_in_cleanup_wird_abgefangen_und_andere_tabs_laufen_weiter | Prüft, dass ein Fehler in cleanup() eines Tabs nicht die übrigen Tabs verhindert. | grün | nie geprüft |
| CloseEventTests test_setzt_toolbar_action_zurueck | Prüft, dass closeEvent die verknüpfte Toolbar-Action auf 'nicht gedrückt' zurücksetzt. | grün | nie geprüft |
| CloseEventTests test_ohne_action_wird_nichts_zurueckgesetzt | Prüft, dass closeEvent ohne verknüpfte Toolbar-Action keine Ausnahme wirft. | grün | nie geprüft |
— (Docstring fehlt)
Keine Testfälle: Die Datei enthält keine unittest.TestCase-Klasse – sie ist eine reine Hilfsdatei, die beim Testlauf nur importiert wird.
— (Docstring fehlt)
flowchart TD + classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| CloseEventTests test_ruft_cleanup_aller_tabs_auf | Prüft, dass closeEvent cleanup() auf allen Tabs des Dock-Widgets aufruft. | grün | nie geprüft |
| CloseEventTests test_ignoriert_tabs_ohne_cleanup | Prüft, dass ein Tab ohne cleanup()-Methode nicht zu einem Fehler führt. | grün | nie geprüft |
| CloseEventTests test_fehler_in_cleanup_wird_abgefangen_und_andere_tabs_laufen_weiter | Prüft, dass ein Fehler in cleanup() eines Tabs nicht die übrigen Tabs verhindert. | grün | nie geprüft |
| CloseEventTests test_setzt_toolbar_action_zurueck | Prüft, dass closeEvent die verknüpfte Toolbar-Action auf 'nicht gedrückt' zurücksetzt. | grün | nie geprüft |
| CloseEventTests test_ohne_action_wird_nichts_zurueckgesetzt | Prüft, dass closeEvent ohne verknüpfte Toolbar-Action keine Ausnahme wirft. | grün | nie geprüft |
— (Docstring fehlt)
Keine Testfälle: Die Datei enthält keine unittest.TestCase-Klasse – sie ist eine reine Hilfsdatei, die beim Testlauf nur importiert wird.
— (Docstring fehlt)
flowchart TD
root(["test_datagrabber.py"])
class root rootnode
- root --> g1["TestDataGrabber (6)"]
+ root --> g1["TestDataGrabber (8)"]
class g1 groupnode
g1 --> t1("analyze_source_type_detects_excel")
g1 --> t2("analyze_source_type_returns_unknown_filetype")
@@ -189,17 +189,21 @@
g1 --> t4("analyze_source_type_returns_unbekannte_quelle_on_full_failure")
g1 --> t5("run_returns_success_summary_with_valid_rows")
g1 --> t6("run_returns_failure_summary_without_rows")
+ g1 --> t7("aggregate_results_mit_zeilen_liefert_erfolgsergebnis")
+ g1 --> t8("aggregate_results_ohne_zeilen_liefert_keine_validen_eintraege")
class t1 ok
class t2 ok
class t3 ok
class t4 ok
class t5 ok
class t6 ok
+ class t7 ok
+ class t8 ok
classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600;
classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
- classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| TestDataGrabber test_analyze_source_type_detects_excel | Prüft, dass eine erreichbare .xlsx-Datei als Quelltyp 'excel' erkannt wird. | grün | geprüft am 2026-09-16 |
| TestDataGrabber test_analyze_source_type_returns_unknown_filetype | Prüft, dass eine erreichbare Datei mit unbekannter Endung als 'unbekannter_dateityp' eingestuft wird. | grün | geprüft am 2026-09-16 |
| TestDataGrabber test_analyze_source_type_detects_service_when_file_check_fails | Prüft, dass eine Quelle als 'dienst' erkannt wird, wenn die Dateiprüfung fehlschlägt, die URL aber erreichbar ist. | grün | geprüft am 2026-09-16 |
| TestDataGrabber test_analyze_source_type_returns_unbekannte_quelle_on_full_failure | Prüft, dass eine Quelle als 'unbekannte_quelle' eingestuft wird, wenn weder Datei- noch Linkprüfung erfolgreich sind. | grün | geprüft am 2026-09-16 |
| TestDataGrabber test_run_returns_success_summary_with_valid_rows | Prüft, dass run() bei erfolgreichem Excel-Import eine Erfolgsmeldung mit den geladenen Zeilen liefert. | grün | geprüft am 2026-09-16 |
| TestDataGrabber test_run_returns_failure_summary_without_rows | Prüft, dass run() bei nicht erkennbarer Quelle eine Fehlermeldung ohne Zeilen liefert. | grün | geprüft am 2026-09-16 |
— (Docstring fehlt)
flowchart TD + classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| TestDataGrabber test_analyze_source_type_detects_excel | Prüft, dass eine erreichbare .xlsx-Datei als Quelltyp 'excel' erkannt wird. | grün | geprüft am 2026-09-16 |
| TestDataGrabber test_analyze_source_type_returns_unknown_filetype | Prüft, dass eine erreichbare Datei mit unbekannter Endung als 'unbekannter_dateityp' eingestuft wird. | grün | geprüft am 2026-09-16 |
| TestDataGrabber test_analyze_source_type_detects_service_when_file_check_fails | Prüft, dass eine Quelle als 'dienst' erkannt wird, wenn die Dateiprüfung fehlschlägt, die URL aber erreichbar ist. | grün | geprüft am 2026-09-16 |
| TestDataGrabber test_analyze_source_type_returns_unbekannte_quelle_on_full_failure | Prüft, dass eine Quelle als 'unbekannte_quelle' eingestuft wird, wenn weder Datei- noch Linkprüfung erfolgreich sind. | grün | geprüft am 2026-09-16 |
| TestDataGrabber test_run_returns_success_summary_with_valid_rows | Prüft, dass run() bei erfolgreichem Excel-Import eine Erfolgsmeldung mit den geladenen Zeilen liefert. | grün | geprüft am 2026-09-16 |
| TestDataGrabber test_run_returns_failure_summary_without_rows | Prüft, dass run() bei nicht erkennbarer Quelle eine Fehlermeldung ohne Zeilen liefert. | grün | geprüft am 2026-09-16 |
| TestDataGrabber test_aggregate_results_mit_zeilen_liefert_erfolgsergebnis | Prüft, dass _aggregate_results bei vorhandenen Zeilen ein Erfolgsergebnis mit Zeilenzahl liefert. | grün | nie geprüft |
| TestDataGrabber test_aggregate_results_ohne_zeilen_liefert_keine_validen_eintraege | Prüft, dass _aggregate_results ohne Zeilen ok=False mit Aktion 'keine_validen_eintraege' liefert. | grün | nie geprüft |
— (Docstring fehlt)
flowchart TD root(["test_dateipruefer.py"]) class root rootnode root --> g1["TestDateipruefer (12)"] @@ -600,7 +604,61 @@ classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420; classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20; classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08; - classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| GetMessageBarTests test_liefert_objekt_mit_pushmessage_methode | Prüft, dass _get_message_bar ein Objekt mit aufrufbarer pushMessage()-Methode liefert. | grün | nie geprüft |
| GetMessageBarTests test_faellt_bei_fehlerhaftem_iface_auf_mock_bar_zurueck | Prüft, dass ein Fehler beim Zugriff auf iface.messageBar() auf eine funktionierende Mock-MessageBar zurückfällt. | grün | nie geprüft |
| PushMessageTests test_liefert_dict_mit_titel_text_level_und_dauer | Prüft, dass push_message im Mock-Modus ein Dict mit den übergebenen Werten liefert. | grün | nie geprüft |
| PushMessageTests test_fehler_in_der_message_bar_wird_abgefangen | Prüft, dass eine fehlschlagende MessageBar push_message nicht zum Absturz bringt, sondern None liefert. | grün | nie geprüft |
— (Docstring fehlt)
flowchart TD + classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| GetMessageBarTests test_liefert_objekt_mit_pushmessage_methode | Prüft, dass _get_message_bar ein Objekt mit aufrufbarer pushMessage()-Methode liefert. | grün | nie geprüft |
| GetMessageBarTests test_faellt_bei_fehlerhaftem_iface_auf_mock_bar_zurueck | Prüft, dass ein Fehler beim Zugriff auf iface.messageBar() auf eine funktionierende Mock-MessageBar zurückfällt. | grün | nie geprüft |
| PushMessageTests test_liefert_dict_mit_titel_text_level_und_dauer | Prüft, dass push_message im Mock-Modus ein Dict mit den übergebenen Werten liefert. | grün | nie geprüft |
| PushMessageTests test_fehler_in_der_message_bar_wird_abgefangen | Prüft, dass eine fehlschlagende MessageBar push_message nicht zum Absturz bringt, sondern None liefert. | grün | nie geprüft |
Tests für sn_basis/functions/os_wrapper.py::is_case_sensitive_fs (Issue #67).
flowchart TD
+ root(["test_os_wrapper.py"])
+ class root rootnode
+ root --> g1["IsCaseSensitiveFsTests (3)"]
+ class g1 groupnode
+ g1 --> t1("windows_ist_nicht_case_sensitiv")
+ g1 --> t2("macos_ist_nicht_case_sensitiv")
+ g1 --> t3("linux_ist_case_sensitiv")
+ class t1 ok
+ class t2 ok
+ class t3 ok
+ classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600;
+ classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
+ classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
+ classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
+ classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| IsCaseSensitiveFsTests test_windows_ist_nicht_case_sensitiv | Prüft, dass Windows als nicht case-sensitives Dateisystem gilt. | grün | nie geprüft |
| IsCaseSensitiveFsTests test_macos_ist_nicht_case_sensitiv | Prüft, dass macOS als nicht case-sensitives Dateisystem gilt. | grün | nie geprüft |
| IsCaseSensitiveFsTests test_linux_ist_case_sensitiv | Prüft, dass Linux als case-sensitives Dateisystem gilt. | grün | nie geprüft |
— (Docstring fehlt)
flowchart TD root(["test_print_layout.py"]) class root rootnode root --> g1["TestPrintLayout (5)"] @@ -662,7 +720,120 @@ classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420; classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20; classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08; - classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| TestPrintLogic test_get_baufreigabe_page_dimensions_prefers_a4_for_small_extent | Prüft, dass für einen kleinen Kartenausschnitt (Baufreigabe) das Format DIN A4 ohne Fallback gewählt wird. | grün | nie geprüft |
| TestPrintLogic test_get_baufreigabe_page_dimensions_escalates_to_a3 | Prüft, dass ein größerer Kartenausschnitt (Baufreigabe) auf DIN A3 eskaliert wird. | grün | nie geprüft |
| TestPrintLogic test_get_baufreigabe_page_dimensions_respects_a4_as_maximum_with_fallback | Prüft, dass bei auf DIN A4 begrenztem Höchstformat ein eigentlich A3-großer Ausschnitt mit Fallback-Kennzeichnung auf A4 reduziert wird. | grün | nie geprüft |
| TestPrintLogic test_get_baufreigabe_page_dimensions_falls_back_to_a3_for_oversize_extent | Prüft, dass ein Ausschnitt, der auch DIN A3 übersteigt, mit Fallback-Kennzeichnung auf DIN A3 begrenzt wird. | grün | nie geprüft |
| TestPrintLogic test_select_standard_page_layout_uses_a4_as_minimum_sheet | Prüft, dass für einen kleinen Ausschnitt trotz Höchstgrenze DIN A3 mindestens DIN A4 als Blattgröße gewählt wird. | grün | nie geprüft |
| TestPrintLogic test_select_standard_page_layout_limits_hauptkarte_to_a3 | Prüft, dass ein die Fläche voll ausnutzender Ausschnitt auf DIN A3 als größtes zulässiges Format begrenzt wird. | grün | nie geprüft |
| TestPrintLogic test_select_standard_page_layout_returns_none_if_a3_is_too_small | Prüft, dass kein Layout gewählt wird (None), wenn der Ausschnitt selbst DIN A3 als Höchstformat übersteigt. | grün | nie geprüft |
| TestPrintLogic test_get_standard_layout_dimensions_uses_a4_and_forces_fit_for_small_extent | Prüft, dass für einen kleinen Ausschnitt DIN A4 gewählt und das Einpassen (force_fit) erzwungen wird. | grün | nie geprüft |
| TestPrintLogic test_get_standard_layout_dimensions_caps_endlosrolle_width_at_2000_mm | Prüft, dass bei aktiviertem Formfaktor (Endlosrolle) die Seitenbreite auf die maximale Rollenbreite (2000 mm) begrenzt wird. | grün | nie geprüft |
| TestPrintLogic test_apply_standard_minimum_a4_fallback_for_small_page | Prüft, dass eine zu kleine Seite auf die A4-Mindestgröße angehoben und als erzwungen (forced) markiert wird. | grün | nie geprüft |
| TestPrintLogic test_apply_standard_minimum_a4_fallback_keeps_large_page | Prüft, dass eine bereits ausreichend große Seite (A3) unverändert bleibt und nicht als erzwungen markiert wird. | grün | nie geprüft |
| TestPrintLogic test_does_plot_fit_page_true_for_standard_a4 | Prüft, dass ein Kartenobjekt, das in eine DIN A4-Seite passt, als passend erkannt wird. | grün | nie geprüft |
| TestPrintLogic test_does_plot_fit_page_false_if_objects_exceed_page | Prüft, dass ein Kartenobjekt, das die Seitenbreite überschreitet, als nicht passend erkannt wird. | grün | nie geprüft |
| TestPrintLogic test_set_druckbereich_accepts_wie_kartenfenster | Prüft, dass die Auswahl 'wie Kartenfenster' als Projektvariable 'druckbereich' gespeichert wird. | grün | nie geprüft |
| TestPrintLogic test_get_canvas_extent_returns_valid_extent | Prüft, dass der aktuelle Kartenausschnitt des Kartenfensters unverändert zurückgegeben wird. | grün | nie geprüft |
| TestPrintLogic test_resolve_extent_uses_canvas_extent_without_buffer | Prüft, dass bei Druckbereich 'wie Kartenfenster' der Kartenausschnitt ohne Puffer und ohne verknüpften Layer übernommen wird. | grün | nie geprüft |
| TestPrintLogic test_resolve_extent_uses_rectangle_extent_without_buffer | Prüft, dass bei Druckbereich 'Rechteck' der gezeichnete Ausschnitt ohne Puffer und ohne verknüpften Layer übernommen wird. | grün | nie geprüft |
Tests für sn_basis/modules/pruef_ergebnis.py::ist_verfahrens_db_aktion/erlaubte_persistierung (Issue #65).
flowchart TD + classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| TestPrintLogic test_get_baufreigabe_page_dimensions_prefers_a4_for_small_extent | Prüft, dass für einen kleinen Kartenausschnitt (Baufreigabe) das Format DIN A4 ohne Fallback gewählt wird. | grün | nie geprüft |
| TestPrintLogic test_get_baufreigabe_page_dimensions_escalates_to_a3 | Prüft, dass ein größerer Kartenausschnitt (Baufreigabe) auf DIN A3 eskaliert wird. | grün | nie geprüft |
| TestPrintLogic test_get_baufreigabe_page_dimensions_respects_a4_as_maximum_with_fallback | Prüft, dass bei auf DIN A4 begrenztem Höchstformat ein eigentlich A3-großer Ausschnitt mit Fallback-Kennzeichnung auf A4 reduziert wird. | grün | nie geprüft |
| TestPrintLogic test_get_baufreigabe_page_dimensions_falls_back_to_a3_for_oversize_extent | Prüft, dass ein Ausschnitt, der auch DIN A3 übersteigt, mit Fallback-Kennzeichnung auf DIN A3 begrenzt wird. | grün | nie geprüft |
| TestPrintLogic test_select_standard_page_layout_uses_a4_as_minimum_sheet | Prüft, dass für einen kleinen Ausschnitt trotz Höchstgrenze DIN A3 mindestens DIN A4 als Blattgröße gewählt wird. | grün | nie geprüft |
| TestPrintLogic test_select_standard_page_layout_limits_hauptkarte_to_a3 | Prüft, dass ein die Fläche voll ausnutzender Ausschnitt auf DIN A3 als größtes zulässiges Format begrenzt wird. | grün | nie geprüft |
| TestPrintLogic test_select_standard_page_layout_returns_none_if_a3_is_too_small | Prüft, dass kein Layout gewählt wird (None), wenn der Ausschnitt selbst DIN A3 als Höchstformat übersteigt. | grün | nie geprüft |
| TestPrintLogic test_get_standard_layout_dimensions_uses_a4_and_forces_fit_for_small_extent | Prüft, dass für einen kleinen Ausschnitt DIN A4 gewählt und das Einpassen (force_fit) erzwungen wird. | grün | nie geprüft |
| TestPrintLogic test_get_standard_layout_dimensions_caps_endlosrolle_width_at_2000_mm | Prüft, dass bei aktiviertem Formfaktor (Endlosrolle) die Seitenbreite auf die maximale Rollenbreite (2000 mm) begrenzt wird. | grün | nie geprüft |
| TestPrintLogic test_apply_standard_minimum_a4_fallback_for_small_page | Prüft, dass eine zu kleine Seite auf die A4-Mindestgröße angehoben und als erzwungen (forced) markiert wird. | grün | nie geprüft |
| TestPrintLogic test_apply_standard_minimum_a4_fallback_keeps_large_page | Prüft, dass eine bereits ausreichend große Seite (A3) unverändert bleibt und nicht als erzwungen markiert wird. | grün | nie geprüft |
| TestPrintLogic test_does_plot_fit_page_true_for_standard_a4 | Prüft, dass ein Kartenobjekt, das in eine DIN A4-Seite passt, als passend erkannt wird. | grün | nie geprüft |
| TestPrintLogic test_does_plot_fit_page_false_if_objects_exceed_page | Prüft, dass ein Kartenobjekt, das die Seitenbreite überschreitet, als nicht passend erkannt wird. | grün | nie geprüft |
| TestPrintLogic test_set_druckbereich_accepts_wie_kartenfenster | Prüft, dass die Auswahl 'wie Kartenfenster' als Projektvariable 'druckbereich' gespeichert wird. | grün | nie geprüft |
| TestPrintLogic test_get_canvas_extent_returns_valid_extent | Prüft, dass der aktuelle Kartenausschnitt des Kartenfensters unverändert zurückgegeben wird. | grün | nie geprüft |
| TestPrintLogic test_resolve_extent_uses_canvas_extent_without_buffer | Prüft, dass bei Druckbereich 'wie Kartenfenster' der Kartenausschnitt ohne Puffer und ohne verknüpften Layer übernommen wird. | grün | nie geprüft |
| TestPrintLogic test_resolve_extent_uses_rectangle_extent_without_buffer | Prüft, dass bei Druckbereich 'Rechteck' der gezeichnete Ausschnitt ohne Puffer und ohne verknüpften Layer übernommen wird. | grün | nie geprüft |
Tests für sn_basis/ui/tabs/print_tab.py::PrintTab (Issue #67).
flowchart TD
+ root(["test_print_tab.py"])
+ class root rootnode
+ root --> g1["SetServicesTests (2)"]
+ class g1 groupnode
+ g1 --> t1("ruft_alle_set_methoden_mit_combo_werten_auf")
+ g1 --> t2("ohne_combos_ruft_keine_set_methode_auf")
+ root --> g2["RestoreStateTests (2)"]
+ class g2 groupnode
+ g2 --> t3("gueltige_gespeicherte_werte_werden_uebernommen")
+ g2 --> t4("ungueltige_oder_fehlende_werte_fallen_auf_defaults_zurueck")
+ root --> g3["OnDruckpufferClickedTests (3)"]
+ class g3 groupnode
+ g3 --> t5("gueltige_zahl_setzt_variable_und_button_text")
+ g3 --> t6("abgebrochen_aendert_nichts")
+ g3 --> t7("ungueltige_zahl_zeigt_hinweis_und_setzt_nichts")
+ root --> g4["OnVorlageErstellenTests (2)"]
+ class g4 groupnode
+ g4 --> t8("ruft_druckvorlage_anlegen_mit_combo_werten_auf")
+ g4 --> t9("ohne_logic_tut_nichts")
+ root --> g5["ProjectSignalsTests (3)"]
+ class g5 groupnode
+ g5 --> t10("connect_verbindet_alle_drei_signale")
+ g5 --> t11("disconnect_trennt_alle_drei_signale")
+ g5 --> t12("instance_wirft_ausnahme_wird_abgefangen")
+ root --> g6["CleanupTests (1)"]
+ class g6 groupnode
+ g6 --> t13("ruft_beide_disconnect_methoden_auf")
+ root --> g7["ToggleAtlasTests (2)"]
+ class g7 groupnode
+ g7 --> t14("checked_true_setzt_arrow_down_und_zeigt_inhalt")
+ g7 --> t15("checked_false_setzt_arrow_right_und_versteckt_inhalt")
+ root --> g8["RestoreAtlasLayerSelectionTests (2)"]
+ class g8 groupnode
+ g8 --> t16("vorhandene_layer_id_setzt_layer_in_combo")
+ g8 --> t17("leere_gespeicherte_layer_id_tut_nichts")
+ root --> g9["ThemeCollectionSignalsTests (3)"]
+ class g9 groupnode
+ g9 --> t18("connect_verbindet_alle_signale")
+ g9 --> t19("connect_ist_idempotent_wenn_schon_verbunden")
+ g9 --> t20("disconnect_trennt_alle_signale")
+ root --> g10["RefreshThemaComboLiveTests (2)"]
+ class g10 groupnode
+ g10 --> t21("erhaelt_vorherige_auswahl_wenn_noch_vorhanden")
+ g10 --> t22("faellt_auf_wie_kartenfenster_zurueck_wenn_auswahl_verschwunden")
+ root --> g11["GetGespeicherteThemenTests (2)"]
+ class g11 groupnode
+ g11 --> t23("dedupliziert_und_filtert_leere_eintraege")
+ g11 --> t24("fehler_liefert_leere_liste")
+ root --> g12["GetCurrentCanvasScaleTests (3)"]
+ class g12 groupnode
+ g12 --> t25("liefert_skalierung_als_float")
+ g12 --> t26("ohne_canvas_liefert_none")
+ g12 --> t27("skalierung_null_liefert_none")
+ root --> g13["OnAtlasLayerChangedTests (3)"]
+ class g13 groupnode
+ g13 --> t28("none_oder_leer_setzt_variable_leer")
+ g13 --> t29("layer_objekt_mit_id_methode_setzt_dessen_id")
+ g13 --> t30("string_fallback_sucht_layer_ueber_namen")
+ root --> g14["OnAuswahlAsAtlasClickedTests (2)"]
+ class g14 groupnode
+ g14 --> t31("erfolgreicher_layer_aktualisiert_atlas_ui")
+ g14 --> t32("ohne_erzeugten_layer_tut_nichts_weiter")
+ root --> g15["PopulateAtlasLayerComboTests (2)"]
+ class g15 groupnode
+ g15 --> t33("befuellt_combo_ohne_druckrechteck_und_leere_namen")
+ g15 --> t34("ohne_atlas_layer_combo_tut_nichts")
+ root --> g16["OnAtlasErzeugenChangedTests (3)"]
+ class g16 groupnode
+ g16 --> t35("aktiviert_speichert_variable_und_aktiviert_widgets")
+ g16 --> t36("deaktiviert_speichert_variable_und_deaktiviert_widgets")
+ g16 --> t37("ohne_widgets_wirft_keine_ausnahme")
+ class t1 ok
+ class t2 ok
+ class t3 ok
+ class t4 ok
+ class t5 ok
+ class t6 ok
+ class t7 ok
+ class t8 ok
+ class t9 ok
+ class t10 ok
+ class t11 ok
+ class t12 ok
+ class t13 ok
+ class t14 ok
+ class t15 ok
+ class t16 ok
+ class t17 ok
+ class t18 ok
+ class t19 ok
+ class t20 ok
+ class t21 ok
+ class t22 ok
+ class t23 ok
+ class t24 ok
+ class t25 ok
+ class t26 ok
+ class t27 ok
+ class t28 ok
+ class t29 ok
+ class t30 ok
+ class t31 ok
+ class t32 ok
+ class t33 ok
+ class t34 ok
+ class t35 ok
+ class t36 ok
+ class t37 ok
+ classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600;
+ classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
+ classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
+ classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
+ classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| SetServicesTests test_ruft_alle_set_methoden_mit_combo_werten_auf | Prüft, dass set_services alle set_*-Methoden von PrintLogic mit den aktuellen Combo-Werten aufruft. | grün | nie geprüft |
| SetServicesTests test_ohne_combos_ruft_keine_set_methode_auf | Prüft, dass set_services ohne vorhandene Combos keine set_*-Methode von PrintLogic aufruft. | grün | nie geprüft |
| RestoreStateTests test_gueltige_gespeicherte_werte_werden_uebernommen | Prüft, dass _restore_state gültige gespeicherte Werte in die jeweiligen Widgets übernimmt. | grün | nie geprüft |
| RestoreStateTests test_ungueltige_oder_fehlende_werte_fallen_auf_defaults_zurueck | Prüft, dass _restore_state ohne (gültige) gespeicherte Werte auf die Default-Konstanten zurückfällt. | grün | nie geprüft |
| OnDruckpufferClickedTests test_gueltige_zahl_setzt_variable_und_button_text | Prüft, dass eine bestätigte, gültige Zahl den Druckpuffer speichert und den Button-Text aktualisiert. | grün | nie geprüft |
| OnDruckpufferClickedTests test_abgebrochen_aendert_nichts | Prüft, dass ein abgebrochener Dialog den Druckpuffer nicht verändert. | grün | nie geprüft |
| OnDruckpufferClickedTests test_ungueltige_zahl_zeigt_hinweis_und_setzt_nichts | Prüft, dass eine nicht-numerische Eingabe einen Hinweis zeigt und den Druckpuffer nicht setzt. | grün | nie geprüft |
| OnVorlageErstellenTests test_ruft_druckvorlage_anlegen_mit_combo_werten_auf | Prüft, dass _on_vorlage_erstellen druckvorlage_anlegen mit den aktuellen Combo-Werten aufruft. | grün | nie geprüft |
| OnVorlageErstellenTests test_ohne_logic_tut_nichts | Prüft, dass _on_vorlage_erstellen ohne gesetzte PrintLogic keine Ausnahme wirft. | grün | nie geprüft |
| ProjectSignalsTests test_connect_verbindet_alle_drei_signale | Prüft, dass _connect_project_signals alle drei Projektsignale mit _on_project_changed verbindet. | grün | nie geprüft |
| ProjectSignalsTests test_disconnect_trennt_alle_drei_signale | Prüft, dass _disconnect_project_signals alle drei zuvor verbundenen Projektsignale trennt. | grün | nie geprüft |
| ProjectSignalsTests test_instance_wirft_ausnahme_wird_abgefangen | Prüft, dass eine Ausnahme bei QgsProject.instance() in beiden Signalmethoden abgefangen wird. | grün | nie geprüft |
| CleanupTests test_ruft_beide_disconnect_methoden_auf | Prüft, dass cleanup sowohl die Theme- als auch die Projektsignale trennt. | grün | nie geprüft |
| ToggleAtlasTests test_checked_true_setzt_arrow_down_und_zeigt_inhalt | Prüft, dass _toggle_atlas bei checked=True den Pfeil nach unten dreht und den Inhalt einblendet. | grün | nie geprüft |
| ToggleAtlasTests test_checked_false_setzt_arrow_right_und_versteckt_inhalt | Prüft, dass _toggle_atlas bei checked=False den Pfeil nach rechts dreht und den Inhalt ausblendet. | grün | nie geprüft |
| RestoreAtlasLayerSelectionTests test_vorhandene_layer_id_setzt_layer_in_combo | Prüft, dass eine gespeicherte Layer-ID den zugehörigen Layer im Atlas-Dropdown auswählt. | grün | nie geprüft |
| RestoreAtlasLayerSelectionTests test_leere_gespeicherte_layer_id_tut_nichts | Prüft, dass eine leere gespeicherte Layer-ID das Projekt gar nicht erst anfragt. | grün | nie geprüft |
| ThemeCollectionSignalsTests test_connect_verbindet_alle_signale | Prüft, dass _connect_theme_collection_signals alle Signale der Theme-Collection verbindet. | grün | nie geprüft |
| ThemeCollectionSignalsTests test_connect_ist_idempotent_wenn_schon_verbunden | Prüft, dass _connect_theme_collection_signals bei bereits verbundenem Signal nichts erneut tut. | grün | nie geprüft |
| ThemeCollectionSignalsTests test_disconnect_trennt_alle_signale | Prüft, dass _disconnect_theme_collection_signals alle verbundenen Theme-Signale trennt und zurücksetzt. | grün | nie geprüft |
| RefreshThemaComboLiveTests test_erhaelt_vorherige_auswahl_wenn_noch_vorhanden | Prüft, dass _refresh_thema_combo_live die vorherige Auswahl beibehält, wenn sie noch existiert. | grün | nie geprüft |
| RefreshThemaComboLiveTests test_faellt_auf_wie_kartenfenster_zurueck_wenn_auswahl_verschwunden | Prüft, dass _refresh_thema_combo_live auf 'wie Kartenfenster' zurückfällt, wenn die Auswahl verschwunden ist. | grün | nie geprüft |
| GetGespeicherteThemenTests test_dedupliziert_und_filtert_leere_eintraege | Prüft, dass _get_gespeicherte_themen Duplikate und leere/None-Einträge entfernt. | grün | nie geprüft |
| GetGespeicherteThemenTests test_fehler_liefert_leere_liste | Prüft, dass ein Fehler beim Zugriff auf die Theme-Collection eine leere Liste liefert. | grün | nie geprüft |
| GetCurrentCanvasScaleTests test_liefert_skalierung_als_float | Prüft, dass _get_current_canvas_scale die Canvas-Skalierung als float liefert. | grün | nie geprüft |
| GetCurrentCanvasScaleTests test_ohne_canvas_liefert_none | Prüft, dass _get_current_canvas_scale ohne verfügbares Kartenfenster None liefert. | grün | nie geprüft |
| GetCurrentCanvasScaleTests test_skalierung_null_liefert_none | Prüft, dass eine Skalierung von 0 als None statt als 0.0 gilt. | grün | nie geprüft |
| OnAtlasLayerChangedTests test_none_oder_leer_setzt_variable_leer | Prüft, dass None oder ein leerer Wert die Abdeckungslayer-Variable leeren. | grün | nie geprüft |
| OnAtlasLayerChangedTests test_layer_objekt_mit_id_methode_setzt_dessen_id | Prüft, dass ein echtes Layer-Objekt (mit id()-Methode) dessen ID speichert. | grün | nie geprüft |
| OnAtlasLayerChangedTests test_string_fallback_sucht_layer_ueber_namen | Prüft, dass ohne id()-Methode über den Layernamen im Projekt gesucht und dessen ID gespeichert wird. | grün | nie geprüft |
| OnAuswahlAsAtlasClickedTests test_erfolgreicher_layer_aktualisiert_atlas_ui | Prüft, dass ein erfolgreich erzeugter Atlas-Layer den Atlas-Bereich öffnet und ins Dropdown übernimmt. | grün | nie geprüft |
| OnAuswahlAsAtlasClickedTests test_ohne_erzeugten_layer_tut_nichts_weiter | Prüft, dass ohne erzeugten Atlas-Layer keine UI-Aktualisierung stattfindet. | grün | nie geprüft |
| PopulateAtlasLayerComboTests test_befuellt_combo_ohne_druckrechteck_und_leere_namen | Prüft, dass _populate_atlas_layer_combo alle Layernamen außer 'Druckrechteck' und leeren Namen einträgt. | grün | nie geprüft |
| PopulateAtlasLayerComboTests test_ohne_atlas_layer_combo_tut_nichts | Prüft, dass _populate_atlas_layer_combo ohne Atlas-Dropdown keine Ausnahme wirft. | grün | nie geprüft |
| OnAtlasErzeugenChangedTests test_aktiviert_speichert_variable_und_aktiviert_widgets | Prüft, dass ein aktivierter Atlas-Schalter die Variable setzt und Layer-Combo/Button aktiviert. | grün | nie geprüft |
| OnAtlasErzeugenChangedTests test_deaktiviert_speichert_variable_und_deaktiviert_widgets | Prüft, dass ein deaktivierter Atlas-Schalter die Variable setzt und Layer-Combo/Button deaktiviert. | grün | nie geprüft |
| OnAtlasErzeugenChangedTests test_ohne_widgets_wirft_keine_ausnahme | Prüft, dass _on_atlas_erzeugen_changed ohne Atlas-Combo/-Button keine Ausnahme wirft. | grün | nie geprüft |
Tests für sn_basis/modules/pruef_ergebnis.py::ist_verfahrens_db_aktion/erlaubte_persistierung/dateipfad (Issue #65/#67).
flowchart TD
root(["test_pruef_ergebnis.py"])
class root rootnode
root --> g1["IstVerfahrensDbAktionTests (2)"]
@@ -673,15 +844,21 @@
class g2 groupnode
g2 --> t3("liefert_true_fuer_erzeugen_ueberschreiben_anhaengen")
g2 --> t4("liefert_false_fuer_ueberspringen_und_reines_existieren")
+ root --> g3["DateipfadTests (2)"]
+ class g3 groupnode
+ g3 --> t5("liefert_path_wenn_kontext_ein_path_ist")
+ g3 --> t6("liefert_none_wenn_kontext_kein_path_ist")
class t1 ok
class t2 ok
class t3 ok
class t4 ok
+ class t5 ok
+ class t6 ok
classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600;
classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
- classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| IstVerfahrensDbAktionTests test_liefert_true_fuer_alle_verfahrens_db_aktionen | Prüft, dass ist_verfahrens_db_aktion für alle vier Verfahrens-DB-Aktionscodes True liefert. | grün | nie geprüft |
| IstVerfahrensDbAktionTests test_liefert_false_fuer_andere_aktionen | Prüft, dass ist_verfahrens_db_aktion für Nicht-Verfahrens-DB-Aktionen und ohne Aktion False liefert. | grün | nie geprüft |
| ErlaubtePersistierungTests test_liefert_true_fuer_erzeugen_ueberschreiben_anhaengen | Prüft, dass erlaubte_persistierung für Erzeugen/Überschreiben/Anhängen True liefert. | grün | nie geprüft |
| ErlaubtePersistierungTests test_liefert_false_fuer_ueberspringen_und_reines_existieren | Prüft, dass erlaubte_persistierung bei Überspringen und reinem 'datei_existiert' False liefert. | grün | nie geprüft |
— (Docstring fehlt)
flowchart TD + classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| IstVerfahrensDbAktionTests test_liefert_true_fuer_alle_verfahrens_db_aktionen | Prüft, dass ist_verfahrens_db_aktion für alle vier Verfahrens-DB-Aktionscodes True liefert. | grün | nie geprüft |
| IstVerfahrensDbAktionTests test_liefert_false_fuer_andere_aktionen | Prüft, dass ist_verfahrens_db_aktion für Nicht-Verfahrens-DB-Aktionen und ohne Aktion False liefert. | grün | nie geprüft |
| ErlaubtePersistierungTests test_liefert_true_fuer_erzeugen_ueberschreiben_anhaengen | Prüft, dass erlaubte_persistierung für Erzeugen/Überschreiben/Anhängen True liefert. | grün | nie geprüft |
| ErlaubtePersistierungTests test_liefert_false_fuer_ueberspringen_und_reines_existieren | Prüft, dass erlaubte_persistierung bei Überspringen und reinem 'datei_existiert' False liefert. | grün | nie geprüft |
| DateipfadTests test_liefert_path_wenn_kontext_ein_path_ist | Prüft, dass dateipfad den Kontext liefert, wenn dieser bereits ein Path-Objekt ist. | grün | nie geprüft |
| DateipfadTests test_liefert_none_wenn_kontext_kein_path_ist | Prüft, dass dateipfad None liefert, wenn der Kontext kein Path-Objekt ist (z. B. String oder Layer). | grün | nie geprüft |
— (Docstring fehlt)
flowchart TD root(["test_pruefmanager.py"]) class root rootnode root --> g1["TestPruefmanager (24)"] @@ -738,7 +915,7 @@ classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420; classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20; classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08; - classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| TestPruefmanager test_ok | Prüft, dass ein bereits erfolgreiches Prüfergebnis ohne Nutzerinteraktion als 'ok' durchgereicht wird. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_leereingabe_erlaubt_ja | Prüft, dass bei erlaubter leerer Eingabe eine Ja-Antwort des Nutzers die Entscheidung 'ok' liefert. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_leereingabe_erlaubt_nein | Prüft, dass bei erlaubter leerer Eingabe eine Nein-Antwort die Aktion 'leereingabe_erlaubt' als abgelehnt bestehen lässt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_standarddatei_vorschlagen_ja | Prüft, dass eine Ja-Antwort auf den Vorschlag der Standarddatei die Entscheidung 'ok' mit dem Standardpfad als Kontext liefert. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_standarddatei_vorschlagen_nein | Prüft, dass eine Nein-Antwort auf den Vorschlag der Standarddatei die Aktion 'standarddatei_vorschlagen' als abgelehnt bestehen lässt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_temporaer_erlaubt_ja | Prüft, dass eine Ja-Antwort auf die Rückfrage nach einer temporären Datei die Aktion 'temporaer_erzeugen' auslöst. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_temporaer_erlaubt_nein | Prüft, dass eine Nein-Antwort auf die Rückfrage nach einer temporären Datei die Aktion 'temporaer_erlaubt' als abgelehnt bestehen lässt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_layer_unsichtbar_ja | Prüft, dass eine Ja-Antwort bei unsichtbarem Layer den Layer sichtbar schaltet und die Entscheidung 'ok' liefert. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_layer_unsichtbar_nein | Prüft, dass eine Nein-Antwort bei unsichtbarem Layer die Aktion 'layer_unsichtbar' als abgelehnt bestehen lässt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_unbekannte_aktion | Prüft, dass eine unbekannte Aktion eine Warnung auslöst und unverarbeitet als Fehlschlag zurückgegeben wird. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_datei_existiert_overwrite | Prüft, dass die Nutzerwahl 'überschreiben' bei bestehender Datei zur Aktion 'datei_existiert_ueberschreiben' führt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_datei_existiert_append | Prüft, dass die Nutzerwahl 'anhängen' bei bestehender Datei zur Aktion 'datei_existiert_anhaengen' führt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_datei_existiert_cancel | Prüft, dass die Nutzerwahl 'abbrechen' bei bestehender Datei zur Aktion 'datei_existiert_ueberspringen' führt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_datei_existiert_in_non_qgis_mode_returns_input | Prüft, dass außerhalb des QGIS-Modus bei bestehender Datei keine Rückfrage erfolgt, sondern die ursprüngliche Aktion unentschieden zurückgegeben wird. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_verfahrensgebiet_layer_existiert_ergaenzen | Prüft, dass die Nutzerwahl 'ergänzen' bei bestehendem Verfahrensgebiet zur Aktion 'verfahrensgebiet_ergaenzen' führt. | grün | nie geprüft |
| TestPruefmanager test_verfahrensgebiet_layer_existiert_abbrechen | Prüft, dass die Nutzerwahl 'abbrechen' bei bestehendem Verfahrensgebiet ok=False mit Aktion 'verfahrensgebiet_abbrechen' liefert. | grün | nie geprüft |
| TestPruefmanager test_verfahrensgebiet_layer_existiert_in_non_qgis_mode_returns_input | Prüft, dass außerhalb des QGIS-Modus bei bestehendem Verfahrensgebiet keine Rückfrage erfolgt. | grün | nie geprüft |
| TestPruefmanager test_report_error_kritische_aktion_ruft_error_auf | Prüft, dass eine kritische Aktion (z. B. 'netzwerkfehler') über error() gemeldet wird, nicht über warning(). | grün | nie geprüft |
| TestPruefmanager test_report_error_warn_aktion_ruft_warning_auf | Prüft, dass eine Warn-Aktion (z. B. 'datei_nicht_gefunden') über warning() gemeldet wird, nicht über error(). | grün | nie geprüft |
| TestPruefmanager test_report_error_unbekannte_aktion_faellt_auf_warning_zurueck | Prüft, dass eine nicht eingestufte Aktion als Fallback über warning() gemeldet wird. | grün | nie geprüft |
| TestPruefmanager test_frage_ja_nein_im_qgis_modus_fragt_nutzer | Prüft, dass frage_ja_nein im QGIS-Modus den Nutzer fragt und dessen Antwort liefert. | grün | nie geprüft |
| TestPruefmanager test_frage_ja_nein_ausserhalb_qgis_liefert_default_ohne_rueckfrage | Prüft, dass frage_ja_nein außerhalb des QGIS-Modus den Default-Wert liefert, ohne den Nutzer zu fragen. | grün | nie geprüft |
| TestPruefmanager test_frage_text_im_qgis_modus_fragt_nutzer | Prüft, dass frage_text im QGIS-Modus den Nutzer fragt und Text plus OK-Status liefert. | grün | nie geprüft |
| TestPruefmanager test_frage_text_ausserhalb_qgis_liefert_default_ohne_rueckfrage | Prüft, dass frage_text außerhalb des QGIS-Modus den Standardtext mit OK=True liefert, ohne den Nutzer zu fragen. | grün | nie geprüft |
Tests für sn_basis/functions/qgiscore_wrapper.py::polygon_zu_linie/layer_exists_in_gpkg (Issue #65).
flowchart TD + classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| TestPruefmanager test_ok | Prüft, dass ein bereits erfolgreiches Prüfergebnis ohne Nutzerinteraktion als 'ok' durchgereicht wird. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_leereingabe_erlaubt_ja | Prüft, dass bei erlaubter leerer Eingabe eine Ja-Antwort des Nutzers die Entscheidung 'ok' liefert. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_leereingabe_erlaubt_nein | Prüft, dass bei erlaubter leerer Eingabe eine Nein-Antwort die Aktion 'leereingabe_erlaubt' als abgelehnt bestehen lässt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_standarddatei_vorschlagen_ja | Prüft, dass eine Ja-Antwort auf den Vorschlag der Standarddatei die Entscheidung 'ok' mit dem Standardpfad als Kontext liefert. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_standarddatei_vorschlagen_nein | Prüft, dass eine Nein-Antwort auf den Vorschlag der Standarddatei die Aktion 'standarddatei_vorschlagen' als abgelehnt bestehen lässt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_temporaer_erlaubt_ja | Prüft, dass eine Ja-Antwort auf die Rückfrage nach einer temporären Datei die Aktion 'temporaer_erzeugen' auslöst. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_temporaer_erlaubt_nein | Prüft, dass eine Nein-Antwort auf die Rückfrage nach einer temporären Datei die Aktion 'temporaer_erlaubt' als abgelehnt bestehen lässt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_layer_unsichtbar_ja | Prüft, dass eine Ja-Antwort bei unsichtbarem Layer den Layer sichtbar schaltet und die Entscheidung 'ok' liefert. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_layer_unsichtbar_nein | Prüft, dass eine Nein-Antwort bei unsichtbarem Layer die Aktion 'layer_unsichtbar' als abgelehnt bestehen lässt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_unbekannte_aktion | Prüft, dass eine unbekannte Aktion eine Warnung auslöst und unverarbeitet als Fehlschlag zurückgegeben wird. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_datei_existiert_overwrite | Prüft, dass die Nutzerwahl 'überschreiben' bei bestehender Datei zur Aktion 'datei_existiert_ueberschreiben' führt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_datei_existiert_append | Prüft, dass die Nutzerwahl 'anhängen' bei bestehender Datei zur Aktion 'datei_existiert_anhaengen' führt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_datei_existiert_cancel | Prüft, dass die Nutzerwahl 'abbrechen' bei bestehender Datei zur Aktion 'datei_existiert_ueberspringen' führt. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_datei_existiert_in_non_qgis_mode_returns_input | Prüft, dass außerhalb des QGIS-Modus bei bestehender Datei keine Rückfrage erfolgt, sondern die ursprüngliche Aktion unentschieden zurückgegeben wird. | grün | geprüft am 2026-09-17 |
| TestPruefmanager test_verfahrensgebiet_layer_existiert_ergaenzen | Prüft, dass die Nutzerwahl 'ergänzen' bei bestehendem Verfahrensgebiet zur Aktion 'verfahrensgebiet_ergaenzen' führt. | grün | nie geprüft |
| TestPruefmanager test_verfahrensgebiet_layer_existiert_abbrechen | Prüft, dass die Nutzerwahl 'abbrechen' bei bestehendem Verfahrensgebiet ok=False mit Aktion 'verfahrensgebiet_abbrechen' liefert. | grün | nie geprüft |
| TestPruefmanager test_verfahrensgebiet_layer_existiert_in_non_qgis_mode_returns_input | Prüft, dass außerhalb des QGIS-Modus bei bestehendem Verfahrensgebiet keine Rückfrage erfolgt. | grün | nie geprüft |
| TestPruefmanager test_report_error_kritische_aktion_ruft_error_auf | Prüft, dass eine kritische Aktion (z. B. 'netzwerkfehler') über error() gemeldet wird, nicht über warning(). | grün | nie geprüft |
| TestPruefmanager test_report_error_warn_aktion_ruft_warning_auf | Prüft, dass eine Warn-Aktion (z. B. 'datei_nicht_gefunden') über warning() gemeldet wird, nicht über error(). | grün | nie geprüft |
| TestPruefmanager test_report_error_unbekannte_aktion_faellt_auf_warning_zurueck | Prüft, dass eine nicht eingestufte Aktion als Fallback über warning() gemeldet wird. | grün | nie geprüft |
| TestPruefmanager test_frage_ja_nein_im_qgis_modus_fragt_nutzer | Prüft, dass frage_ja_nein im QGIS-Modus den Nutzer fragt und dessen Antwort liefert. | grün | nie geprüft |
| TestPruefmanager test_frage_ja_nein_ausserhalb_qgis_liefert_default_ohne_rueckfrage | Prüft, dass frage_ja_nein außerhalb des QGIS-Modus den Default-Wert liefert, ohne den Nutzer zu fragen. | grün | nie geprüft |
| TestPruefmanager test_frage_text_im_qgis_modus_fragt_nutzer | Prüft, dass frage_text im QGIS-Modus den Nutzer fragt und Text plus OK-Status liefert. | grün | nie geprüft |
| TestPruefmanager test_frage_text_ausserhalb_qgis_liefert_default_ohne_rueckfrage | Prüft, dass frage_text außerhalb des QGIS-Modus den Standardtext mit OK=True liefert, ohne den Nutzer zu fragen. | grün | nie geprüft |
Tests für sn_basis/functions/qgiscore_wrapper.py::polygon_zu_linie/layer_exists_in_gpkg/create_buffer_layer (Issue #65/#67).
flowchart TD
root(["test_qgiscore_wrapper_helpers.py"])
class root rootnode
root --> g1["PolygonZuLinieTests (7)"]
@@ -756,6 +933,11 @@
g2 --> t9("leerer_pfad_oder_layername_liefert_false")
g2 --> t10("vorhandener_layer_liefert_true")
g2 --> t11("fehlender_layer_liefert_false")
+ root --> g3["CreateBufferLayerTests (3)"]
+ class g3 groupnode
+ g3 --> t12("ohne_qgis_liefert_none")
+ g3 --> t13("fehlender_source_layer_liefert_none")
+ g3 --> t14("source_layer_ohne_getfeatures_liefert_none")
class t1 ok
class t2 ok
class t3 ok
@@ -767,11 +949,14 @@
class t9 ok
class t10 ok
class t11 ok
+ class t12 ok
+ class t13 ok
+ class t14 ok
classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600;
classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
- classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| PolygonZuLinieTests test_none_liefert_none | Prüft, dass polygon_zu_linie für None-Eingabe None liefert. | grün | nie geprüft |
| PolygonZuLinieTests test_leere_geometrie_liefert_none | Prüft, dass eine leere Geometrie None liefert. | grün | nie geprüft |
| PolygonZuLinieTests test_stufe1_nutzt_boundary_wenn_vorhanden | Prüft, dass eine Geometrie mit boundary() (QGIS 3.x-Pfad) deren Ergebnis direkt liefert. | grün | nie geprüft |
| PolygonZuLinieTests test_stufe2_extrahiert_ringe_bei_einfachem_polygon | Prüft, dass ohne boundary() die Ringe eines einfachen Polygons manuell extrahiert werden. | grün | nie geprüft |
| PolygonZuLinieTests test_stufe2_extrahiert_alle_ringe_bei_multipolygon | Prüft, dass bei einem MultiPolygon die Ringe aller Teilpolygone extrahiert werden. | grün | nie geprüft |
| PolygonZuLinieTests test_stufe3_fallback_wenn_keine_ringe_extrahierbar | Prüft, dass bei fehlgeschlagener Ringextraktion auf convertToType zurückgefallen wird. | grün | nie geprüft |
| PolygonZuLinieTests test_alle_stufen_scheitern_liefert_none | Prüft, dass polygon_zu_linie None liefert, wenn Ringextraktion und convertToType beide scheitern. | grün | nie geprüft |
| LayerExistsInGpkgTests test_fehlende_datei_liefert_false | Prüft, dass eine nicht vorhandene GPKG-Datei False liefert. | grün | nie geprüft |
| LayerExistsInGpkgTests test_leerer_pfad_oder_layername_liefert_false | Prüft, dass ein leerer Pfad oder Layername False liefert. | grün | nie geprüft |
| LayerExistsInGpkgTests test_vorhandener_layer_liefert_true | Prüft, dass ein in gpkg_contents eingetragener Layername als vorhanden erkannt wird. | grün | nie geprüft |
| LayerExistsInGpkgTests test_fehlender_layer_liefert_false | Prüft, dass ein nicht in gpkg_contents eingetragener Layername als nicht vorhanden gilt. | grün | nie geprüft |
Tests für sn_basis/functions/qgisui_wrapper.py::add_layer_to_project (Issue #65).
flowchart TD + classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| PolygonZuLinieTests test_none_liefert_none | Prüft, dass polygon_zu_linie für None-Eingabe None liefert. | grün | nie geprüft |
| PolygonZuLinieTests test_leere_geometrie_liefert_none | Prüft, dass eine leere Geometrie None liefert. | grün | nie geprüft |
| PolygonZuLinieTests test_stufe1_nutzt_boundary_wenn_vorhanden | Prüft, dass eine Geometrie mit boundary() (QGIS 3.x-Pfad) deren Ergebnis direkt liefert. | grün | nie geprüft |
| PolygonZuLinieTests test_stufe2_extrahiert_ringe_bei_einfachem_polygon | Prüft, dass ohne boundary() die Ringe eines einfachen Polygons manuell extrahiert werden. | grün | nie geprüft |
| PolygonZuLinieTests test_stufe2_extrahiert_alle_ringe_bei_multipolygon | Prüft, dass bei einem MultiPolygon die Ringe aller Teilpolygone extrahiert werden. | grün | nie geprüft |
| PolygonZuLinieTests test_stufe3_fallback_wenn_keine_ringe_extrahierbar | Prüft, dass bei fehlgeschlagener Ringextraktion auf convertToType zurückgefallen wird. | grün | nie geprüft |
| PolygonZuLinieTests test_alle_stufen_scheitern_liefert_none | Prüft, dass polygon_zu_linie None liefert, wenn Ringextraktion und convertToType beide scheitern. | grün | nie geprüft |
| LayerExistsInGpkgTests test_fehlende_datei_liefert_false | Prüft, dass eine nicht vorhandene GPKG-Datei False liefert. | grün | nie geprüft |
| LayerExistsInGpkgTests test_leerer_pfad_oder_layername_liefert_false | Prüft, dass ein leerer Pfad oder Layername False liefert. | grün | nie geprüft |
| LayerExistsInGpkgTests test_vorhandener_layer_liefert_true | Prüft, dass ein in gpkg_contents eingetragener Layername als vorhanden erkannt wird. | grün | nie geprüft |
| LayerExistsInGpkgTests test_fehlender_layer_liefert_false | Prüft, dass ein nicht in gpkg_contents eingetragener Layername als nicht vorhanden gilt. | grün | nie geprüft |
| CreateBufferLayerTests test_ohne_qgis_liefert_none | Prüft, dass create_buffer_layer ohne verfügbares QGIS None liefert. | grün | nie geprüft |
| CreateBufferLayerTests test_fehlender_source_layer_liefert_none | Prüft, dass ein fehlender Quelllayer (None) None liefert, auch wenn QGIS verfügbar wäre. | grün | nie geprüft |
| CreateBufferLayerTests test_source_layer_ohne_getfeatures_liefert_none | Prüft, dass ein Quelllayer ohne getFeatures()-Methode None liefert. | grün | nie geprüft |
Tests für sn_basis/functions/qgisui_wrapper.py::add_layer_to_project/find_dock_widgets/add_menu/remove_menu (Issue #65/#67).
flowchart TD
root(["test_qgisui_wrapper_helpers.py"])
class root rootnode
root --> g1["AddLayerToProjectTests (4)"]
@@ -780,15 +965,35 @@
g1 --> t2("mock_modus_liefert_true_ohne_projektzugriff")
g1 --> t3("mit_qgis_fuegt_layer_dem_projekt_hinzu")
g1 --> t4("mit_qgis_fehler_liefert_false")
+ root --> g2["FindDockWidgetsTests (3)"]
+ class g2 groupnode
+ g2 --> t5("ohne_main_window_liefert_leere_liste")
+ g2 --> t6("liefert_dock_widgets_des_main_window")
+ g2 --> t7("fehler_beim_suchen_liefert_leere_liste")
+ root --> g3["AddRemoveMenuTests (5)"]
+ class g3 groupnode
+ g3 --> t8("add_menu_ohne_main_window_tut_nichts")
+ g3 --> t9("add_menu_mit_echtem_qt_menu_fuegt_es_der_menubar_hinzu")
+ g3 --> t10("add_menu_ohne_menuaction_wird_ignoriert")
+ g3 --> t11("remove_menu_entfernt_ueber_menuaction")
+ g3 --> t12("remove_menu_ohne_main_window_tut_nichts")
class t1 ok
class t2 ok
class t3 ok
class t4 ok
+ class t5 ok
+ class t6 ok
+ class t7 ok
+ class t8 ok
+ class t9 ok
+ class t10 ok
+ class t11 ok
+ class t12 ok
classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600;
classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
- classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| AddLayerToProjectTests test_none_layer_liefert_false | Prüft, dass add_layer_to_project für einen fehlenden Layer (None) False liefert. | grün | nie geprüft |
| AddLayerToProjectTests test_mock_modus_liefert_true_ohne_projektzugriff | Prüft, dass im Mock-Modus (ohne QGIS) ein gültiger Layer True liefert, ohne das Projekt anzufassen. | grün | nie geprüft |
| AddLayerToProjectTests test_mit_qgis_fuegt_layer_dem_projekt_hinzu | Prüft, dass bei verfügbarem QGIS der Layer über QgsProject.instance().addMapLayer hinzugefügt wird. | grün | nie geprüft |
| AddLayerToProjectTests test_mit_qgis_fehler_liefert_false | Prüft, dass ein Fehler beim Hinzufügen zum Projekt abgefangen wird und False liefert. | grün | nie geprüft |
— (Docstring fehlt)
flowchart TD + classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| AddLayerToProjectTests test_none_layer_liefert_false | Prüft, dass add_layer_to_project für einen fehlenden Layer (None) False liefert. | grün | nie geprüft |
| AddLayerToProjectTests test_mock_modus_liefert_true_ohne_projektzugriff | Prüft, dass im Mock-Modus (ohne QGIS) ein gültiger Layer True liefert, ohne das Projekt anzufassen. | grün | nie geprüft |
| AddLayerToProjectTests test_mit_qgis_fuegt_layer_dem_projekt_hinzu | Prüft, dass bei verfügbarem QGIS der Layer über QgsProject.instance().addMapLayer hinzugefügt wird. | grün | nie geprüft |
| AddLayerToProjectTests test_mit_qgis_fehler_liefert_false | Prüft, dass ein Fehler beim Hinzufügen zum Projekt abgefangen wird und False liefert. | grün | nie geprüft |
| FindDockWidgetsTests test_ohne_main_window_liefert_leere_liste | Prüft, dass find_dock_widgets ohne verfügbares Hauptfenster eine leere Liste liefert. | grün | nie geprüft |
| FindDockWidgetsTests test_liefert_dock_widgets_des_main_window | Prüft, dass find_dock_widgets die vom Hauptfenster gefundenen Dock-Widgets durchreicht. | grün | nie geprüft |
| FindDockWidgetsTests test_fehler_beim_suchen_liefert_leere_liste | Prüft, dass ein Fehler beim Suchen der Dock-Widgets abgefangen wird und eine leere Liste liefert. | grün | nie geprüft |
| AddRemoveMenuTests test_add_menu_ohne_main_window_tut_nichts | Prüft, dass add_menu ohne Hauptfenster keine Ausnahme wirft. | grün | nie geprüft |
| AddRemoveMenuTests test_add_menu_mit_echtem_qt_menu_fuegt_es_der_menubar_hinzu | Prüft, dass ein echtes Qt-Menü (mit menuAction) der Menüleiste hinzugefügt wird. | grün | nie geprüft |
| AddRemoveMenuTests test_add_menu_ohne_menuaction_wird_ignoriert | Prüft, dass ein Objekt ohne menuAction nicht an die Menüleiste übergeben wird. | grün | nie geprüft |
| AddRemoveMenuTests test_remove_menu_entfernt_ueber_menuaction | Prüft, dass remove_menu das Menü über dessen menuAction() aus der Menüleiste entfernt. | grün | nie geprüft |
| AddRemoveMenuTests test_remove_menu_ohne_main_window_tut_nichts | Prüft, dass remove_menu ohne Hauptfenster keine Ausnahme wirft. | grün | nie geprüft |
— (Docstring fehlt)
flowchart TD root(["test_settings_logic.py"]) class root rootnode root --> g1["TestSettingsLogic (4)"] @@ -805,7 +1010,7 @@ classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420; classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20; classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08; - classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| TestSettingsLogic test_load | Prüft, dass load() jede bekannte Projektvariable genau einmal über get_variable() liest. | grün | geprüft am 2026-09-17 |
| TestSettingsLogic test_save | Prüft, dass save() nur bekannte Variablen-Keys speichert und unbekannte Keys ignoriert. | grün | geprüft am 2026-09-17 |
| TestSettingsLogic test_load_handles_partial_values_with_empty_fallback | Prüft, dass load() für jede Variable den (auch leeren) Wert von get_variable() unverändert übernimmt, selbst wenn nicht alle Variablen im Mock konfiguriert sind. | grün | geprüft am 2026-09-17 |
| TestSettingsLogic test_save_empty_string_value_is_persisted | Prüft, dass save() einen leeren String als gültigen Wert speichert, statt ihn wie einen fehlenden Key zu behandeln. | grün | geprüft am 2026-09-17 |
Tests für sn_basis/ui/tabs/settings_tab.py::save_data/load_data (Issue #65).
flowchart TD + classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| TestSettingsLogic test_load | Prüft, dass load() jede bekannte Projektvariable genau einmal über get_variable() liest. | grün | geprüft am 2026-09-17 |
| TestSettingsLogic test_save | Prüft, dass save() nur bekannte Variablen-Keys speichert und unbekannte Keys ignoriert. | grün | geprüft am 2026-09-17 |
| TestSettingsLogic test_load_handles_partial_values_with_empty_fallback | Prüft, dass load() für jede Variable den (auch leeren) Wert von get_variable() unverändert übernimmt, selbst wenn nicht alle Variablen im Mock konfiguriert sind. | grün | geprüft am 2026-09-17 |
| TestSettingsLogic test_save_empty_string_value_is_persisted | Prüft, dass save() einen leeren String als gültigen Wert speichert, statt ihn wie einen fehlenden Key zu behandeln. | grün | geprüft am 2026-09-17 |
Tests für sn_basis/ui/tabs/settings_tab.py::save_data/load_data/_build_input (Issue #65/#67).
flowchart TD
root(["test_settings_tab.py"])
class root rootnode
root --> g1["SaveDataTests (2)"]
@@ -818,17 +1023,23 @@
g2 --> t4("ohne_gespeicherten_wert_bleibt_textfeld_leer")
g2 --> t5("waehlt_combobox_eintrag_bei_bekanntem_namen")
g2 --> t6("unbekannter_gespeicherter_name_waehlt_ersten_eintrag")
+ root --> g3["BuildInputTests (2)"]
+ class g3 groupnode
+ g3 --> t7("landkreis_feld_liefert_combobox_mit_allen_landkreisen")
+ g3 --> t8("anderes_feld_liefert_lineedit")
class t1 ok
class t2 ok
class t3 ok
class t4 ok
class t5 ok
class t6 ok
+ class t7 ok
+ class t8 ok
classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600;
classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
- classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| SaveDataTests test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl | Prüft, dass save_data Text- und Dropdown-Werte sammelt und die Landkreiskennzahl separat ergänzt. | grün | nie geprüft |
| SaveDataTests test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt | Prüft, dass ohne Landkreis-Dropdown im Formular keine 'landkreis_kennzahl' ergänzt wird. | grün | nie geprüft |
| LoadDataTests test_befuellt_textfelder_aus_gespeicherten_daten | Prüft, dass load_data ein Textfeld mit dem gespeicherten Wert befüllt. | grün | nie geprüft |
| LoadDataTests test_ohne_gespeicherten_wert_bleibt_textfeld_leer | Prüft, dass load_data ohne gespeicherten Wert das Textfeld auf einen leeren Text setzt. | grün | nie geprüft |
| LoadDataTests test_waehlt_combobox_eintrag_bei_bekanntem_namen | Prüft, dass load_data im Landkreis-Dropdown den gespeicherten Landkreisnamen auswählt. | grün | nie geprüft |
| LoadDataTests test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag | Prüft, dass load_data bei einem nicht mehr vorhandenen Landkreisnamen auf den ersten Eintrag zurückfällt. | grün | nie geprüft |
— (Docstring fehlt)
flowchart TD + classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| SaveDataTests test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl | Prüft, dass save_data Text- und Dropdown-Werte sammelt und die Landkreiskennzahl separat ergänzt. | grün | nie geprüft |
| SaveDataTests test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt | Prüft, dass ohne Landkreis-Dropdown im Formular keine 'landkreis_kennzahl' ergänzt wird. | grün | nie geprüft |
| LoadDataTests test_befuellt_textfelder_aus_gespeicherten_daten | Prüft, dass load_data ein Textfeld mit dem gespeicherten Wert befüllt. | grün | nie geprüft |
| LoadDataTests test_ohne_gespeicherten_wert_bleibt_textfeld_leer | Prüft, dass load_data ohne gespeicherten Wert das Textfeld auf einen leeren Text setzt. | grün | nie geprüft |
| LoadDataTests test_waehlt_combobox_eintrag_bei_bekanntem_namen | Prüft, dass load_data im Landkreis-Dropdown den gespeicherten Landkreisnamen auswählt. | grün | nie geprüft |
| LoadDataTests test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag | Prüft, dass load_data bei einem nicht mehr vorhandenen Landkreisnamen auf den ersten Eintrag zurückfällt. | grün | nie geprüft |
| BuildInputTests test_landkreis_feld_liefert_combobox_mit_allen_landkreisen | Prüft, dass _build_input für das Landkreis-Feld eine ComboBox mit Platzhalter und allen Landkreisen liefert. | grün | nie geprüft |
| BuildInputTests test_anderes_feld_liefert_lineedit | Prüft, dass _build_input für ein normales Feld ein leeres Textfeld liefert. | grün | nie geprüft |
— (Docstring fehlt)
flowchart TD root(["test_stilpruefer.py"]) class root rootnode root --> g1["TestStilpruefer (4)"] @@ -958,123 +1169,84 @@ classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
| Testfall | prüft | Status | geprüft |
|---|---|---|---|
| TestVerfahrensgebietManager test_get_verfahrensgebiet_layer_id_returns_value | Prüft, dass get_verfahrensgebiet_layer_id() die in der Projektvariable gespeicherte Layer-ID liefert. | grün | nie geprüft |
| TestVerfahrensgebietManager test_get_verfahrensgebiet_layer_id_returns_none_for_empty_value | Prüft, dass get_verfahrensgebiet_layer_id() bei leerer Projektvariable None statt eines leeren Strings liefert. | grün | nie geprüft |
| TestVerfahrensgebietManager test_set_verfahrensgebiet_layer_id_writes_project_variable | Prüft, dass set_verfahrensgebiet_layer_id() die Layer-ID als Projektvariable 'verfahrensgebiet_layer' speichert. | grün | nie geprüft |
| TestVerfahrensgebietManager test_update_without_layer_does_not_write_when_already_empty | Prüft, dass ohne gefundenen Verfahrensgebiet-Layer keine Schreibaktion erfolgt, wenn die Variable bereits leer ist. | grün | nie geprüft |
| TestVerfahrensgebietManager test_update_with_layer_writes_variable | Prüft, dass ein gefundener Verfahrensgebiet-Layer seine ID als Projektvariable speichert. | grün | nie geprüft |
| OnHandlerTests test_on_project_changed_ohne_layer_setzt_variable_leer | Prüft, dass _on_project_changed die Variable leert, wenn kein Verfahrensgebiet-Layer existiert. | grün | nie geprüft |
| OnHandlerTests test_on_project_changed_mit_layer_setzt_variable | Prüft, dass _on_project_changed die Layer-ID eines gefundenen Verfahrensgebiet-Layers übernimmt. | grün | nie geprüft |
| OnHandlerTests test_on_layers_added_findet_neuen_layer | Prüft, dass _on_layers_added nach neu hinzugefügten Layern sucht und die Variable aktualisiert. | grün | nie geprüft |
| OnHandlerTests test_on_layer_removed_bei_aktuellem_layer_sucht_neu | Prüft, dass das Entfernen des aktuell aktiven Verfahrensgebiet-Layers eine Neusuche auslöst. | grün | nie geprüft |
| OnHandlerTests test_on_layer_removed_bei_anderem_layer_aendert_nichts | Prüft, dass das Entfernen eines anderen Layers keine Neusuche auslöst. | grün | nie geprüft |
| ListenerSetupTests test_setup_ohne_qgis_tut_nichts | Prüft, dass setup_verfahrensgebiet_listener ohne QGIS keine Signale registriert. | grün | nie geprüft |
| ListenerSetupTests test_setup_verbindet_signale_und_ist_idempotent | Prüft, dass setup_verfahrensgebiet_listener die Projektsignale verbindet und ein zweiter Aufruf nichts doppelt registriert. | grün | nie geprüft |
| ListenerSetupTests test_teardown_trennt_alle_signale_und_ist_idempotent | Prüft, dass teardown_verfahrensgebiet_listener alle Signale trennt und mehrfacher Aufruf nicht fehlschlägt. | grün | nie geprüft |
Heuristik: Name kommt in keiner Testdatei des Pakets vor. Details siehe docs/tests/testkatalog.md.
| Datei | Funktion/Methode | Zeile |
|---|---|---|
| functions/dialog_wrapper.py | show_info_dialog | 42 |
| functions/dialog_wrapper.py | ask_detailpruefung_oder_vg_laden | 185 |
| functions/dialog_wrapper.py | ask_detailpruefung_oder_abbrechen | 235 |
| functions/dialog_wrapper.py | ProgressDialog.set_total | 328 |
| functions/dialog_wrapper.py | ProgressDialog.set_value | 336 |
| functions/dialog_wrapper.py | ProgressDialog.set_label | 348 |
| functions/dialog_wrapper.py | ProgressDialog.is_canceled | 357 |
| functions/dialog_wrapper.py | ProgressDialog.raise_to_front | 373 |
| functions/dialog_wrapper.py | create_progress_dialog | 390 |
| functions/dialog_wrapper.py | ask_detailpruefung_oder_vg_laden | 192 |
| functions/dialog_wrapper.py | ask_detailpruefung_oder_abbrechen | 244 |
| functions/dialog_wrapper.py | ProgressDialog.set_total | 339 |
| functions/dialog_wrapper.py | ProgressDialog.set_value | 348 |
| functions/dialog_wrapper.py | ProgressDialog.set_label | 361 |
| functions/dialog_wrapper.py | ProgressDialog.is_canceled | 371 |
| functions/dialog_wrapper.py | ProgressDialog.raise_to_front | 389 |
| functions/dialog_wrapper.py | create_progress_dialog | 408 |
| functions/message_wrapper.py | info | 67 |
| functions/message_wrapper.py | success | 82 |
| functions/message_wrapper.py | success | 84 |
| functions/os_wrapper.py | normalize_path | 43 |
| functions/os_wrapper.py | get_home_dir | 53 |
| functions/os_wrapper.py | is_absolute_path | 60 |
| functions/os_wrapper.py | basename | 68 |
| functions/os_wrapper.py | is_case_sensitive_fs | 80 |
| functions/os_wrapper.py | path_suffix | 96 |
| functions/qgisui_wrapper.py | get_main_window | 131 |
| functions/qgisui_wrapper.py | add_menu | 178 |
| functions/qgisui_wrapper.py | remove_menu | 188 |
| functions/qgisui_wrapper.py | add_toolbar | 201 |
| functions/qgisui_wrapper.py | remove_toolbar | 208 |
| functions/os_wrapper.py | get_home_dir | 55 |
| functions/os_wrapper.py | is_absolute_path | 64 |
| functions/os_wrapper.py | basename | 75 |
| functions/os_wrapper.py | path_suffix | 106 |
| functions/qgisui_wrapper.py | add_toolbar | 204 |
| functions/qt_wrapper.py | exec_dialog | 60 |
| functions/qt_wrapper.py | debug_qt_status | 64 |
| functions/qt_wrapper.py | debug_qt_status | 67 |
| modules/DataGrabber.py | DataGrabber.set_source | 68 |
| modules/DataGrabber.py | DataGrabber._process_database_source | 309 |
| modules/DataGrabber.py | DataGrabber._process_service_source | 320 |
| modules/DataGrabber.py | DataGrabber._aggregate_results | 330 |
| modules/DataGrabber.py | DataGrabber._process_database_source | 312 |
| modules/DataGrabber.py | DataGrabber._process_service_source | 324 |
| modules/Dateipruefer.py | Dateipruefer._ist_leer | 98 |
| modules/Dateipruefer.py | Dateipruefer._handle_leere_eingabe | 227 |
| modules/Datenschreiber.py | Datenschreiber._store_style_in_gpkg | 77 |
| modules/LayerLoader.py | LayerLoader._was_canceled | 42 |
| modules/LayerLoader.py | LayerLoader._process_events | 50 |
| modules/LayerLoader.py | LayerLoader._process_events | 51 |
| modules/linkpruefer.py | Linkpruefer._ist_url | 41 |
| modules/linkpruefer.py | Linkpruefer._pruefe_url | 81 |
| modules/linkpruefer.py | Linkpruefer._pruefe_dateipfad | 115 |
| modules/print_layout.py | PrintLayout._create_map_item | 98 |
| modules/print_layout.py | PrintLayout._set_item_frame_stroke_width | 119 |
| modules/print_layout.py | PrintLayout._fit_extent_to_map_item | 154 |
| modules/print_layout.py | PrintLayout.add_text_label | 211 |
| modules/print_layout.py | PrintLayout._setup_layout_objects | 242 |
| modules/print_layout.py | PrintLayout._create_label_item | 373 |
| modules/print_layout.py | PrintLayout._resolve_visible_map_layers | 470 |
| modules/print_layout.py | PrintLayout._apply_grid_common_settings | 791 |
| modules/print_layout.py | PrintLayout._safe_grid_call | 797 |
| modules/print_layout.py | PrintLayout._apply_grid_annotation_text_style | 808 |
| modules/print_layout.py | PrintLayout._create_rectangle_box_item | 908 |
| modules/print_layout.py | PrintLayout._set_item_frame_stroke_width | 120 |
| modules/print_layout.py | PrintLayout._fit_extent_to_map_item | 156 |
| modules/print_layout.py | PrintLayout.add_text_label | 214 |
| modules/print_layout.py | PrintLayout._setup_layout_objects | 246 |
| modules/print_layout.py | PrintLayout._create_label_item | 378 |
| modules/print_layout.py | PrintLayout._resolve_visible_map_layers | 476 |
| modules/print_layout.py | PrintLayout._apply_grid_common_settings | 798 |
| modules/print_layout.py | PrintLayout._safe_grid_call | 805 |
| modules/print_layout.py | PrintLayout._apply_grid_annotation_text_style | 817 |
| modules/print_layout.py | PrintLayout._create_rectangle_box_item | 918 |
| modules/print_layout_baufreigabe.py | PrintLayoutBaufreigabe.create_baufreigabe_layout | 90 |
| modules/print_layout_baufreigabe.py | PrintLayoutBaufreigabe._setup_layout_objects_baufreigabe | 262 |
| modules/print_layout_baufreigabe.py | PrintLayoutBaufreigabe._calc_atlas_margin_percent | 394 |
| modules/print_layout_baufreigabe.py | PrintLayoutBaufreigabe._setup_layout_objects_baufreigabe | 264 |
| modules/print_layout_baufreigabe.py | PrintLayoutBaufreigabe._calc_atlas_margin_percent | 398 |
| modules/print_logic.py | PrintLogic._failed_result | 123 |
| modules/print_logic.py | PrintLogic._show_target_size_too_small | 126 |
| modules/print_logic.py | PrintLogic._is_enabled_flag | 133 |
| modules/print_logic.py | PrintLogic._resolve_layer_from_project | 138 |
| modules/print_logic.py | PrintLogic._resolve_active_layer | 158 |
| modules/print_logic.py | PrintLogic._get_druckpuffer_cm | 167 |
| modules/print_logic.py | PrintLogic._get_druckpuffer_m | 175 |
| modules/print_logic.py | PrintLogic._import_qgis_symbol | 178 |
| modules/print_logic.py | PrintLogic._build_rectangle | 185 |
| modules/print_logic.py | PrintLogic._clone_extent | 194 |
| modules/print_logic.py | PrintLogic._get_existing_layer_by_name | 260 |
| modules/print_logic.py | PrintLogic._create_druckrechteck_layer | 273 |
| modules/print_logic.py | PrintLogic._clear_layer_features | 301 |
| modules/print_logic.py | PrintLogic.create_atlas_layer_from_selection | 325 |
| modules/print_logic.py | PrintLogic.configure_atlas_for_baufreigabe_layout | 468 |
| modules/print_logic.py | PrintLogic._store_druckrechteck | 614 |
| modules/print_logic.py | PrintLogic.activate_druckrechteck_capture | 662 |
| modules/print_logic.py | PrintLogic._resolve_selection_layer | 792 |
| modules/print_logic.py | PrintLogic._get_selected_extent | 805 |
| modules/print_logic.py | PrintLogic.set_kartenname_for_auswahl | 961 |
| modules/print_logic.py | PrintLogic.set_plotmassstab_for_auswahl | 965 |
| modules/print_logic.py | PrintLogic.set_view_for_auswahl | 976 |
| modules/print_logic.py | PrintLogic.set_zielgroesse_for_auswahl | 982 |
| modules/print_logic.py | PrintLogic.set_formfaktor | 985 |
| modules/print_logic.py | PrintLogic._get_plot_dimensions_mm | 1052 |
| modules/print_logic.py | PrintLogic._get_required_map_dimensions_mm | 1061 |
| modules/print_logic.py | PrintLogic.druckvorlage_anlegen | 1161 |
| modules/pruef_ergebnis.py | pruef_ergebnis.dateipfad | 167 |
| modules/print_logic.py | PrintLogic._show_target_size_too_small | 127 |
| modules/print_logic.py | PrintLogic._is_enabled_flag | 135 |
| modules/print_logic.py | PrintLogic._resolve_layer_from_project | 141 |
| modules/print_logic.py | PrintLogic._resolve_active_layer | 162 |
| modules/print_logic.py | PrintLogic._get_druckpuffer_cm | 172 |
| modules/print_logic.py | PrintLogic._get_druckpuffer_m | 181 |
| modules/print_logic.py | PrintLogic._import_qgis_symbol | 185 |
| modules/print_logic.py | PrintLogic._build_rectangle | 193 |
| modules/print_logic.py | PrintLogic._clone_extent | 203 |
| modules/print_logic.py | PrintLogic._get_existing_layer_by_name | 270 |
| modules/print_logic.py | PrintLogic._create_druckrechteck_layer | 284 |
| modules/print_logic.py | PrintLogic._clear_layer_features | 313 |
| modules/print_logic.py | PrintLogic.configure_atlas_for_baufreigabe_layout | 483 |
| modules/print_logic.py | PrintLogic._store_druckrechteck | 631 |
| modules/print_logic.py | PrintLogic.activate_druckrechteck_capture | 680 |
| modules/print_logic.py | PrintLogic._resolve_selection_layer | 811 |
| modules/print_logic.py | PrintLogic._get_selected_extent | 825 |
| modules/print_logic.py | PrintLogic._get_plot_dimensions_mm | 1078 |
| modules/print_logic.py | PrintLogic._get_required_map_dimensions_mm | 1088 |
| modules/Pruefmanager.py | Pruefmanager.report_summary | 45 |
| modules/Pruefmanager.py | Pruefmanager.zeige_hinweis | 62 |
| modules/Pruefmanager.py | Pruefmanager._handle_datei_existiert | 83 |
| modules/Pruefmanager.py | Pruefmanager._handle_verfahrensgebiet_layer_existiert | 230 |
| modules/Pruefmanager.py | Pruefmanager._ask_use_or_replace_pufferlayer | 273 |
| ui/navigation.py | Navigation.init_ui | 33 |
| ui/navigation.py | Navigation.add_action | 68 |
| ui/navigation.py | Navigation.finalize_menu_and_toolbar | 81 |
| ui/navigation.py | Navigation.set_active_plugin | 94 |
| ui/navigation.py | Navigation.remove_action | 104 |
| ui/navigation.py | Navigation.remove_all | 115 |
| ui/tabs/print_tab.py | PrintTab.set_services | 94 |
| modules/Pruefmanager.py | Pruefmanager.zeige_hinweis | 63 |
| modules/Pruefmanager.py | Pruefmanager._handle_datei_existiert | 87 |
| modules/Pruefmanager.py | Pruefmanager._handle_verfahrensgebiet_layer_existiert | 234 |
| modules/Pruefmanager.py | Pruefmanager._ask_use_or_replace_pufferlayer | 277 |
| ui/tabs/print_tab.py | PrintTab._build_ui | 115 |
| ui/tabs/print_tab.py | PrintTab._restore_state | 267 |
| ui/tabs/print_tab.py | PrintTab._on_kartenname_changed | 334 |
| ui/tabs/print_tab.py | PrintTab._on_massstab_changed | 347 |
| ui/tabs/print_tab.py | PrintTab._on_thema_changed | 352 |
| ui/tabs/print_tab.py | PrintTab._on_zielgroesse_changed | 357 |
| ui/tabs/print_tab.py | PrintTab._on_formfaktor_changed | 362 |
| ui/tabs/print_tab.py | PrintTab._on_druckbereich_changed | 368 |
| ui/tabs/print_tab.py | PrintTab._on_atlas_erzeugen_changed | 377 |
| ui/tabs/print_tab.py | PrintTab._on_druckpuffer_clicked | 392 |
| ui/tabs/print_tab.py | PrintTab._format_druckpuffer_label | 425 |
| ui/tabs/print_tab.py | PrintTab._on_vorlage_erstellen | 428 |
| ui/tabs/print_tab.py | PrintTab._disconnect_project_signals | 441 |
| ui/tabs/print_tab.py | PrintTab._connect_project_signals | 464 |
| ui/tabs/print_tab.py | PrintTab._toggle_atlas | 489 |
| ui/tabs/print_tab.py | PrintTab._restore_atlas_layer_selection | 495 |
| ui/tabs/print_tab.py | PrintTab._disconnect_theme_collection_signals | 519 |
| ui/tabs/print_tab.py | PrintTab._connect_theme_collection_signals | 538 |
| ui/tabs/print_tab.py | PrintTab._refresh_thema_combo_live | 565 |
| ui/tabs/print_tab.py | PrintTab._get_gespeicherte_themen | 585 |
| ui/tabs/print_tab.py | PrintTab._get_current_canvas_scale | 602 |
| ui/tabs/print_tab.py | PrintTab._on_atlas_layer_changed | 612 |
| ui/tabs/print_tab.py | PrintTab._on_auswahl_as_atlas_clicked | 641 |
| ui/tabs/print_tab.py | PrintTab._populate_atlas_layer_combo | 679 |
| ui/tabs/settings_tab.py | SettingsTab._build_input | 118 |