diff --git a/docs/status/testpruefungen.json b/docs/status/testpruefungen.json index ed69170..c708513 100644 --- a/docs/status/testpruefungen.json +++ b/docs/status/testpruefungen.json @@ -631,6 +631,66 @@ "datum": "2026-09-23", "hash": "525b2fdab218" }, + "sn_basis.tests.test_navigation.AddActionTests.test_erzeugt_action_und_fuegt_sie_gruppe_und_liste_hinzu": { + "datum": "2026-09-29", + "hash": "7aca9de43703" + }, + "sn_basis.tests.test_navigation.AddActionTests.test_ohne_plugin_group_liefert_none": { + "datum": "2026-09-29", + "hash": "518094424549" + }, + "sn_basis.tests.test_navigation.AddActionTests.test_ohne_priority_wird_standardprioritaet_100_verwendet": { + "datum": "2026-09-29", + "hash": "49ed3079911d" + }, + "sn_basis.tests.test_navigation.FinalizeMenuAndToolbarTests.test_gleiche_prioritaet_behaelt_registrierungsreihenfolge": { + "datum": "2026-09-29", + "hash": "7fe5c4b93d7b" + }, + "sn_basis.tests.test_navigation.FinalizeMenuAndToolbarTests.test_nur_menu_ohne_toolbar_laesst_menu_unveraendert": { + "datum": "2026-09-29", + "hash": "93cc53d73004" + }, + "sn_basis.tests.test_navigation.FinalizeMenuAndToolbarTests.test_ohne_menu_oder_toolbar_tut_nichts": { + "datum": "2026-09-29", + "hash": "f8a271e5aedf" + }, + "sn_basis.tests.test_navigation.FinalizeMenuAndToolbarTests.test_sortiert_und_fuegt_aktionen_in_prioritaetsreihenfolge_hinzu": { + "datum": "2026-09-29", + "hash": "452ef0a0228b" + }, + "sn_basis.tests.test_navigation.RemoveActionTests.test_entfernt_action_aus_menu_toolbar_und_liste": { + "datum": "2026-09-29", + "hash": "3c2aea3516cf" + }, + "sn_basis.tests.test_navigation.RemoveActionTests.test_none_action_tut_nichts": { + "datum": "2026-09-29", + "hash": "5f69f2236ec0" + }, + "sn_basis.tests.test_navigation.RemoveActionTests.test_ohne_menu_oder_toolbar_entfernt_trotzdem_aus_liste": { + "datum": "2026-09-29", + "hash": "57387489da73" + }, + "sn_basis.tests.test_navigation.RemoveAllTests.test_entfernt_menu_toolbar_und_setzt_zustand_zurueck": { + "datum": "2026-09-29", + "hash": "3d4ea907aabe" + }, + "sn_basis.tests.test_navigation.RemoveAllTests.test_loescht_menu_und_toolbar_objekt_damit_kein_duplikat_uebrig_bleibt": { + "datum": "2026-09-29", + "hash": "f6b94d873e0a" + }, + "sn_basis.tests.test_navigation.RemoveAllTests.test_ohne_menu_und_toolbar_ruft_wrapper_nicht_auf": { + "datum": "2026-09-29", + "hash": "7219c12b1516" + }, + "sn_basis.tests.test_navigation.SetActivePluginTests.test_ohne_aktive_action_setzt_alle_auf_false": { + "datum": "2026-09-29", + "hash": "e7234529c346" + }, + "sn_basis.tests.test_navigation.SetActivePluginTests.test_setzt_nur_aktive_action_auf_checked": { + "datum": "2026-09-29", + "hash": "3e9505367374" + }, "sn_basis.tests.test_pruefmanager.TestPruefmanager.test_datei_existiert_append": { "datum": "2026-09-17", "hash": "25e169c45423" diff --git a/docs/tests/testkatalog.html b/docs/tests/testkatalog.html index 717936a..bfcef8e 100644 --- a/docs/tests/testkatalog.html +++ b/docs/tests/testkatalog.html @@ -123,24 +123,24 @@

Prüfstand

Testkatalog der sn_*-Plugins — was die Suite heute prüft, auf einen Blick.
-
Quelle: docs/tests/testkatalog.md
Baseline: docs/status/testbaseline.json (SHA-256 aeabc946a7f3)
Prüf-Audit: docs/status/testpruefungen.json (SHA-256 4ed158c391ca)
+
Quelle: docs/tests/testkatalog.md
Baseline: docs/status/testbaseline.json (SHA-256 aeabc946a7f3)
Prüf-Audit: docs/status/testpruefungen.json (SHA-256 fbe8074a730d)
-
597Testfälle
-
554grün
+
600Testfälle
+
557grün
35rot (Baseline)
76%mit Docstring
-
30%aktuell geprüft
+
33%aktuell geprüft
49Testdateien
35%ohne Testbezug
Verteilung je Paket
-
sn_basis32 Dateien · 345 Testfälle
+
sn_basis32 Dateien · 348 Testfälle
sn_verfahrensgebiet12 Dateien · 208 Testfälle
sn_plan415 Dateien · 44 Testfälle
@@ -159,11 +159,11 @@

sn_basis

Plattform-Plugin · Ordner Plugin_SN_Basis

- -
32Testdateien
345Testfälle
345grün
0rot (Baseline)
100%mit Docstring
52%geprüft
70ohne Testbezug
+
32Testdateien
348Testfälle
348grün
0rot (Baseline)
100%mit Docstring
56%geprüft
70ohne Testbezug

Tests für sn_basis/ui/base_dockwidget.py::closeEvent (Issue #65).

CloseEventTests 5
flowchart TD
   root(["test_base_dockwidget.py"])
   class root rootnode
@@ -669,31 +669,34 @@
   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;
TestfallprüftStatusgeprüft
GetMessageBarTests
test_liefert_objekt_mit_pushmessage_methode
Prüft, dass _get_message_bar ein Objekt mit aufrufbarer pushMessage()-Methode liefert.grüngeprüft am 2026-09-23
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üngeprüft am 2026-09-23
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üngeprüft am 2026-09-23
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üngeprüft am 2026-09-23
MeldungsstufenTests
test_info_warning_error_success_setzen_die_passende_meldungsstufe
Prüft, dass info, warning, error und success jeweils ihre eigene Qgis.MessageLevel-Stufe setzen und Titel, Text und Dauer weiterreichen.grüngeprüft am 2026-09-23

Tests für sn_basis/ui/navigation.py::Navigation (Issue #67, ohne init_ui – s. Docstring dort).

AddActionTests 2FinalizeMenuAndToolbarTests 2SetActivePluginTests 2RemoveActionTests 3RemoveAllTests 3
flowchart TD
+  classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
TestfallprüftStatusgeprüft
GetMessageBarTests
test_liefert_objekt_mit_pushmessage_methode
Prüft, dass _get_message_bar ein Objekt mit aufrufbarer pushMessage()-Methode liefert.grüngeprüft am 2026-09-23
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üngeprüft am 2026-09-23
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üngeprüft am 2026-09-23
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üngeprüft am 2026-09-23
MeldungsstufenTests
test_info_warning_error_success_setzen_die_passende_meldungsstufe
Prüft, dass info, warning, error und success jeweils ihre eigene Qgis.MessageLevel-Stufe setzen und Titel, Text und Dauer weiterreichen.grüngeprüft am 2026-09-23

Tests für sn_basis/ui/navigation.py::Navigation (Issue #67, ohne init_ui – s. Docstring dort).

AddActionTests 3FinalizeMenuAndToolbarTests 4SetActivePluginTests 2RemoveActionTests 3RemoveAllTests 3
flowchart TD
   root(["test_navigation.py"])
   class root rootnode
-  root --> g1["AddActionTests (2)"]
+  root --> g1["AddActionTests (3)"]
   class g1 groupnode
   g1 --> t1("ohne_plugin_group_liefert_none")
   g1 --> t2("erzeugt_action_und_fuegt_sie_gruppe_und_liste_hinzu")
-  root --> g2["FinalizeMenuAndToolbarTests (2)"]
+  g1 --> t3("ohne_priority_wird_standardprioritaet_100_verwendet")
+  root --> g2["FinalizeMenuAndToolbarTests (4)"]
   class g2 groupnode
-  g2 --> t3("ohne_menu_oder_toolbar_tut_nichts")
-  g2 --> t4("sortiert_und_fuegt_aktionen_in_prioritaetsreihenfolge_hinzu")
+  g2 --> t4("ohne_menu_oder_toolbar_tut_nichts")
+  g2 --> t5("sortiert_und_fuegt_aktionen_in_prioritaetsreihenfolge_hinzu")
+  g2 --> t6("nur_menu_ohne_toolbar_laesst_menu_unveraendert")
+  g2 --> t7("gleiche_prioritaet_behaelt_registrierungsreihenfolge")
   root --> g3["SetActivePluginTests (2)"]
   class g3 groupnode
-  g3 --> t5("setzt_nur_aktive_action_auf_checked")
-  g3 --> t6("ohne_aktive_action_setzt_alle_auf_false")
+  g3 --> t8("setzt_nur_aktive_action_auf_checked")
+  g3 --> t9("ohne_aktive_action_setzt_alle_auf_false")
   root --> g4["RemoveActionTests (3)"]
   class g4 groupnode
-  g4 --> t7("none_action_tut_nichts")
-  g4 --> t8("entfernt_action_aus_menu_toolbar_und_liste")
-  g4 --> t9("ohne_menu_oder_toolbar_entfernt_trotzdem_aus_liste")
+  g4 --> t10("none_action_tut_nichts")
+  g4 --> t11("entfernt_action_aus_menu_toolbar_und_liste")
+  g4 --> t12("ohne_menu_oder_toolbar_entfernt_trotzdem_aus_liste")
   root --> g5["RemoveAllTests (3)"]
   class g5 groupnode
-  g5 --> t10("entfernt_menu_toolbar_und_setzt_zustand_zurueck")
-  g5 --> t11("loescht_menu_und_toolbar_objekt_damit_kein_duplikat_uebrig_bleibt")
-  g5 --> t12("ohne_menu_und_toolbar_ruft_wrapper_nicht_auf")
+  g5 --> t13("entfernt_menu_toolbar_und_setzt_zustand_zurueck")
+  g5 --> t14("loescht_menu_und_toolbar_objekt_damit_kein_duplikat_uebrig_bleibt")
+  g5 --> t15("ohne_menu_und_toolbar_ruft_wrapper_nicht_auf")
   class t1 ok
   class t2 ok
   class t3 ok
@@ -706,11 +709,14 @@
   class t10 ok
   class t11 ok
   class t12 ok
+  class t13 ok
+  class t14 ok
+  class t15 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;
TestfallprüftStatusgeprüft
AddActionTests
test_ohne_plugin_group_liefert_none
Prüft, dass add_action ohne initialisierte Aktionsgruppe None liefert und nichts anlegt.grünnie geprüft
AddActionTests
test_erzeugt_action_und_fuegt_sie_gruppe_und_liste_hinzu
Prüft, dass add_action eine Action erzeugt, ihr die Gruppe zuweist und sie priorisiert in der Liste ablegt.grünnie geprüft
FinalizeMenuAndToolbarTests
test_ohne_menu_oder_toolbar_tut_nichts
Prüft, dass finalize_menu_and_toolbar ohne Menü oder Toolbar keine Ausnahme wirft.grünnie geprüft
FinalizeMenuAndToolbarTests
test_sortiert_und_fuegt_aktionen_in_prioritaetsreihenfolge_hinzu
Prüft, dass finalize_menu_and_toolbar Aktionen nach Priorität sortiert in Menü und Toolbar einträgt.grünnie geprüft
SetActivePluginTests
test_setzt_nur_aktive_action_auf_checked
Prüft, dass set_active_plugin nur die übergebene Action markiert, alle anderen abwählt.grünnie geprüft
SetActivePluginTests
test_ohne_aktive_action_setzt_alle_auf_false
Prüft, dass set_active_plugin ohne aktive Action alle bestehenden Actions abwählt.grünnie geprüft
RemoveActionTests
test_none_action_tut_nichts
Prüft, dass remove_action mit None keine Ausnahme wirft und die Liste unverändert lässt.grünnie geprüft
RemoveActionTests
test_entfernt_action_aus_menu_toolbar_und_liste
Prüft, dass remove_action die Action aus Menü, Toolbar und der internen Liste entfernt.grünnie geprüft
RemoveActionTests
test_ohne_menu_oder_toolbar_entfernt_trotzdem_aus_liste
Prüft, dass remove_action ohne Menü/Toolbar trotzdem aus der internen Liste entfernt.grünnie geprüft
RemoveAllTests
test_entfernt_menu_toolbar_und_setzt_zustand_zurueck
Prüft, dass remove_all Menü und Toolbar über die Wrapper entfernt und den Navigationszustand zurücksetzt.grünnie geprüft
RemoveAllTests
test_loescht_menu_und_toolbar_objekt_damit_kein_duplikat_uebrig_bleibt
Prüft, dass remove_all deleteLater() auf Menü und Toolbar aufruft, damit sie den Qt-Objektbaum tatsächlich verlassen (Issue #72).grünnie geprüft
RemoveAllTests
test_ohne_menu_und_toolbar_ruft_wrapper_nicht_auf
Prüft, dass remove_all ohne vorhandenes Menü/Toolbar die Wrapper nicht aufruft, aber die Liste leert.grünnie geprüft

Tests für sn_basis/functions/os_wrapper.py::is_case_sensitive_fs (Issue #67).

IsCaseSensitiveFsTests 3
flowchart TD
+  classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
TestfallprüftStatusgeprüft
AddActionTests
test_ohne_plugin_group_liefert_none
Prüft, dass add_action ohne initialisierte Aktionsgruppe None liefert und nichts anlegt.grüngeprüft am 2026-09-29
AddActionTests
test_erzeugt_action_und_fuegt_sie_gruppe_und_liste_hinzu
Prüft, dass add_action eine Action erzeugt, ihr die Gruppe zuweist und sie priorisiert in der Liste ablegt.grüngeprüft am 2026-09-29
AddActionTests
test_ohne_priority_wird_standardprioritaet_100_verwendet
Prüft, dass add_action ohne Angabe von priority die Standardpriorität 100 ablegt.grüngeprüft am 2026-09-29
FinalizeMenuAndToolbarTests
test_ohne_menu_oder_toolbar_tut_nichts
Prüft, dass finalize_menu_and_toolbar ohne Menü oder Toolbar keine Ausnahme wirft.grüngeprüft am 2026-09-29
FinalizeMenuAndToolbarTests
test_sortiert_und_fuegt_aktionen_in_prioritaetsreihenfolge_hinzu
Prüft, dass finalize_menu_and_toolbar Aktionen nach Priorität sortiert in Menü und Toolbar einträgt.grüngeprüft am 2026-09-29
FinalizeMenuAndToolbarTests
test_nur_menu_ohne_toolbar_laesst_menu_unveraendert
Prüft, dass finalize_menu_and_toolbar bei fehlender Toolbar auch das vorhandene Menü nicht leert oder befüllt.grüngeprüft am 2026-09-29
FinalizeMenuAndToolbarTests
test_gleiche_prioritaet_behaelt_registrierungsreihenfolge
Prüft, dass finalize_menu_and_toolbar Aktionen gleicher Priorität in der Reihenfolge ihrer Registrierung einträgt.grüngeprüft am 2026-09-29
SetActivePluginTests
test_setzt_nur_aktive_action_auf_checked
Prüft, dass set_active_plugin nur die übergebene Action markiert, alle anderen abwählt.grüngeprüft am 2026-09-29
SetActivePluginTests
test_ohne_aktive_action_setzt_alle_auf_false
Prüft, dass set_active_plugin ohne aktive Action alle bestehenden Actions abwählt.grüngeprüft am 2026-09-29
RemoveActionTests
test_none_action_tut_nichts
Prüft, dass remove_action mit None keine Ausnahme wirft und die Liste unverändert lässt.grüngeprüft am 2026-09-29
RemoveActionTests
test_entfernt_action_aus_menu_toolbar_und_liste
Prüft, dass remove_action die Action aus Menü, Toolbar und der internen Liste entfernt.grüngeprüft am 2026-09-29
RemoveActionTests
test_ohne_menu_oder_toolbar_entfernt_trotzdem_aus_liste
Prüft, dass remove_action ohne Menü/Toolbar trotzdem aus der internen Liste entfernt.grüngeprüft am 2026-09-29
RemoveAllTests
test_entfernt_menu_toolbar_und_setzt_zustand_zurueck
Prüft, dass remove_all Menü und Toolbar über die Wrapper entfernt und den Navigationszustand zurücksetzt.grüngeprüft am 2026-09-29
RemoveAllTests
test_loescht_menu_und_toolbar_objekt_damit_kein_duplikat_uebrig_bleibt
Prüft, dass remove_all deleteLater() auf Menü und Toolbar aufruft, damit sie den Qt-Objektbaum tatsächlich verlassen (Issue #72).grüngeprüft am 2026-09-29
RemoveAllTests
test_ohne_menu_und_toolbar_ruft_wrapper_nicht_auf
Prüft, dass remove_all ohne vorhandenes Menü/Toolbar die Wrapper nicht aufruft, aber die Liste leert.grüngeprüft am 2026-09-29

Tests für sn_basis/functions/os_wrapper.py::is_case_sensitive_fs (Issue #67).

IsCaseSensitiveFsTests 3
flowchart TD
   root(["test_os_wrapper.py"])
   class root rootnode
   root --> g1["IsCaseSensitiveFsTests (3)"]
diff --git a/docs/tests/testkatalog.md b/docs/tests/testkatalog.md
index 46fcb32..9d7a666 100644
--- a/docs/tests/testkatalog.md
+++ b/docs/tests/testkatalog.md
@@ -8,21 +8,21 @@ für die fachliche Frage, ob die Abdeckung sinnvoll ist. Die Angaben stammen aus
 selbst (Docstrings) und aus der Testbaseline.
 
 Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`)
-Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `4ed158c391ca`)
+Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `fbe8074a730d`)
 
-Gesamt: 3 Pakete, 49 Testdateien, 597 Testfälle – 554 grün, 35 rot (Baseline), 8 übersprungen.
-Mit Beschreibung (Docstring): 452 von 597 (76 %).
-Fachlich geprüft: 181 von 597 (30 %) aktuell, 0 veraltet seit Codeänderung, 416 nie geprüft.
+Gesamt: 3 Pakete, 49 Testdateien, 600 Testfälle – 557 grün, 35 rot (Baseline), 8 übersprungen.
+Mit Beschreibung (Docstring): 455 von 600 (76 %).
+Fachlich geprüft: 196 von 600 (33 %) aktuell, 0 veraltet seit Codeänderung, 404 nie geprüft.
 Strukturelle Lücken (heuristisch, Namensabgleich): 143 von 413 (35 %) Funktionen/Methoden ohne erkennbaren Testbezug – Abschnitt „Ungetestete Funktionen“.
 
 ## Zusammenfassung
 
 | Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung | fachlich geprüft | ohne Testbezug |
 | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
-| `sn_basis` | 32 | 345 | 345 | 0 | 0 | 345 von 345 (100 %) | 181 von 345 (52 %) | 70 von 229 (31 %) |
+| `sn_basis` | 32 | 348 | 348 | 0 | 0 | 348 von 348 (100 %) | 196 von 348 (56 %) | 70 von 229 (31 %) |
 | `sn_verfahrensgebiet` | 12 | 208 | 166 | 34 | 8 | 106 von 208 (51 %) | 0 von 208 (0 %) | 34 von 104 (33 %) |
 | `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | 0 von 44 (0 %) | 39 von 80 (49 %) |
-| **Summe** | **49** | **597** | **554** | **35** | **8** | **452 von 597 (76 %)** | **181 von 597 (30 %)** | **143 von 413 (35 %)** |
+| **Summe** | **49** | **600** | **557** | **35** | **8** | **455 von 600 (76 %)** | **196 von 600 (33 %)** | **143 von 413 (35 %)** |
 
 ### Legende
 
@@ -36,7 +36,7 @@ Strukturelle Lücken (heuristisch, Namensabgleich): 143 von 413 (35 %) Funktione
 
 ## Paket `sn_basis`
 
-Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 345 Testfällen (345 grün, 0 rot, 0 übersprungen).
+Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 348 Testfällen (348 grün, 0 rot, 0 übersprungen).
 
 ### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
 
@@ -400,26 +400,29 @@ Worum es in der Datei geht: Tests für sn_basis/ui/navigation.py::Navigation (Is
 
 Testgruppen:
 
-- `AddActionTests` (2 Testfälle): — (Docstring fehlt)
-- `FinalizeMenuAndToolbarTests` (2 Testfälle): — (Docstring fehlt)
+- `AddActionTests` (3 Testfälle): — (Docstring fehlt)
+- `FinalizeMenuAndToolbarTests` (4 Testfälle): — (Docstring fehlt)
 - `SetActivePluginTests` (2 Testfälle): — (Docstring fehlt)
 - `RemoveActionTests` (3 Testfälle): — (Docstring fehlt)
 - `RemoveAllTests` (3 Testfälle): — (Docstring fehlt)
 
 | Testfall | prüft | Status | geprüft |
 | --- | --- | --- | --- |
-| `AddActionTests.test_ohne_plugin_group_liefert_none` | Prüft, dass add_action ohne initialisierte Aktionsgruppe None liefert und nichts anlegt. | grün | nie geprüft |
-| `AddActionTests.test_erzeugt_action_und_fuegt_sie_gruppe_und_liste_hinzu` | Prüft, dass add_action eine Action erzeugt, ihr die Gruppe zuweist und sie priorisiert in der Liste ablegt. | grün | nie geprüft |
-| `FinalizeMenuAndToolbarTests.test_ohne_menu_oder_toolbar_tut_nichts` | Prüft, dass finalize_menu_and_toolbar ohne Menü oder Toolbar keine Ausnahme wirft. | grün | nie geprüft |
-| `FinalizeMenuAndToolbarTests.test_sortiert_und_fuegt_aktionen_in_prioritaetsreihenfolge_hinzu` | Prüft, dass finalize_menu_and_toolbar Aktionen nach Priorität sortiert in Menü und Toolbar einträgt. | grün | nie geprüft |
-| `SetActivePluginTests.test_setzt_nur_aktive_action_auf_checked` | Prüft, dass set_active_plugin nur die übergebene Action markiert, alle anderen abwählt. | grün | nie geprüft |
-| `SetActivePluginTests.test_ohne_aktive_action_setzt_alle_auf_false` | Prüft, dass set_active_plugin ohne aktive Action alle bestehenden Actions abwählt. | grün | nie geprüft |
-| `RemoveActionTests.test_none_action_tut_nichts` | Prüft, dass remove_action mit None keine Ausnahme wirft und die Liste unverändert lässt. | grün | nie geprüft |
-| `RemoveActionTests.test_entfernt_action_aus_menu_toolbar_und_liste` | Prüft, dass remove_action die Action aus Menü, Toolbar und der internen Liste entfernt. | grün | nie geprüft |
-| `RemoveActionTests.test_ohne_menu_oder_toolbar_entfernt_trotzdem_aus_liste` | Prüft, dass remove_action ohne Menü/Toolbar trotzdem aus der internen Liste entfernt. | grün | nie geprüft |
-| `RemoveAllTests.test_entfernt_menu_toolbar_und_setzt_zustand_zurueck` | Prüft, dass remove_all Menü und Toolbar über die Wrapper entfernt und den Navigationszustand zurücksetzt. | grün | nie geprüft |
-| `RemoveAllTests.test_loescht_menu_und_toolbar_objekt_damit_kein_duplikat_uebrig_bleibt` | Prüft, dass remove_all deleteLater() auf Menü und Toolbar aufruft, damit sie den Qt-Objektbaum tatsächlich verlassen (Issue #72). | grün | nie geprüft |
-| `RemoveAllTests.test_ohne_menu_und_toolbar_ruft_wrapper_nicht_auf` | Prüft, dass remove_all ohne vorhandenes Menü/Toolbar die Wrapper nicht aufruft, aber die Liste leert. | grün | nie geprüft |
+| `AddActionTests.test_ohne_plugin_group_liefert_none` | Prüft, dass add_action ohne initialisierte Aktionsgruppe None liefert und nichts anlegt. | grün | geprüft am 2026-09-29 |
+| `AddActionTests.test_erzeugt_action_und_fuegt_sie_gruppe_und_liste_hinzu` | Prüft, dass add_action eine Action erzeugt, ihr die Gruppe zuweist und sie priorisiert in der Liste ablegt. | grün | geprüft am 2026-09-29 |
+| `AddActionTests.test_ohne_priority_wird_standardprioritaet_100_verwendet` | Prüft, dass add_action ohne Angabe von priority die Standardpriorität 100 ablegt. | grün | geprüft am 2026-09-29 |
+| `FinalizeMenuAndToolbarTests.test_ohne_menu_oder_toolbar_tut_nichts` | Prüft, dass finalize_menu_and_toolbar ohne Menü oder Toolbar keine Ausnahme wirft. | grün | geprüft am 2026-09-29 |
+| `FinalizeMenuAndToolbarTests.test_sortiert_und_fuegt_aktionen_in_prioritaetsreihenfolge_hinzu` | Prüft, dass finalize_menu_and_toolbar Aktionen nach Priorität sortiert in Menü und Toolbar einträgt. | grün | geprüft am 2026-09-29 |
+| `FinalizeMenuAndToolbarTests.test_nur_menu_ohne_toolbar_laesst_menu_unveraendert` | Prüft, dass finalize_menu_and_toolbar bei fehlender Toolbar auch das vorhandene Menü nicht leert oder befüllt. | grün | geprüft am 2026-09-29 |
+| `FinalizeMenuAndToolbarTests.test_gleiche_prioritaet_behaelt_registrierungsreihenfolge` | Prüft, dass finalize_menu_and_toolbar Aktionen gleicher Priorität in der Reihenfolge ihrer Registrierung einträgt. | grün | geprüft am 2026-09-29 |
+| `SetActivePluginTests.test_setzt_nur_aktive_action_auf_checked` | Prüft, dass set_active_plugin nur die übergebene Action markiert, alle anderen abwählt. | grün | geprüft am 2026-09-29 |
+| `SetActivePluginTests.test_ohne_aktive_action_setzt_alle_auf_false` | Prüft, dass set_active_plugin ohne aktive Action alle bestehenden Actions abwählt. | grün | geprüft am 2026-09-29 |
+| `RemoveActionTests.test_none_action_tut_nichts` | Prüft, dass remove_action mit None keine Ausnahme wirft und die Liste unverändert lässt. | grün | geprüft am 2026-09-29 |
+| `RemoveActionTests.test_entfernt_action_aus_menu_toolbar_und_liste` | Prüft, dass remove_action die Action aus Menü, Toolbar und der internen Liste entfernt. | grün | geprüft am 2026-09-29 |
+| `RemoveActionTests.test_ohne_menu_oder_toolbar_entfernt_trotzdem_aus_liste` | Prüft, dass remove_action ohne Menü/Toolbar trotzdem aus der internen Liste entfernt. | grün | geprüft am 2026-09-29 |
+| `RemoveAllTests.test_entfernt_menu_toolbar_und_setzt_zustand_zurueck` | Prüft, dass remove_all Menü und Toolbar über die Wrapper entfernt und den Navigationszustand zurücksetzt. | grün | geprüft am 2026-09-29 |
+| `RemoveAllTests.test_loescht_menu_und_toolbar_objekt_damit_kein_duplikat_uebrig_bleibt` | Prüft, dass remove_all deleteLater() auf Menü und Toolbar aufruft, damit sie den Qt-Objektbaum tatsächlich verlassen (Issue #72). | grün | geprüft am 2026-09-29 |
+| `RemoveAllTests.test_ohne_menu_und_toolbar_ruft_wrapper_nicht_auf` | Prüft, dass remove_all ohne vorhandenes Menü/Toolbar die Wrapper nicht aufruft, aber die Liste leert. | grün | geprüft am 2026-09-29 |
 
 ### `Plugin_SN_Basis/tests/test_os_wrapper.py`
 
@@ -1269,7 +1272,7 @@ Arbeitsliste: Diese Testfälle haben keinen Docstring; was sie fachlich prüfen,
 aus dem Quelltext erschließen. Jeder Eintrag braucht eine einzeilige Beschreibung im Testfall,
 dann verschwindet er hier von selbst.
 
-### `sn_basis` – 0 von 345 Testfällen ohne Beschreibung
+### `sn_basis` – 0 von 348 Testfällen ohne Beschreibung
 
 Keine Lücken.