From 09813552478fa39ff4e8adff123aa300c08a547e Mon Sep 17 00:00:00 2001 From: Marcel Date: Tue, 5 May 2026 17:59:08 +0200 Subject: [PATCH] test(archunit): add Rule 2 coverage for importing and audit domains MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MassImportService delegates to other domain services (no direct repo access), and AuditService only touches its own AuditLogRepository — both pass the boundary rule cleanly. Closes the known hole flagged by Sara and Markus in PR #428. Co-Authored-By: Claude Sonnet 4.6 --- .../familienarchiv/shared/ArchitectureTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/backend/src/test/java/org/raddatz/familienarchiv/shared/ArchitectureTest.java b/backend/src/test/java/org/raddatz/familienarchiv/shared/ArchitectureTest.java index 9ec21149..809da1fc 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/shared/ArchitectureTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/shared/ArchitectureTest.java @@ -86,6 +86,20 @@ class ArchitectureTest { .and().resideInAPackage("..ocr..") .should().dependOnClassesThat(foreignJpaRepositoryFor("ocr")); + @ArchTest + static final ArchRule services_only_access_own_domain_repositories_importing = + noClasses() + .that().areAnnotatedWith(Service.class) + .and().resideInAPackage("..importing..") + .should().dependOnClassesThat(foreignJpaRepositoryFor("importing")); + + @ArchTest + static final ArchRule services_only_access_own_domain_repositories_audit = + noClasses() + .that().areAnnotatedWith(Service.class) + .and().resideInAPackage("..audit..") + .should().dependOnClassesThat(foreignJpaRepositoryFor("audit")); + // Rule 3: Infrastructure @Configuration classes must not end up scattered in domain packages. // Keeps cross-cutting setup (security, async, DB, storage) in dedicated packages // where it can be audited and reasoned about independently.