Skip to content

Commit

Permalink
test: Add Arch tests to verify View interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
TatuLund committed Feb 6, 2025
1 parent ca64247 commit 2b8a7e9
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 9 deletions.
3 changes: 3 additions & 0 deletions vaadincreate-ui/src/main/resources/logback.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,7 @@
<logger name="org.hibernate.type.descriptor.sql" level="info" additivity="false">
<appender-ref ref="STDOUT"/>
</logger>
<logger name="com.tngtech.archunit" level="info" additivity="false">
<appender-ref ref="STDOUT"/>
</logger>
</configuration>
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -37,15 +39,15 @@
* 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
public static final ArchRule Services_are_called_only_by_the_Preseters_UI_and_Auth = classes()
.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.."))
Expand All @@ -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.."))
Expand Down Expand Up @@ -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
Expand All @@ -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"))));

Expand Down Expand Up @@ -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);

}

0 comments on commit 2b8a7e9

Please sign in to comment.