chore: auto test new context in HexagonalArchitectureTest

This commit is contained in:
2026-08-06 19:33:38 +02:00
parent 07983dc5b0
commit e67c475c38
@@ -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"