Skip to content

Commit

Permalink
Remove empty contexts
Browse files Browse the repository at this point in the history
  • Loading branch information
onepunchmagne committed Sep 22, 2022
1 parent ba3442a commit 814712a
Show file tree
Hide file tree
Showing 19 changed files with 59 additions and 55 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package tech.jhipster.lite.generator.server.springboot.apidocumentation.springdocoauth.infrascture.primary;
package tech.jhipster.lite.generator.server.springboot.apidocumentation.springdocoauth.infrastructure.primary;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

2 changes: 1 addition & 1 deletion src/main/java/tech/jhipster/lite/project/package-info.java
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
@tech.jhipster.lite.BusinessContext
@tech.jhipster.lite.SharedKernel
package tech.jhipster.lite.project;
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
@tech.jhipster.lite.BusinessContext
@tech.jhipster.lite.SharedKernel
package tech.jhipster.lite.technical;
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses;
import com.tngtech.archunit.core.domain.JavaClasses;
import com.tngtech.archunit.core.importer.ClassFileImporter;
import com.tngtech.archunit.core.importer.ImportOption;
import com.tngtech.archunit.library.Architectures;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.nio.file.Files;
Expand Down Expand Up @@ -104,7 +105,21 @@ class HexagonalArchTest {
}

@Test
//TODO https://github.com/TNG/ArchUnit/commit/fbca4c92c2432ce26d35e33295a530861dbb2c21 calls to itself should be ignored in 1.0.0-rc1 but still failing
void shouldBeAnOnionArchitecture() {
businessContexts.forEach(context -> {
Architectures
.onionArchitecture()
.withOptionalLayers(true)
.domainModels(context + ".domain..")
.domainServices(context + ".domain..")
.applicationServices(context + ".application..")
.adapter("infrastructure", context + ".infrastructure..", context + ".infrastructure.secondary..")
.because("Each bounded context should implement an onion architecture")
.check(classes);
});
}

@Test
void primaryJavaAdaptersShouldOnlyBeCalledFromSecondaries() {
classes()
.that()
Expand All @@ -114,10 +129,11 @@ class HexagonalArchTest {
.and()
.haveSimpleNameStartingWith("Java")
.should()
.onlyBeAccessed()
.byClassesThat()
.onlyHaveDependentClassesThat()
.resideInAPackage("..secondary..")
.because("To interact between two contexts, secondary from context A should call a primary Java adapter (naming convention starting with 'Java') from context B")
.because(
"To interact between two contexts, secondary from context 'A' should call a primary Java adapter (naming convention starting with 'Java') from context 'B'"
)
.check(classes);
}

Expand Down Expand Up @@ -154,14 +170,14 @@ class HexagonalArchTest {
.resideInAPackage(".domain..")
.should()
.onlyDependOnClassesThat()
.resideInAnyPackage(authorizedContextPackages(".domain.."))
.resideInAnyPackage(authorizedDomainPackages())
.because("Domain model should only depend on himself and a very limited set of external dependencies")
.check(classes);
}

private String[] authorizedContextPackages(String packageName) {
private String[] authorizedDomainPackages() {
return Stream
.of(List.of(packageName), vanillaPackages, commonToolsAndUtilsPackages, sharedKernelsPackages)
.of(List.of(".domain.."), vanillaPackages, commonToolsAndUtilsPackages, sharedKernelsPackages)
.flatMap(Collection::stream)
.toArray(String[]::new);
}
Expand Down Expand Up @@ -221,16 +237,18 @@ class HexagonalArchTest {

@Test
void shouldNotDependOnSameContextPrimary() {
Stream.concat(businessContexts.stream(), sharedKernels.stream()).forEach(context -> {
noClasses()
.that()
.resideInAPackage(context + ".infrastructure.secondary..")
.should()
.dependOnClassesThat()
.resideInAPackage(context + ".infrastructure.primary")
.because("Secondary should not loop to its own context's primary")
.check(classes);
});
Stream
.concat(businessContexts.stream(), sharedKernels.stream())
.forEach(context -> {
noClasses()
.that()
.resideInAPackage(context + ".infrastructure.secondary..")
.should()
.dependOnClassesThat()
.resideInAPackage(context + ".infrastructure.primary")
.because("Secondary should not loop to its own context's primary")
.check(classes);
});
}
}
}
28 changes: 21 additions & 7 deletions src/test/java/tech/jhipster/lite/HexagonalArchTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.tngtech.archunit.core.domain.JavaClasses;
import com.tngtech.archunit.core.importer.ClassFileImporter;
import com.tngtech.archunit.core.importer.ImportOption;
import com.tngtech.archunit.library.Architectures;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.nio.file.Files;
Expand Down Expand Up @@ -104,7 +105,21 @@ void shouldNotDependOnOtherBoundedContextDomains() {
}

@Test
//TODO https://github.com/TNG/ArchUnit/commit/fbca4c92c2432ce26d35e33295a530861dbb2c21 calls to itself should be ignored in 1.0.0-rc1 but still failing
void shouldBeAnOnionArchitecture() {
businessContexts.forEach(context -> {
Architectures
.onionArchitecture()
.withOptionalLayers(true)
.domainModels(context + ".domain..")
.domainServices(context + ".domain..")
.applicationServices(context + ".application..")
.adapter("infrastructure", context + ".infrastructure..", context + ".infrastructure.secondary..")
.because("Each bounded context should implement an onion architecture")
.check(classes);
});
}

@Test
void primaryJavaAdaptersShouldOnlyBeCalledFromSecondaries() {
classes()
.that()
Expand All @@ -114,11 +129,10 @@ void primaryJavaAdaptersShouldOnlyBeCalledFromSecondaries() {
.and()
.haveSimpleNameStartingWith("Java")
.should()
.onlyBeAccessed()
.byClassesThat()
.onlyHaveDependentClassesThat()
.resideInAPackage("..secondary..")
.because(
"To interact between two contexts, secondary from context A should call a primary Java adapter (naming convention starting with 'Java') from context B"
"To interact between two contexts, secondary from context 'A' should call a primary Java adapter (naming convention starting with 'Java') from context 'B'"
)
.check(classes);
}
Expand Down Expand Up @@ -156,14 +170,14 @@ void shouldNotDependOnOutside() {
.resideInAPackage(".domain..")
.should()
.onlyDependOnClassesThat()
.resideInAnyPackage(authorizedContextPackages(".domain.."))
.resideInAnyPackage(authorizedDomainPackages())
.because("Domain model should only depend on himself and a very limited set of external dependencies")
.check(classes);
}

private String[] authorizedContextPackages(String packageName) {
private String[] authorizedDomainPackages() {
return Stream
.of(List.of(packageName), vanillaPackages, commonToolsAndUtilsPackages, sharedKernelsPackages)
.of(List.of(".domain.."), vanillaPackages, commonToolsAndUtilsPackages, sharedKernelsPackages)
.flatMap(Collection::stream)
.toArray(String[]::new);
}
Expand Down

0 comments on commit 814712a

Please sign in to comment.