From 7dc1414e76033089f4cbe06c1d1f8b9ebb51b384 Mon Sep 17 00:00:00 2001 From: XXNitram Date: Tue, 10 Mar 2020 16:44:15 +0100 Subject: [PATCH] Add tests for Domain Architecture in DomainTest --- .../gruppen2/architecture/DomainTest.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/test/java/mops/gruppen2/architecture/DomainTest.java diff --git a/src/test/java/mops/gruppen2/architecture/DomainTest.java b/src/test/java/mops/gruppen2/architecture/DomainTest.java new file mode 100644 index 0000000..7340f80 --- /dev/null +++ b/src/test/java/mops/gruppen2/architecture/DomainTest.java @@ -0,0 +1,50 @@ +package mops.gruppen2.architecture; + +import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchIgnore; +import com.tngtech.archunit.junit.ArchTest; +import com.tngtech.archunit.lang.ArchRule; + +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses; + +@AnalyzeClasses(packages = "mops.gruppen2", importOptions = { ImportOption.DoNotIncludeTests.class }) +public class DomainTest { + + @ArchTest + public static final ArchRule domainClassesShouldNotAccessClassesFromOtherPackagesExceptDomainItself = noClasses() + .that().resideInAPackage("..domain..") + .should().accessClassesThat().resideInAnyPackage("..controller..", "..repository..", "..security..", "..service.."); + + @ArchTest + public static final ArchRule eventClassesShouldBeInEventPackage = classes() + .that().haveSimpleNameEndingWith("Event") + .should().resideInAPackage("..domain.event.."); + + @ArchTest + public static final ArchRule classesInEventPackageShouldHaveEventInName = classes() + .that().resideInAPackage("..domain.event..") + .should().haveSimpleNameEndingWith("Event"); + + @ArchTest + public static final ArchRule exceptionClassesShouldBeInExceptionPackage = classes() + .that().haveSimpleNameEndingWith("Exception") + .should().resideInAPackage("..domain.Exceptions.."); + + @ArchTest + public static final ArchRule classesInExceptionPackageShouldHaveExceptionInName = classes() + .that().resideInAPackage("..domain.Exceptions..") + .should().haveSimpleNameEndingWith("Exception"); + + @ArchTest + public static final ArchRule classesThatAreAssignableToExceptionShouldHaveExceptionInName = classes() + .that().areAssignableTo(Exception.class) + .should().haveSimpleNameEndingWith("Exception"); + + @ArchTest + public static final ArchRule classesThatHaveExceptionInNameShouldBeAssignableToExceptionClass = classes() + .that().haveSimpleNameEndingWith("Exception") + .should().beAssignableTo(Exception.class); + +}