From 4f619c6963b5cc0e257e395132d4a531b568f461 Mon Sep 17 00:00:00 2001 From: XXNitram Date: Tue, 10 Mar 2020 16:44:58 +0100 Subject: [PATCH] Add tests for Service Architecture in ServiceTest --- .../gruppen2/architecture/ServiceTest.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/test/java/mops/gruppen2/architecture/ServiceTest.java diff --git a/src/test/java/mops/gruppen2/architecture/ServiceTest.java b/src/test/java/mops/gruppen2/architecture/ServiceTest.java new file mode 100644 index 0000000..514ffa2 --- /dev/null +++ b/src/test/java/mops/gruppen2/architecture/ServiceTest.java @@ -0,0 +1,39 @@ +package mops.gruppen2.architecture; + +import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchTest; +import com.tngtech.archunit.lang.ArchRule; +import org.springframework.stereotype.Service; + +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; + +@AnalyzeClasses(packages = "mops.gruppen2", importOptions = { ImportOption.DoNotIncludeTests.class }) +public class ServiceTest { + + @ArchTest + public static final ArchRule serviceClassesShouldHaveServiceInName = classes() + .that().areAnnotatedWith(Service.class) + .should().haveSimpleNameEndingWith("Service"); + + @ArchTest + public static final ArchRule serviceClassesShouldBeAnnotatedWithService = classes() + .that().haveSimpleNameEndingWith("Service") + .should().beAnnotatedWith(Service.class); + + @ArchTest + public static final ArchRule serviceClassesShouldBeInServicePackage = classes() + .that().areAnnotatedWith(Service.class) + .should().resideInAPackage("..service.."); + + @ArchTest + public static final ArchRule classesInServicePackageShouldHaveServiceInName = classes() + .that().resideInAPackage("..service..") + .should().haveSimpleNameEndingWith("Service"); + + @ArchTest + public static final ArchRule serviceClassesShouldOnlyBeAccessedByControllerOrServiceClasses = classes() + .that().resideInAPackage("..service..") + .should().onlyBeAccessed().byAnyPackage("..controller..", "..service.."); + +}