diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 0b47bfb..99a0ab3 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -19,7 +19,8 @@ "Bash(mvn -q test)", "Bash(mvn -q clean test)", "Bash(git add:*)", - "Bash(git commit -m ':*)" + "Bash(git commit -m ':*)", + "Bash(./mvnw.cmd:*)" ] } } diff --git a/pdf-umbenenner-adapter-in-cli/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/cli/SchedulerBatchCommandTest.java b/pdf-umbenenner-adapter-in-cli/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/cli/SchedulerBatchCommandTest.java index 4ac05d7..5945ec3 100644 --- a/pdf-umbenenner-adapter-in-cli/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/cli/SchedulerBatchCommandTest.java +++ b/pdf-umbenenner-adapter-in-cli/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/cli/SchedulerBatchCommandTest.java @@ -1,17 +1,19 @@ package de.gecheckt.pdf.umbenenner.adapter.in.cli; -import de.gecheckt.pdf.umbenenner.adapter.in.cli.SchedulerBatchCommand; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.time.Instant; + +import org.junit.jupiter.api.Test; + import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunProcessingUseCase; import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext; import de.gecheckt.pdf.umbenenner.domain.model.RunId; -import org.junit.jupiter.api.Test; - -import java.time.Instant; - -import static org.junit.jupiter.api.Assertions.*; - /** * Unit tests for {@link SchedulerBatchCommand}. *

diff --git a/pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteUnitOfWorkAdapterTest.java b/pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteUnitOfWorkAdapterTest.java index 8479432..29d842f 100644 --- a/pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteUnitOfWorkAdapterTest.java +++ b/pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteUnitOfWorkAdapterTest.java @@ -1,22 +1,23 @@ package de.gecheckt.pdf.umbenenner.adapter.out.sqlite; -import de.gecheckt.pdf.umbenenner.application.port.out.DocumentPersistenceException; -import de.gecheckt.pdf.umbenenner.application.port.out.DocumentRecord; -import de.gecheckt.pdf.umbenenner.application.port.out.FailureCounters; -import de.gecheckt.pdf.umbenenner.application.port.out.ProcessingAttempt; -import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint; -import de.gecheckt.pdf.umbenenner.domain.model.ProcessingStatus; -import de.gecheckt.pdf.umbenenner.domain.model.RunId; -import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentLocator; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.nio.file.Path; import java.time.Instant; import java.time.temporal.ChronoUnit; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import de.gecheckt.pdf.umbenenner.application.port.out.DocumentPersistenceException; +import de.gecheckt.pdf.umbenenner.application.port.out.DocumentRecord; +import de.gecheckt.pdf.umbenenner.application.port.out.FailureCounters; +import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint; +import de.gecheckt.pdf.umbenenner.domain.model.ProcessingStatus; +import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentLocator; /** * Unit tests for {@link SqliteUnitOfWorkAdapter}. diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/config/StartConfigurationValidator.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/config/StartConfigurationValidator.java index 6277ab0..a49bf94 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/config/StartConfigurationValidator.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/config/StartConfigurationValidator.java @@ -1,13 +1,13 @@ package de.gecheckt.pdf.umbenenner.application.config; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + /** * Validates {@link StartConfiguration} before processing can begin. *

diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/DocumentPersistenceException.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/DocumentPersistenceException.java index 0b2a5ad..75c7721 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/DocumentPersistenceException.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/DocumentPersistenceException.java @@ -27,7 +27,9 @@ package de.gecheckt.pdf.umbenenner.application.port.out; */ public class DocumentPersistenceException extends RuntimeException { - /** + private static final long serialVersionUID = -8362115097253107643L; + + /** * Constructs a new {@code DocumentPersistenceException} with the given message. * * @param message human-readable description of the persistence failure diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/DocumentRecord.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/DocumentRecord.java index 2a88afe..7014072 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/DocumentRecord.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/DocumentRecord.java @@ -1,12 +1,12 @@ package de.gecheckt.pdf.umbenenner.application.port.out; +import java.time.Instant; +import java.util.Objects; + import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint; import de.gecheckt.pdf.umbenenner.domain.model.ProcessingStatus; import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentLocator; -import java.time.Instant; -import java.util.Objects; - /** * Application-facing representation of the document master record (Dokument-Stammsatz). *

diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/FingerprintSuccess.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/FingerprintSuccess.java index 3230b3d..7fda808 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/FingerprintSuccess.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/FingerprintSuccess.java @@ -1,9 +1,9 @@ package de.gecheckt.pdf.umbenenner.application.port.out; -import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint; - import java.util.Objects; +import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint; + /** * Successful outcome of a fingerprint computation. *

diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/ProcessingAttempt.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/ProcessingAttempt.java index 29d0d75..e98c031 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/ProcessingAttempt.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/ProcessingAttempt.java @@ -1,12 +1,12 @@ package de.gecheckt.pdf.umbenenner.application.port.out; +import java.time.Instant; +import java.util.Objects; + import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint; import de.gecheckt.pdf.umbenenner.domain.model.ProcessingStatus; import de.gecheckt.pdf.umbenenner.domain.model.RunId; -import java.time.Instant; -import java.util.Objects; - /** * Application-facing representation of exactly one historised processing attempt * (Versuchshistorie-Eintrag) for an identified document. diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/ProcessingAttemptRepository.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/ProcessingAttemptRepository.java index cd30361..1e7a929 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/ProcessingAttemptRepository.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/ProcessingAttemptRepository.java @@ -1,9 +1,9 @@ package de.gecheckt.pdf.umbenenner.application.port.out; -import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint; - import java.util.List; +import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint; + /** * Outbound port for writing and reading the processing attempt history * (Versuchshistorie). diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/SourceDocumentCandidatesPort.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/SourceDocumentCandidatesPort.java index 39a172b..cb8269e 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/SourceDocumentCandidatesPort.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/SourceDocumentCandidatesPort.java @@ -1,9 +1,9 @@ package de.gecheckt.pdf.umbenenner.application.port.out; -import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; - import java.util.List; +import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; + /** * Outbound port for loading PDF document candidates from the source folder. *

diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/UnitOfWorkPort.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/UnitOfWorkPort.java index 118b400..e2274b1 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/UnitOfWorkPort.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/UnitOfWorkPort.java @@ -1,7 +1,5 @@ package de.gecheckt.pdf.umbenenner.application.port.out; -import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint; - import java.util.function.Consumer; /** diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingService.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingService.java index dcb25bc..b3957c5 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingService.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingService.java @@ -1,17 +1,17 @@ package de.gecheckt.pdf.umbenenner.application.service; +import java.util.Objects; + import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; import de.gecheckt.pdf.umbenenner.domain.model.DocumentProcessingOutcome; -import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailed; -import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailureReason; -import de.gecheckt.pdf.umbenenner.domain.model.TechnicalDocumentError; import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionContentError; import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionResult; import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionSuccess; import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionTechnicalError; +import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailed; +import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailureReason; import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; - -import java.util.Objects; +import de.gecheckt.pdf.umbenenner.domain.model.TechnicalDocumentError; /** * Orchestrates document processing pipeline: extraction → pre-checks → outcome classification. diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/M4DocumentProcessor.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/M4DocumentProcessor.java index 5de5e73..3ec7b90 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/M4DocumentProcessor.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/M4DocumentProcessor.java @@ -1,5 +1,11 @@ package de.gecheckt.pdf.umbenenner.application.service; +import java.time.Instant; +import java.util.Objects; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import de.gecheckt.pdf.umbenenner.application.port.out.DocumentKnownProcessable; import de.gecheckt.pdf.umbenenner.application.port.out.DocumentPersistenceException; import de.gecheckt.pdf.umbenenner.application.port.out.DocumentRecord; @@ -22,12 +28,6 @@ import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentLocator; import de.gecheckt.pdf.umbenenner.domain.model.TechnicalDocumentError; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.time.Instant; -import java.util.Objects; - /** * Application-level service that implements the M4 per-document processing logic. *

diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/PreCheckEvaluator.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/PreCheckEvaluator.java index cd2fa04..206356e 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/PreCheckEvaluator.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/PreCheckEvaluator.java @@ -1,15 +1,15 @@ package de.gecheckt.pdf.umbenenner.application.service; +import java.util.Objects; + import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; import de.gecheckt.pdf.umbenenner.domain.model.DocumentProcessingOutcome; -import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailureReason; -import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailed; -import de.gecheckt.pdf.umbenenner.domain.model.PreCheckPassed; import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionSuccess; +import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailed; +import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailureReason; +import de.gecheckt.pdf.umbenenner.domain.model.PreCheckPassed; import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; -import java.util.Objects; - /** * Evaluates whether a successfully extracted PDF passes pre-checks. *

diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/usecase/DefaultBatchRunProcessingUseCase.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/usecase/DefaultBatchRunProcessingUseCase.java index f5814eb..ed6824b 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/usecase/DefaultBatchRunProcessingUseCase.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/usecase/DefaultBatchRunProcessingUseCase.java @@ -1,5 +1,12 @@ package de.gecheckt.pdf.umbenenner.application.usecase; +import java.time.Instant; +import java.util.List; +import java.util.Objects; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunProcessingUseCase; @@ -20,13 +27,6 @@ import de.gecheckt.pdf.umbenenner.domain.model.DocumentProcessingOutcome; import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionResult; import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.time.Instant; -import java.util.List; -import java.util.Objects; - /** * Batch processing implementation of {@link BatchRunProcessingUseCase}. *

diff --git a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/config/StartConfigurationValidatorTest.java b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/config/StartConfigurationValidatorTest.java index 0d70e83..9638a85 100644 --- a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/config/StartConfigurationValidatorTest.java +++ b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/config/StartConfigurationValidatorTest.java @@ -1,13 +1,15 @@ package de.gecheckt.pdf.umbenenner.application.config; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.net.URI; import java.nio.file.Files; import java.nio.file.Path; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; /** * Unit tests for {@link StartConfigurationValidator}. diff --git a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/port/in/BatchRunOutcomeTest.java b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/port/in/BatchRunOutcomeTest.java index f8a09a7..66ca5fa 100644 --- a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/port/in/BatchRunOutcomeTest.java +++ b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/port/in/BatchRunOutcomeTest.java @@ -1,8 +1,14 @@ package de.gecheckt.pdf.umbenenner.application.port.in; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotSame; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; /** * Unit tests for {@link BatchRunOutcome} enumeration. diff --git a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingServiceTest.java b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingServiceTest.java index 52a4718..8f2c486 100644 --- a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingServiceTest.java +++ b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingServiceTest.java @@ -1,27 +1,31 @@ package de.gecheckt.pdf.umbenenner.application.service; -import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; -import de.gecheckt.pdf.umbenenner.domain.model.DocumentProcessingOutcome; -import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailed; -import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailureReason; -import de.gecheckt.pdf.umbenenner.domain.model.PreCheckPassed; -import de.gecheckt.pdf.umbenenner.domain.model.TechnicalDocumentError; -import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionContentError; -import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionSuccess; -import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionTechnicalError; -import de.gecheckt.pdf.umbenenner.domain.model.PdfPageCount; -import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; -import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentLocator; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.net.URI; import java.nio.file.Files; import java.nio.file.Path; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; +import de.gecheckt.pdf.umbenenner.domain.model.DocumentProcessingOutcome; +import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionContentError; +import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionSuccess; +import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionTechnicalError; +import de.gecheckt.pdf.umbenenner.domain.model.PdfPageCount; +import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailed; +import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailureReason; +import de.gecheckt.pdf.umbenenner.domain.model.PreCheckPassed; +import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; +import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentLocator; +import de.gecheckt.pdf.umbenenner.domain.model.TechnicalDocumentError; /** * Tests for {@link DocumentProcessingService}. diff --git a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/M4DocumentProcessorTest.java b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/M4DocumentProcessorTest.java index bd5b33d..307df23 100644 --- a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/M4DocumentProcessorTest.java +++ b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/M4DocumentProcessorTest.java @@ -1,5 +1,20 @@ package de.gecheckt.pdf.umbenenner.application.service; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + import de.gecheckt.pdf.umbenenner.application.port.out.DocumentKnownProcessable; import de.gecheckt.pdf.umbenenner.application.port.out.DocumentPersistenceException; import de.gecheckt.pdf.umbenenner.application.port.out.DocumentRecord; @@ -27,16 +42,6 @@ import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentLocator; import de.gecheckt.pdf.umbenenner.domain.model.TechnicalDocumentError; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.time.Instant; -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; - -import static org.junit.jupiter.api.Assertions.*; - /** * Unit tests for {@link M4DocumentProcessor}. *

diff --git a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/PreCheckEvaluatorTest.java b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/PreCheckEvaluatorTest.java index 8ba1820..698860a 100644 --- a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/PreCheckEvaluatorTest.java +++ b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/PreCheckEvaluatorTest.java @@ -1,23 +1,27 @@ package de.gecheckt.pdf.umbenenner.application.service; -import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; -import de.gecheckt.pdf.umbenenner.domain.model.DocumentProcessingOutcome; -import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailed; -import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailureReason; -import de.gecheckt.pdf.umbenenner.domain.model.PreCheckPassed; -import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionSuccess; -import de.gecheckt.pdf.umbenenner.domain.model.PdfPageCount; -import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; -import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentLocator; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.net.URI; import java.nio.file.Files; import java.nio.file.Path; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; +import de.gecheckt.pdf.umbenenner.domain.model.DocumentProcessingOutcome; +import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionSuccess; +import de.gecheckt.pdf.umbenenner.domain.model.PdfPageCount; +import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailed; +import de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailureReason; +import de.gecheckt.pdf.umbenenner.domain.model.PreCheckPassed; +import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; +import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentLocator; /** * Tests for {@link PreCheckEvaluator}. diff --git a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/usecase/BatchRunProcessingUseCaseTest.java b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/usecase/BatchRunProcessingUseCaseTest.java index c079a7a..66f11e6 100644 --- a/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/usecase/BatchRunProcessingUseCaseTest.java +++ b/pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/usecase/BatchRunProcessingUseCaseTest.java @@ -1,5 +1,21 @@ package de.gecheckt.pdf.umbenenner.application.usecase; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.Path; +import java.time.Instant; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome; import de.gecheckt.pdf.umbenenner.application.port.out.DocumentRecord; @@ -30,20 +46,6 @@ import de.gecheckt.pdf.umbenenner.domain.model.RunId; import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentLocator; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; - -import java.net.URI; -import java.nio.file.Files; -import java.nio.file.Path; -import java.time.Instant; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -import static org.junit.jupiter.api.Assertions.*; - /** * Tests for {@link DefaultBatchRunProcessingUseCase}. *

diff --git a/pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunner.java b/pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunner.java index 4b0effe..2fa09f8 100644 --- a/pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunner.java +++ b/pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunner.java @@ -16,6 +16,7 @@ import de.gecheckt.pdf.umbenenner.adapter.out.pdfextraction.PdfTextExtractionPor import de.gecheckt.pdf.umbenenner.adapter.out.sourcedocument.SourceDocumentCandidatesPortAdapter; import de.gecheckt.pdf.umbenenner.adapter.out.sqlite.SqliteDocumentRecordRepositoryAdapter; import de.gecheckt.pdf.umbenenner.adapter.out.sqlite.SqliteProcessingAttemptRepositoryAdapter; +import de.gecheckt.pdf.umbenenner.adapter.out.sqlite.SqliteSchemaInitializationAdapter; import de.gecheckt.pdf.umbenenner.adapter.out.sqlite.SqliteUnitOfWorkAdapter; import de.gecheckt.pdf.umbenenner.application.config.InvalidStartConfigurationException; import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; @@ -26,6 +27,7 @@ import de.gecheckt.pdf.umbenenner.application.port.out.ConfigurationPort; import de.gecheckt.pdf.umbenenner.application.port.out.DocumentPersistenceException; import de.gecheckt.pdf.umbenenner.application.port.out.DocumentRecordRepository; import de.gecheckt.pdf.umbenenner.application.port.out.FingerprintPort; +import de.gecheckt.pdf.umbenenner.application.port.out.PersistenceSchemaInitializationPort; import de.gecheckt.pdf.umbenenner.application.port.out.ProcessingAttemptRepository; import de.gecheckt.pdf.umbenenner.application.port.out.RunLockPort; import de.gecheckt.pdf.umbenenner.application.port.out.UnitOfWorkPort; @@ -40,6 +42,7 @@ import de.gecheckt.pdf.umbenenner.domain.model.RunId; * Responsibilities: *

    *
  1. Load and validate the startup configuration.
  2. + *
  3. Initialise the SQLite persistence schema (M4-AP-007).
  4. *
  5. Resolve the run-lock file path (with default fallback).
  6. *
  7. Create and wire all ports and adapters via configured factories.
  8. *
  9. Start the CLI adapter and execute the batch use case.
  10. @@ -56,19 +59,22 @@ import de.gecheckt.pdf.umbenenner.domain.model.RunId; * during the run. * * - *

    M4 wiring (AP-006)

    + *

    M4 wiring (AP-006 / AP-007)

    *

    - * The production constructor wires the following M4 adapters via the UseCaseFactory: + * The production constructor wires the following M4 adapters: *

    *

    - * Schema initialisation is AP-007 responsibility, not performed in AP-006. + * Schema initialisation is performed once in {@link #run()} before the batch loop starts + * (AP-007). A {@link DocumentPersistenceException} during schema initialisation is treated + * as a hard startup failure and results in exit code 1. * - * @since M2 (extended in M4-AP-006) + * @since M2 (extended in M4-AP-006, M4-AP-007) */ public class BootstrapRunner { @@ -134,12 +140,14 @@ public class BootstrapRunner { *

  11. {@link SourceDocumentCandidatesPortAdapter} for PDF candidate discovery.
  12. *
  13. {@link PdfTextExtractionPortAdapter} for PDFBox-based text and page count extraction.
  14. *
  15. {@link Sha256FingerprintAdapter} for SHA-256 content fingerprinting.
  16. + *
  17. {@link SqliteSchemaInitializationAdapter} for SQLite schema DDL at startup (AP-007).
  18. *
  19. {@link SqliteDocumentRecordRepositoryAdapter} for document master record CRUD.
  20. *
  21. {@link SqliteProcessingAttemptRepositoryAdapter} for attempt history CRUD.
  22. *
  23. {@link SqliteUnitOfWorkAdapter} for atomic persistence operations.
  24. * *

    - * Schema initialisation is AP-007 responsibility and is NOT performed here. + * Schema initialisation is performed explicitly in {@link #run()} before the batch loop + * begins (AP-007). Failure during initialisation aborts the run with exit code 1. */ public BootstrapRunner() { this.configPortFactory = PropertiesConfigurationPortAdapter::new; @@ -191,13 +199,27 @@ public class BootstrapRunner { /** * Runs the application startup sequence. *

    - * M4 additions: - *

    + * M4 startup flow (AP-007): + *
      + *
    1. Load configuration via {@link ConfigurationPort}.
    2. + *
    3. Validate the configuration via {@link StartConfigurationValidator}; validation + * includes checking that the {@code sqlite.file} parent directory exists or is + * technically creatable.
    4. + *
    5. Initialise the SQLite persistence schema explicitly via + * {@link PersistenceSchemaInitializationPort}. This step happens once, before the + * batch document loop begins. A {@link DocumentPersistenceException} here is a hard + * startup failure and causes exit code 1.
    6. + *
    7. Resolve the run-lock file path, apply default if not configured.
    8. + *
    9. Create the batch use case with all M4 adapters wired.
    10. + *
    11. Execute the CLI command and map the outcome to an exit code.
    12. + *
    + *

    + * Document-level failures during the batch loop (step 6) are not startup failures and + * do not change the exit code as long as the run itself completes without a hard + * infrastructure error. * - * @return exit code: 0 for success, 1 for invalid configuration or unexpected bootstrap failure + * @return exit code: 0 for a technically completed run, 1 for any hard startup or + * bootstrap failure (configuration invalid, schema init failed, etc.) */ public int run() { LOG.info("Bootstrap flow started."); @@ -208,11 +230,18 @@ public class BootstrapRunner { // Step 2: Load configuration var config = configPort.loadConfiguration(); - // Step 3: Validate configuration + // Step 3: Validate configuration. + // Includes checking that sqlite.file parent directory exists or is creatable. StartConfigurationValidator validator = validatorFactory.create(); validator.validate(config); - // Step 4: Resolve lock file path – apply default if not configured + // Step 4 (M4-AP-007): Initialise SQLite persistence schema before the batch loop. + // Must happen once at startup; failure here is a hard bootstrap error → exit code 1. + String jdbcUrl = buildJdbcUrl(config); + PersistenceSchemaInitializationPort schemaInitPort = new SqliteSchemaInitializationAdapter(jdbcUrl); + schemaInitPort.initializeSchema(); + + // Step 5: Resolve lock file path – apply default if not configured Path lockFilePath = config.runtimeLockFile(); if (lockFilePath == null || lockFilePath.toString().isBlank()) { lockFilePath = Paths.get("pdf-umbenenner.lock"); @@ -221,21 +250,20 @@ public class BootstrapRunner { } RunLockPort runLockPort = runLockPortFactory.create(lockFilePath); - // Step 5: Create the batch run context + // Step 6: Create the batch run context RunId runId = new RunId(UUID.randomUUID().toString()); BatchRunContext runContext = new BatchRunContext(runId, Instant.now()); LOG.info("Batch run started. RunId: {}", runId); - // Step 6: Create the use case with the validated config and run lock. + // Step 7: Create the use case with the validated config and run lock. // Config is passed directly; the use case does not re-read the properties file. // Adapters (source document port, PDF extraction port, M4 ports) are wired by the factory. - // Schema initialization is AP-007 responsibility, not performed in AP-006. BatchRunProcessingUseCase useCase = useCaseFactory.create(config, runLockPort); - // Step 7: Create the CLI command adapter with the use case + // Step 8: Create the CLI command adapter with the use case SchedulerBatchCommand command = commandFactory.create(useCase); - // Step 8: Execute the command with the run context and handle the outcome + // Step 9: Execute the command with the run context and handle the outcome BatchRunOutcome outcome = command.run(runContext); // Mark run as completed diff --git a/pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/package-info.java b/pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/package-info.java index e9c23f9..cea14bb 100644 --- a/pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/package-info.java +++ b/pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/package-info.java @@ -25,5 +25,9 @@ * AP-005: CLI adapter and complete M2 object graph wiring. *

    * AP-006: Wires FilesystemRunLockPortAdapter (adapter-out) from validated config; retired temporary no-op lock. + *

    + * M4-AP-007: Schema initialisation wired — {@code SqliteSchemaInitializationAdapter.initializeSchema()} is + * called explicitly in {@code BootstrapRunner.run()} after configuration validation and before the batch + * document loop. A {@code DocumentPersistenceException} during initialisation aborts the run with exit code 1. */ package de.gecheckt.pdf.umbenenner.bootstrap; \ No newline at end of file diff --git a/pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunnerTest.java b/pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunnerTest.java index 86529d4..3a40a23 100644 --- a/pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunnerTest.java +++ b/pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunnerTest.java @@ -1,5 +1,18 @@ package de.gecheckt.pdf.umbenenner.bootstrap; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.concurrent.atomic.AtomicReference; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + import de.gecheckt.pdf.umbenenner.adapter.in.cli.SchedulerBatchCommand; import de.gecheckt.pdf.umbenenner.application.config.InvalidStartConfigurationException; import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; @@ -10,17 +23,6 @@ import de.gecheckt.pdf.umbenenner.application.port.out.ConfigurationPort; import de.gecheckt.pdf.umbenenner.application.port.out.RunLockPort; import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; - -import java.net.URI; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.concurrent.atomic.AtomicReference; - -import static org.junit.jupiter.api.Assertions.*; - /** * Unit tests for {@link BootstrapRunner}. *

    diff --git a/pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/ExecutableJarSmokeTestIT.java b/pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/ExecutableJarSmokeTestIT.java index 2f41635..61fb94f 100644 --- a/pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/ExecutableJarSmokeTestIT.java +++ b/pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/ExecutableJarSmokeTestIT.java @@ -1,7 +1,8 @@ package de.gecheckt.pdf.umbenenner.bootstrap; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; import java.nio.file.Files; @@ -10,7 +11,8 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; /** * AP-008: Executable JAR smoke tests for M1 target state verification. diff --git a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/BatchRunContextTest.java b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/BatchRunContextTest.java index 70075ea..f9eb4de 100644 --- a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/BatchRunContextTest.java +++ b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/BatchRunContextTest.java @@ -1,10 +1,15 @@ package de.gecheckt.pdf.umbenenner.domain.model; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.time.Instant; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; /** * Unit tests for {@link BatchRunContext}. diff --git a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/DocumentProcessingOutcomeTest.java b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/DocumentProcessingOutcomeTest.java index 68e9256..6a08380 100644 --- a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/DocumentProcessingOutcomeTest.java +++ b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/DocumentProcessingOutcomeTest.java @@ -1,13 +1,16 @@ package de.gecheckt.pdf.umbenenner.domain.model; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.nio.file.Files; import java.nio.file.Path; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; /** * Tests for document processing outcome types. diff --git a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/PdfPageCountTest.java b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/PdfPageCountTest.java index ca5a461..0b7f694 100644 --- a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/PdfPageCountTest.java +++ b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/PdfPageCountTest.java @@ -1,7 +1,12 @@ package de.gecheckt.pdf.umbenenner.domain.model; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; /** * Tests for PdfPageCount record. diff --git a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/PreCheckFailureReasonTest.java b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/PreCheckFailureReasonTest.java index 5fa5253..3b7969b 100644 --- a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/PreCheckFailureReasonTest.java +++ b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/PreCheckFailureReasonTest.java @@ -1,8 +1,13 @@ package de.gecheckt.pdf.umbenenner.domain.model; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; /** * Tests for {@link PreCheckFailureReason}. diff --git a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/ProcessingStatusTest.java b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/ProcessingStatusTest.java index dc0f510..d5a4ee7 100644 --- a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/ProcessingStatusTest.java +++ b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/ProcessingStatusTest.java @@ -1,8 +1,10 @@ package de.gecheckt.pdf.umbenenner.domain.model; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotSame; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; /** * Unit tests for {@link ProcessingStatus} enumeration. diff --git a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/RunIdTest.java b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/RunIdTest.java index 4f5a001..8a760a8 100644 --- a/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/RunIdTest.java +++ b/pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/RunIdTest.java @@ -1,8 +1,11 @@ package de.gecheckt.pdf.umbenenner.domain.model; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; /** * Unit tests for {@link RunId} value object.