From 2b8a7e98e4bcb318c6c35e91d476c6a1dade7d8e Mon Sep 17 00:00:00 2001 From: "TatuWorkLenovo\\Tatu" Date: Thu, 6 Feb 2025 13:56:11 +0200 Subject: [PATCH] test: Add Arch tests to verify View interfaces --- .../src/main/resources/logback.xml | 3 ++ .../tatu/vaadincreate/ArchitectureTest.java | 29 +++++++++++++------ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/vaadincreate-ui/src/main/resources/logback.xml b/vaadincreate-ui/src/main/resources/logback.xml index 6c9c16f..35fec04 100644 --- a/vaadincreate-ui/src/main/resources/logback.xml +++ b/vaadincreate-ui/src/main/resources/logback.xml @@ -21,4 +21,7 @@ + + + \ No newline at end of file diff --git a/vaadincreate-ui/src/test/java/org/vaadin/tatu/vaadincreate/ArchitectureTest.java b/vaadincreate-ui/src/test/java/org/vaadin/tatu/vaadincreate/ArchitectureTest.java index b79399b..afb5dab 100644 --- a/vaadincreate-ui/src/test/java/org/vaadin/tatu/vaadincreate/ArchitectureTest.java +++ b/vaadincreate-ui/src/test/java/org/vaadin/tatu/vaadincreate/ArchitectureTest.java @@ -16,8 +16,10 @@ import org.vaadin.tatu.vaadincreate.auth.AllPermitted; import org.vaadin.tatu.vaadincreate.auth.RolesPermitted; import org.vaadin.tatu.vaadincreate.backend.dao.HibernateUtil; +import org.vaadin.tatu.vaadincreate.i18n.HasI18N; import org.vaadin.tatu.vaadincreate.i18n.I18n; +import com.tngtech.archunit.core.importer.ImportOption; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.ArchUnitRunner; @@ -37,7 +39,8 @@ * of the lockedobjects package. */ @RunWith(ArchUnitRunner.class) -@AnalyzeClasses(packages = { "org.vaadin.tatu.vaadincreate", "com.vaadin" }) +@AnalyzeClasses(packages = { "org.vaadin.tatu.vaadincreate", + "com.vaadin" }, importOptions = ImportOption.DoNotIncludeTests.class) public class ArchitectureTest { @ArchTest @@ -45,7 +48,6 @@ public class ArchitectureTest { .that().resideInAPackage("..backend..").and() .haveSimpleNameEndingWith("Service").should().onlyBeAccessed() .byClassesThat(have(simpleNameEndingWith("Presenter")) - .or(have(simpleNameEndingWith("Test"))) .or(have(simpleName("VaadinCreateUI"))) .or(have(simpleName("AboutView"))) .or(resideInAPackage("..auth..")) @@ -57,7 +59,6 @@ public class ArchitectureTest { .that().resideInAPackage("..vaadincreate.eventbus..").should() .onlyBeAccessed() .byClassesThat(have(simpleNameEndingWith("Presenter")) - .or(have(simpleNameEndingWith("Test"))) .or(have(simpleName("VaadinCreateUI"))) .or(have(simpleName("AboutView"))) .or(resideInAPackage("..eventbus..")) @@ -108,16 +109,14 @@ public class ArchitectureTest { @ArchTest public static final ArchRule AppLayout_should_be_used_only_by_VaadinCreateUI = classes() .that().haveSimpleName("AppLayout").should().onlyBeAccessed() - .byClassesThat(have(simpleNameEndingWith("Test")) - .or(have(simpleName("VaadinCreateUI"))) + .byClassesThat(have(simpleName("VaadinCreateUI")) .or(have(simpleName("AppLayout")) .or(belongTo(simpleName("AppLayout"))))); @ArchTest public static final ArchRule LoginView_should_be_used_only_by_VaadinCreateUI = classes() .that().haveSimpleName("LoginView").should().onlyBeAccessed() - .byClassesThat(have(simpleNameEndingWith("Test")) - .or(have(simpleName("VaadinCreateUI"))) + .byClassesThat(have(simpleName("VaadinCreateUI")) .or(have(simpleName("LoginView")))); @ArchTest @@ -129,8 +128,7 @@ public class ArchitectureTest { public static final ArchRule BasicAccessControl_should_be_used_only_by_auth = classes() .that().haveSimpleName("BasicAccessControl").should() .onlyBeAccessed() - .byClassesThat(simpleNameEndingWith("Test") - .or(have(simpleName("AccessControl"))) + .byClassesThat(have(simpleName("AccessControl")) .or(have(simpleName("VaadinCreateUI"))) .or(have(simpleName("BasicAccessControl")))); @@ -175,4 +173,17 @@ public class ArchitectureTest { resideInAPackage("org.vaadin.tatu.vaadincreate.util")) .should().beStatic(); + @ArchTest + public static final ArchRule views_should_implement_View_or_Tabview = classes() + .that().areNotInterfaces().and() + .resideInAPackage("org.vaadin.tatu.vaadincreate").and() + .haveSimpleNameEndingWith("View").should() + .implement(simpleName("View").or(simpleName("TabView"))); + + @ArchTest + public static final ArchRule views_should_implement_HasI18n = classes() + .that().areNotInterfaces().and() + .resideInAPackage("org.vaadin.tatu.vaadincreate").and() + .haveSimpleNameEndingWith("View").should().implement(HasI18N.class); + }