From c7ecd14d64ef6fe6f3e3f7ec791a3931acb1a97e Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 26 Oct 2026 20:18:58 +0100 Subject: [PATCH] =?UTF-8?q?Test-Audit=20sn=5Fbasis=20fortgesetzt:=20settin?= =?UTF-8?q?gs=5Ftab.py=20fachlich=20gepr=C3=BCft=20(#76)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 9 Testfälle nach Freigabe als geprüft markiert: test_settings_tab.py komplett (8 bestehende, davon 1 geschärft und 1 mit präzisiertem Docstring, und 1 neuer für den Platzhalter im Landkreis-Dropdown). Nebenbefund (Landkreis wird über den Namen statt über die Kennzahl geladen) nur im Commit von Plugin_SN_Basis vermerkt, ohne Issue. Testkatalog neu erzeugt. Co-Authored-By: Claude Opus 5.5 --- docs/status/testpruefungen.json | 36 +++++++++++++++++++++++++++++++ docs/tests/testkatalog.html | 38 +++++++++++++++++---------------- docs/tests/testkatalog.md | 35 +++++++++++++++--------------- 3 files changed, 74 insertions(+), 35 deletions(-) diff --git a/docs/status/testpruefungen.json b/docs/status/testpruefungen.json index eff3a32..133c66c 100644 --- a/docs/status/testpruefungen.json +++ b/docs/status/testpruefungen.json @@ -1007,6 +1007,42 @@ "datum": "2026-09-17", "hash": "96f217d347c2" }, + "sn_basis.tests.test_settings_tab.BuildInputTests.test_anderes_feld_liefert_lineedit": { + "datum": "2026-10-26", + "hash": "4b1c7d81b589" + }, + "sn_basis.tests.test_settings_tab.BuildInputTests.test_landkreis_feld_liefert_combobox_mit_allen_landkreisen": { + "datum": "2026-10-26", + "hash": "bae09ab146d7" + }, + "sn_basis.tests.test_settings_tab.LoadDataTests.test_befuellt_textfelder_aus_gespeicherten_daten": { + "datum": "2026-10-26", + "hash": "7a4a7b3d28ad" + }, + "sn_basis.tests.test_settings_tab.LoadDataTests.test_ohne_gespeicherten_wert_bleibt_textfeld_leer": { + "datum": "2026-10-26", + "hash": "9143a4eccd59" + }, + "sn_basis.tests.test_settings_tab.LoadDataTests.test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag": { + "datum": "2026-10-26", + "hash": "4ef8fdcf26c5" + }, + "sn_basis.tests.test_settings_tab.LoadDataTests.test_waehlt_combobox_eintrag_bei_bekanntem_namen": { + "datum": "2026-10-26", + "hash": "9e9665319784" + }, + "sn_basis.tests.test_settings_tab.SaveDataTests.test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt": { + "datum": "2026-10-26", + "hash": "78be1d93dfb4" + }, + "sn_basis.tests.test_settings_tab.SaveDataTests.test_platzhalter_speichert_leere_kennzahl_statt_none": { + "datum": "2026-10-26", + "hash": "7885b0af38f4" + }, + "sn_basis.tests.test_settings_tab.SaveDataTests.test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl": { + "datum": "2026-10-26", + "hash": "7ac4e48333d5" + }, "sn_basis.tests.test_stilpruefer.TestStilpruefer.test_datei_existiert_falsche_endung": { "datum": "2026-09-17", "hash": "37de9cd7e14c" diff --git a/docs/tests/testkatalog.html b/docs/tests/testkatalog.html index e69370d..2c159c9 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 7df562788eb6)
+
Quelle: docs/tests/testkatalog.md
Baseline: docs/status/testbaseline.json (SHA-256 aeabc946a7f3)
Prüf-Audit: docs/status/testpruefungen.json (SHA-256 119f79e142a0)
-
690Testfälle
-
647grün
+
691Testfälle
+
648grün
35rot (Baseline)
79%mit Docstring
-
37%aktuell geprüft
+
38%aktuell geprüft
55Testdateien
34%ohne Testbezug
Verteilung je Paket
-
sn_basis32 Dateien · 357 Testfälle
+
sn_basis32 Dateien · 358 Testfälle
sn_verfahrensgebiet18 Dateien · 289 Testfälle
sn_plan415 Dateien · 44 Testfälle
@@ -159,11 +159,11 @@

sn_basis

Plattform-Plugin · Ordner Plugin_SN_Basis

- -
32Testdateien
357Testfälle
357grün
0rot (Baseline)
100%mit Docstring
72%geprüft
70ohne Testbezug
+
32Testdateien
358Testfälle
358grün
0rot (Baseline)
100%mit Docstring
74%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
@@ -1105,23 +1105,24 @@
   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
TestSettingsLogic
test_load
Prüft, dass load() jede bekannte Projektvariable genau einmal über get_variable() liest.grüngeprüft am 2026-09-17
TestSettingsLogic
test_save
Prüft, dass save() nur bekannte Variablen-Keys speichert und unbekannte Keys ignoriert.grüngeprü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üngeprü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üngeprüft am 2026-09-17

Tests für sn_basis/ui/tabs/settings_tab.py::save_data/load_data/_build_input (Issue #65/#67).

SaveDataTests 2LoadDataTests 4BuildInputTests 2
flowchart TD
+  classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
TestfallprüftStatusgeprüft
TestSettingsLogic
test_load
Prüft, dass load() jede bekannte Projektvariable genau einmal über get_variable() liest.grüngeprüft am 2026-09-17
TestSettingsLogic
test_save
Prüft, dass save() nur bekannte Variablen-Keys speichert und unbekannte Keys ignoriert.grüngeprü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üngeprü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üngeprüft am 2026-09-17

Tests für sn_basis/ui/tabs/settings_tab.py::save_data/load_data/_build_input (Issue #65/#67).

SaveDataTests 3LoadDataTests 4BuildInputTests 2
flowchart TD
   root(["test_settings_tab.py"])
   class root rootnode
-  root --> g1["SaveDataTests (2)"]
+  root --> g1["SaveDataTests (3)"]
   class g1 groupnode
   g1 --> t1("sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl")
-  g1 --> t2("ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt")
+  g1 --> t2("platzhalter_speichert_leere_kennzahl_statt_none")
+  g1 --> t3("ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt")
   root --> g2["LoadDataTests (4)"]
   class g2 groupnode
-  g2 --> t3("befuellt_textfelder_aus_gespeicherten_daten")
-  g2 --> t4("ohne_gespeicherten_wert_bleibt_textfeld_leer")
-  g2 --> t5("waehlt_combobox_eintrag_bei_bekanntem_namen")
-  g2 --> t6("unbekannter_gespeicherter_name_waehlt_ersten_eintrag")
+  g2 --> t4("befuellt_textfelder_aus_gespeicherten_daten")
+  g2 --> t5("ohne_gespeicherten_wert_bleibt_textfeld_leer")
+  g2 --> t6("waehlt_combobox_eintrag_bei_bekanntem_namen")
+  g2 --> t7("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")
+  g3 --> t8("landkreis_feld_liefert_combobox_mit_allen_landkreisen")
+  g3 --> t9("anderes_feld_liefert_lineedit")
   class t1 ok
   class t2 ok
   class t3 ok
@@ -1130,11 +1131,12 @@
   class t6 ok
   class t7 ok
   class t8 ok
+  class t9 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
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ünnie 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ünnie geprüft
LoadDataTests
test_befuellt_textfelder_aus_gespeicherten_daten
Prüft, dass load_data ein Textfeld mit dem gespeicherten Wert befüllt.grünnie 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ünnie geprüft
LoadDataTests
test_waehlt_combobox_eintrag_bei_bekanntem_namen
Prüft, dass load_data im Landkreis-Dropdown den gespeicherten Landkreisnamen auswählt.grünnie 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ünnie 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ünnie geprüft
BuildInputTests
test_anderes_feld_liefert_lineedit
Prüft, dass _build_input für ein normales Feld ein leeres Textfeld liefert.grünnie geprüft

— (Docstring fehlt)

TestStilpruefer 4
flowchart TD
+  classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
TestfallprüftStatusgeprü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üngeprüft am 2026-10-26
SaveDataTests
test_platzhalter_speichert_leere_kennzahl_statt_none
Prüft, dass bei ausgewähltem Platzhalter Landkreisname und Kennzahl als leerer Text gespeichert werden.grüngeprüft am 2026-10-26
SaveDataTests
test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt
Prüft, dass ohne Landkreis-Dropdown im Formular keine 'landkreis_kennzahl' ergänzt wird.grüngeprüft am 2026-10-26
LoadDataTests
test_befuellt_textfelder_aus_gespeicherten_daten
Prüft, dass load_data ein Textfeld mit dem gespeicherten Wert befüllt.grüngeprüft am 2026-10-26
LoadDataTests
test_ohne_gespeicherten_wert_bleibt_textfeld_leer
Prüft, dass load_data ohne gespeicherten Wert das Textfeld auf einen leeren Text setzt.grüngeprüft am 2026-10-26
LoadDataTests
test_waehlt_combobox_eintrag_bei_bekanntem_namen
Prüft, dass load_data im Landkreis-Dropdown den gespeicherten Landkreisnamen auswählt.grüngeprüft am 2026-10-26
LoadDataTests
test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag
Prüft, dass load_data bei einem nicht mehr vorhandenen Landkreisnamen auf den leeren Platzhalter zurückfällt.grüngeprüft am 2026-10-26
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üngeprüft am 2026-10-26
BuildInputTests
test_anderes_feld_liefert_lineedit
Prüft, dass _build_input für ein normales Feld ein leeres Textfeld liefert.grüngeprüft am 2026-10-26

— (Docstring fehlt)

TestStilpruefer 4
flowchart TD
   root(["test_stilpruefer.py"])
   class root rootnode
   root --> g1["TestStilpruefer (4)"]
diff --git a/docs/tests/testkatalog.md b/docs/tests/testkatalog.md
index 970397f..0df1da7 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 `7df562788eb6`)
+Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `119f79e142a0`)
 
-Gesamt: 3 Pakete, 55 Testdateien, 690 Testfälle – 647 grün, 35 rot (Baseline), 8 übersprungen.
-Mit Beschreibung (Docstring): 545 von 690 (79 %).
-Fachlich geprüft: 257 von 690 (37 %) aktuell, 0 veraltet seit Codeänderung, 433 nie geprüft.
+Gesamt: 3 Pakete, 55 Testdateien, 691 Testfälle – 648 grün, 35 rot (Baseline), 8 übersprungen.
+Mit Beschreibung (Docstring): 546 von 691 (79 %).
+Fachlich geprüft: 266 von 691 (38 %) aktuell, 0 veraltet seit Codeänderung, 425 nie geprüft.
 Strukturelle Lücken (heuristisch, Namensabgleich): 160 von 470 (34 %) 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 | 357 | 357 | 0 | 0 | 357 von 357 (100 %) | 257 von 357 (72 %) | 70 von 229 (31 %) |
+| `sn_basis` | 32 | 358 | 358 | 0 | 0 | 358 von 358 (100 %) | 266 von 358 (74 %) | 70 von 229 (31 %) |
 | `sn_verfahrensgebiet` | 18 | 289 | 247 | 34 | 8 | 187 von 289 (65 %) | 0 von 289 (0 %) | 51 von 161 (32 %) |
 | `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | 0 von 44 (0 %) | 39 von 80 (49 %) |
-| **Summe** | **55** | **690** | **647** | **35** | **8** | **545 von 690 (79 %)** | **257 von 690 (37 %)** | **160 von 470 (34 %)** |
+| **Summe** | **55** | **691** | **648** | **35** | **8** | **546 von 691 (79 %)** | **266 von 691 (38 %)** | **160 von 470 (34 %)** |
 
 ### Legende
 
@@ -36,7 +36,7 @@ Strukturelle Lücken (heuristisch, Namensabgleich): 160 von 470 (34 %) Funktione
 
 ## Paket `sn_basis`
 
-Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 357 Testfällen (357 grün, 0 rot, 0 übersprungen).
+Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 358 Testfällen (358 grün, 0 rot, 0 übersprungen).
 
 ### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
 
@@ -683,20 +683,21 @@ Worum es in der Datei geht: Tests für sn_basis/ui/tabs/settings_tab.py::save_da
 
 Testgruppen:
 
-- `SaveDataTests` (2 Testfälle): — (Docstring fehlt)
+- `SaveDataTests` (3 Testfälle): — (Docstring fehlt)
 - `LoadDataTests` (4 Testfälle): — (Docstring fehlt)
 - `BuildInputTests` (2 Testfälle): — (Docstring fehlt)
 
 | 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 |
+| `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 | geprüft am 2026-10-26 |
+| `SaveDataTests.test_platzhalter_speichert_leere_kennzahl_statt_none` | Prüft, dass bei ausgewähltem Platzhalter Landkreisname und Kennzahl als leerer Text gespeichert werden. | grün | geprüft am 2026-10-26 |
+| `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 | geprüft am 2026-10-26 |
+| `LoadDataTests.test_befuellt_textfelder_aus_gespeicherten_daten` | Prüft, dass load_data ein Textfeld mit dem gespeicherten Wert befüllt. | grün | geprüft am 2026-10-26 |
+| `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 | geprüft am 2026-10-26 |
+| `LoadDataTests.test_waehlt_combobox_eintrag_bei_bekanntem_namen` | Prüft, dass load_data im Landkreis-Dropdown den gespeicherten Landkreisnamen auswählt. | grün | geprüft am 2026-10-26 |
+| `LoadDataTests.test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag` | Prüft, dass load_data bei einem nicht mehr vorhandenen Landkreisnamen auf den leeren Platzhalter zurückfällt. | grün | geprüft am 2026-10-26 |
+| `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 | geprüft am 2026-10-26 |
+| `BuildInputTests.test_anderes_feld_liefert_lineedit` | Prüft, dass _build_input für ein normales Feld ein leeres Textfeld liefert. | grün | geprüft am 2026-10-26 |
 
 ### `Plugin_SN_Basis/tests/test_stilpruefer.py`
 
@@ -1442,7 +1443,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 357 Testfällen ohne Beschreibung
+### `sn_basis` – 0 von 358 Testfällen ohne Beschreibung
 
 Keine Lücken.