test(backend): add ArchUnit domain boundary enforcement (Rules 1–4) #428
@@ -118,11 +118,15 @@ class ArchitectureTest {
|
||||
// Tracked in: http://heim-nas:3005/marcel/familienarchiv/issues/427
|
||||
|
||||
private static DescribedPredicate<JavaClass> foreignJpaRepositoryFor(String ownDomain) {
|
||||
// Exact-segment match: prevents a domain name that is a substring of another
|
||||
// (e.g. "tag" inside "tagging") from silently escaping the predicate.
|
||||
// The pattern matches the domain as a complete path segment, with an optional sub-package.
|
||||
String ownPackagePattern = ".*\\.familienarchiv\\." + ownDomain + "(\\..+)?$";
|
||||
return new DescribedPredicate<JavaClass>("be a JPA repository from a domain other than " + ownDomain) {
|
||||
@Override
|
||||
public boolean test(JavaClass clazz) {
|
||||
return clazz.isAssignableTo(JpaRepository.class)
|
||||
&& !clazz.getPackageName().contains("." + ownDomain);
|
||||
&& !clazz.getPackageName().matches(ownPackagePattern);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user