From c7f53416caefb84aa53100523f13ac975b630cd9 Mon Sep 17 00:00:00 2001 From: Marcus van Elst Date: Wed, 22 Apr 2026 17:13:33 +0200 Subject: [PATCH] Ergaenze fehlende Tests fuer SKIPPED-Statusdurchleitung im GUI-Adapter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fehlende Testabdeckung fuer den SKIPPED-Pfad: Der Coordinator-Test verifiziert jetzt, dass SKIPPED-Events als row:SKIPPED:... dispatcht werden und korrekt in der Zusammenfassung gezaehlt werden. Der Smoke-Test prueft zusaetzlich, dass die ► Icon (nicht ✘) fuer SKIPPED-Zeilen in der Ergebnistabelle erscheint. Co-Authored-By: Claude Sonnet 4.6 --- .../batchrun/GuiBatchRunCoordinatorTest.java | 38 +++++++++++++++++++ .../gui/batchrun/GuiBatchRunTabSmokeTest.java | 5 +++ 2 files changed, 43 insertions(+) diff --git a/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunCoordinatorTest.java b/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunCoordinatorTest.java index ad66274..e564c9a 100644 --- a/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunCoordinatorTest.java +++ b/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunCoordinatorTest.java @@ -96,6 +96,44 @@ class GuiBatchRunCoordinatorTest { assertFalse(coordinator.isRunning()); } + @Test + void skippedDocument_dispatchesSkippedRowAndCountsCorrectly() { + List events = new ArrayList<>(); + GuiBatchRunCoordinator.Listener listener = new GuiBatchRunCoordinator.Listener() { + @Override public void onRunStarted(RunId runId, int totalCandidates) { + events.add("started:" + totalCandidates); + } + @Override public void onDocumentCompleted(GuiBatchRunResultRow row) { + events.add("row:" + row.status() + ":" + row.originalFileName()); + } + @Override public void onRunEnded(RunSummary summary, GuiBatchRunLaunchOutcome outcome) { + events.add("ended:started=" + outcome.successfullyStarted() + + ",completed=" + outcome.batchCompletedNormally() + + ",summary=" + summary.successCount() + "/" + summary.failedCount() + + "/" + summary.skippedCount()); + } + }; + GuiBatchRunLauncher launcher = (configPath, observer, token) -> { + observer.onRunStarted(new RunId("run-skip"), 1); + observer.onDocumentCompleted(new DocumentCompletionEvent( + "c.pdf", DocumentCompletionStatus.SKIPPED, + null, null, null, Duration.ofMillis(5))); + observer.onRunEnded(new RunSummary(0, 0, 1)); + return GuiBatchRunLaunchOutcome.completed(); + }; + GuiBatchRunCoordinator coordinator = new GuiBatchRunCoordinator( + launcher, syncThreadFactory(), syncDispatcher(), listener); + + boolean started = coordinator.start(ANY_CONFIG); + assertTrue(started); + + assertEquals(List.of( + "started:1", + "row:SKIPPED:c.pdf", + "ended:started=true,completed=true,summary=0/0/1"), events); + assertFalse(coordinator.isRunning()); + } + @Test void startWhileRunning_returnsFalseWithoutDoubleDispatch() { // Launcher installs a rendezvous so the first run is still "running" while we diff --git a/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTabSmokeTest.java b/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTabSmokeTest.java index 4a11fce..3606c97 100644 --- a/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTabSmokeTest.java +++ b/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTabSmokeTest.java @@ -137,6 +137,11 @@ class GuiBatchRunTabSmokeTest { // Clicking a row without reasoning shows the no-reasoning placeholder. tab().resultTable().getSelectionModel().select(1); assertTrue(tab().detailArea().getText().contains(GuiBatchRunTab.NO_REASONING_TEXT)); + + // SKIPPED row must carry the ► icon, not ✘. + GuiBatchRunResultRow skippedRow = tab().resultTable().getItems().get(2); + assertEquals(DocumentCompletionStatus.SKIPPED, skippedRow.status()); + assertEquals("\u25BA", skippedRow.statusIcon()); }); }