chore: auto test new context in HexagonalArchitectureTest
This commit is contained in:
@@ -9,6 +9,11 @@ import org.junit.jupiter.api.Test
|
||||
* Vérifie le respect des frontières de l'architecture hexagonale (ports & adapters),
|
||||
* pour chaque bounded context sous `eventDemo.contexts`.
|
||||
*
|
||||
* Les contexts ne sont pas listés en dur : ils sont déduits des classes réellement
|
||||
* présentes sous `eventDemo.contexts.*`, de sorte que l'ajout d'un nouveau context
|
||||
* (nouveau dossier `eventDemo.contexts.<xxx>`) soit automatiquement couvert par ce test,
|
||||
* sans modification de ce fichier.
|
||||
*
|
||||
* Convention attendue, pour un contexte donné :
|
||||
* eventDemo.contexts.<context>.domain
|
||||
* eventDemo.contexts.<context>.application
|
||||
@@ -21,15 +26,28 @@ import org.junit.jupiter.api.Test
|
||||
*/
|
||||
class HexagonalArchitectureTest {
|
||||
private val rootPackage = "eventDemo.contexts"
|
||||
private val contexts = listOf("auth", "game")
|
||||
|
||||
private val classes =
|
||||
ClassFileImporter()
|
||||
.withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS)
|
||||
.importPackages(rootPackage)
|
||||
|
||||
// Premier segment de package après "eventDemo.contexts." (ex. "auth", "game", ...),
|
||||
// recalculé à chaque exécution à partir des classes importées.
|
||||
private val contexts: Set<String> =
|
||||
classes
|
||||
.map { it.packageName }
|
||||
.filter { it.startsWith("$rootPackage.") }
|
||||
.map { it.removePrefix("$rootPackage.").substringBefore('.') }
|
||||
.toSet()
|
||||
|
||||
@Test
|
||||
fun `respecte les couches de l'architecture hexagonale`() {
|
||||
check(contexts.isNotEmpty()) {
|
||||
"Aucun context trouvé sous `$rootPackage` : le test ne vérifie rien, " +
|
||||
"vérifiez que le package racine est correct."
|
||||
}
|
||||
|
||||
contexts.forEach { context ->
|
||||
val basePackage = "$rootPackage.$context"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user