You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/09/10 06:21:55 UTC

[isis] branch master updated: ISIS-2774: simplify MM validation message testing

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 3eb76a1  ISIS-2774: simplify MM validation message testing
3eb76a1 is described below

commit 3eb76a17abf501069539b7f5440c8397a04a4c15
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Sep 10 08:21:48 2021 +0200

    ISIS-2774: simplify MM validation message testing
---
 .../progmodel/ProgrammingModelConstants.java       | 18 ++++++++++-----
 .../DomainModelTest_usingBadDomain.java            | 26 ++++++++++++----------
 ...lTest_usingBadDomain_noAnnotationEnforced.java} | 14 ++++++++----
 ...OrphanedActionSupportNoAnnotationEnforced.java} |  2 +-
 4 files changed, 38 insertions(+), 22 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
index 6bc3d23..e1e4502 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
@@ -24,6 +24,7 @@ import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.Collection;
+import java.util.Map;
 import java.util.function.Function;
 import java.util.function.IntFunction;
 import java.util.function.Predicate;
@@ -41,6 +42,7 @@ import org.apache.isis.applib.annotation.ObjectLifecycle;
 import org.apache.isis.applib.annotation.ObjectSupport;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.base._Refs;
 import org.apache.isis.commons.internal.base._Strings;
 
 import lombok.Getter;
@@ -322,7 +324,12 @@ public final class ProgrammingModelConstants {
         ;
         private final String template;
         public String getMessage(final Identifier featureIdentifier) {
-            return processMessageTemplate(template, featureIdentifier);
+            return getMessage(Map.of(
+                    "type", featureIdentifier.getLogicalType().getClassName(),
+                    "member", featureIdentifier.getMemberLogicalName()));
+        }
+        public String getMessage(final Map<String, String> templateVars) {
+            return processMessageTemplate(template, templateVars);
         }
     }
 
@@ -347,10 +354,11 @@ public final class ProgrammingModelConstants {
 
     private static String processMessageTemplate(
             final String template,
-            final Identifier identifier) {
-        return template
-                .replace("${type}", identifier.getLogicalType().getClassName())
-                .replace("${member}", identifier.getMemberLogicalName());
+            final Map<String, String> templateVars) {
+
+        val templateRef = _Refs.stringRef(template);
+        templateVars.forEach((k, v)->templateRef.update(str->str.replace("${" + k + "}", v)));
+        return templateRef.getValue();
     }
 
 
diff --git a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
index c42ffaa..2567f87 100644
--- a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
+++ b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
@@ -19,6 +19,7 @@
 package org.apache.isis.testdomain.domainmodel;
 
 import java.lang.annotation.Annotation;
+import java.util.Map;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -50,6 +51,7 @@ import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.environment.IsisSystemEnvironment;
 import org.apache.isis.core.config.metamodel.specloader.IntrospectionMode;
 import org.apache.isis.core.config.presets.IsisPresets;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.testdomain.conf.Configuration_headless;
 import org.apache.isis.testdomain.model.bad.AmbiguousMixinAnnotations;
@@ -116,10 +118,10 @@ class DomainModelTest_usingBadDomain {
 
         validator.assertAnyFailuresContaining(
                 Identifier.classIdentifier(LogicalType.fqcn(InvalidOrphanedActionSupport.class)),
-                "InvalidOrphanedActionSupport#hideMe(): "
-                + "is assumed to support a property, collection or action. "
-                + "Unmet constraint(s): unsupported method signature or orphaned "
-                + "(not associated with a member)");
+                ProgrammingModelConstants.Validation.ORPHANED_METHOD
+                .getMessage(Map.of(
+                        "type", InvalidOrphanedActionSupport.class.getName(),
+                        "member", "hideMe()")));
     }
 
 
@@ -132,10 +134,10 @@ class DomainModelTest_usingBadDomain {
 
         validator.assertAnyFailuresContaining(
                 Identifier.classIdentifier(LogicalType.fqcn(InvalidOrphanedPropertySupport.class)),
-                "InvalidOrphanedPropertySupport#hideMe(): "
-                + "is assumed to support a property, collection or action. "
-                + "Unmet constraint(s): unsupported method signature or orphaned "
-                + "(not associated with a member)");
+                ProgrammingModelConstants.Validation.ORPHANED_METHOD
+                .getMessage(Map.of(
+                        "type", InvalidOrphanedPropertySupport.class.getName(),
+                        "member", "hideMe()")));
     }
 
     @Test
@@ -147,10 +149,10 @@ class DomainModelTest_usingBadDomain {
 
         validator.assertAnyFailuresContaining(
                 Identifier.classIdentifier(LogicalType.fqcn(InvalidOrphanedCollectionSupport.class)),
-                "InvalidOrphanedCollectionSupport#hideMe(): "
-                + "is assumed to support a property, collection or action. "
-                + "Unmet constraint(s): unsupported method signature or orphaned "
-                + "(not associated with a member)");
+                ProgrammingModelConstants.Validation.ORPHANED_METHOD
+                .getMessage(Map.of(
+                        "type", InvalidOrphanedCollectionSupport.class.getName(),
+                        "member", "hideMe()")));
     }
 
     @Test
diff --git a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain_noActionEnforced.java b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain_noAnnotationEnforced.java
similarity index 87%
rename from regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain_noActionEnforced.java
rename to regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain_noAnnotationEnforced.java
index 300657d..b2fa297 100644
--- a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain_noActionEnforced.java
+++ b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain_noAnnotationEnforced.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.testdomain.domainmodel;
 
+import java.util.Map;
+
 import javax.inject.Inject;
 
 import org.junit.jupiter.api.Test;
@@ -35,10 +37,11 @@ import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.environment.IsisSystemEnvironment;
 import org.apache.isis.core.config.metamodel.specloader.IntrospectionMode;
 import org.apache.isis.core.config.presets.IsisPresets;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.testdomain.conf.Configuration_headless;
 import org.apache.isis.testdomain.model.badnoactenforce.Configuration_usingInvalidDomain_noActionEnforced;
-import org.apache.isis.testdomain.model.badnoactenforce.InvalidOrphanedActionSupportNoActionEnforced;
+import org.apache.isis.testdomain.model.badnoactenforce.InvalidOrphanedActionSupportNoAnnotationEnforced;
 import org.apache.isis.testing.integtestsupport.applib.validate.DomainModelValidator;
 
 import lombok.val;
@@ -58,7 +61,7 @@ import lombok.val;
     IsisPresets.SilenceMetaModel,
     IsisPresets.SilenceProgrammingModel
 })
-class DomainModelTest_usingBadDomain_noActionEnforced {
+class DomainModelTest_usingBadDomain_noAnnotationEnforced {
 
     @Inject private IsisConfiguration configuration;
     @Inject private IsisSystemEnvironment isisSystemEnvironment;
@@ -84,8 +87,11 @@ class DomainModelTest_usingBadDomain_noActionEnforced {
 
         assertThrows(DomainModelException.class, validateDomainModel::throwIfInvalid);
         validateDomainModel.assertAnyFailuresContaining(
-                Identifier.classIdentifier(LogicalType.fqcn(InvalidOrphanedActionSupportNoActionEnforced.class)),
-                "is assumed to support");
+                Identifier.classIdentifier(LogicalType.fqcn(InvalidOrphanedActionSupportNoAnnotationEnforced.class)),
+                ProgrammingModelConstants.Validation.ORPHANED_METHOD
+                .getMessage(Map.of(
+                        "type", InvalidOrphanedActionSupportNoAnnotationEnforced.class.getName(),
+                        "member", "hideOrphaned()")));
     }
 
 
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/badnoactenforce/InvalidOrphanedActionSupportNoActionEnforced.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/badnoactenforce/InvalidOrphanedActionSupportNoAnnotationEnforced.java
similarity index 94%
rename from regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/badnoactenforce/InvalidOrphanedActionSupportNoActionEnforced.java
rename to regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/badnoactenforce/InvalidOrphanedActionSupportNoAnnotationEnforced.java
index 94fb647..8c8797c 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/badnoactenforce/InvalidOrphanedActionSupportNoActionEnforced.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/badnoactenforce/InvalidOrphanedActionSupportNoAnnotationEnforced.java
@@ -22,7 +22,7 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
 
 @DomainObject(nature = Nature.VIEW_MODEL)
-public class InvalidOrphanedActionSupportNoActionEnforced {
+public class InvalidOrphanedActionSupportNoAnnotationEnforced {
 
     // should fail
     public boolean hideOrphaned() {