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

ahuber pushed a commit to branch 3409-mixin.eventtypes.part2
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 13ae3cc706b1397d4cc2e8ac0055b4b29ea6e8f0
Author: Andi Huber <[email protected]>
AuthorDate: Wed Apr 19 08:35:39 2023 +0200

    CAUSEWAY-3409: resurrect some tests in
    ActionAnnotationFacetFactoryTest_ActionInvocation
---
 .../metamodel/facets/FacetFactoryTestAbstract.java |  22 ++--
 .../causeway/core/metamodel/facets/_Utils.java     |  17 +++
 .../actions/ActionMethodsFacetFactoryTest.java     |  61 ++++-----
 ...nnotationFacetFactoryTest_ActionInvocation.java | 143 +++++++++------------
 .../CollectionFieldMethodsFacetFactoryTest.java    |  37 +++---
 .../title/TitleFacetViaMethodsFactoryTest.java     |   6 +-
 .../PropertyMethodsFacetFactoryTest.java           |  93 ++++++--------
 7 files changed, 169 insertions(+), 210 deletions(-)

diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/FacetFactoryTestAbstract.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/FacetFactoryTestAbstract.java
index 5fbd61fcef..da4b5f529a 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/FacetFactoryTestAbstract.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/FacetFactoryTestAbstract.java
@@ -26,8 +26,6 @@ import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.mockito.Mockito;
 
-import static org.junit.jupiter.api.Assertions.assertArrayEquals;
-import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.causeway.applib.Identifier;
@@ -265,20 +263,18 @@ implements HasMetaModelContext {
     }
 
     protected final void assertMethodWasRemoved(final Method method) {
-        
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(method));
+        
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(method),
+                ()->String.format("method was not removed in test scenario: 
%s", method));
     }
 
-    public void assertMethodEquals(final Method a, final Method b) {
-        assertEquals(a.getName(), b.getName());
-        assertEquals(a.getParameterCount(), b.getParameterCount());
-        assertArrayEquals(a.getParameterTypes(), b.getParameterTypes());
-
-        val ownerA = a.getDeclaringClass();
-        val ownerB = b.getDeclaringClass();
-
-        assertTrue(ownerA.isAssignableFrom(ownerB)
-                || ownerB.isAssignableFrom(ownerA));
+    protected final void assertMethodWasRemoved(final Class<?> type, final 
String methodName) {
+        assertMethodWasRemoved(findMethodExactOrFail(type, methodName));
+    }
 
+    protected final void assertMethodEqualsFirstIn(
+            final @NonNull Method method,
+            final @NonNull ImperativeFacet imperativeFacet) {
+        _Utils.assertMethodEquals(method, 
imperativeFacet.getMethods().getFirstElseFail().asMethodElseFail());
     }
 
 }
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/_Utils.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/_Utils.java
index 93ecefb123..627794a4d4 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/_Utils.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/_Utils.java
@@ -21,6 +21,10 @@ package org.apache.causeway.core.metamodel.facets;
 import java.lang.reflect.Method;
 import java.util.Optional;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.commons.collections.ImmutableEnumSet;
 import org.apache.causeway.commons.internal._Constants;
@@ -95,4 +99,17 @@ class _Utils {
         return getter;
     }
 
+    protected static void assertMethodEquals(final Method a, final Method b) {
+        assertEquals(a.getName(), b.getName());
+        assertEquals(a.getParameterCount(), b.getParameterCount());
+        assertArrayEquals(a.getParameterTypes(), b.getParameterTypes());
+
+        val ownerA = a.getDeclaringClass();
+        val ownerB = b.getDeclaringClass();
+
+        assertTrue(ownerA.isAssignableFrom(ownerB)
+                || ownerB.isAssignableFrom(ownerA));
+
+    }
+
 }
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
index ed3957a8ca..212286a99c 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
@@ -74,9 +74,8 @@ extends FacetFactoryTestAbstract {
             assertNotNull(facet);
             assertTrue(facet instanceof ActionValidationFacetViaMethod);
             val actionValidationFacetViaMethod = 
(ActionValidationFacetViaMethod) facet;
-            assertMethodEquals(validateMethod, 
actionValidationFacetViaMethod.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(validateMethod));
+            assertMethodEqualsFirstIn(validateMethod, 
actionValidationFacetViaMethod);
+            assertMethodWasRemoved(validateMethod);
         });
 
     }
@@ -102,9 +101,8 @@ extends FacetFactoryTestAbstract {
             assertNotNull(facet);
             assertTrue(facet instanceof ActionValidationFacetViaMethod);
             val actionValidationFacetViaMethod = 
(ActionValidationFacetViaMethod) facet;
-            assertMethodEquals(validateMethod, 
actionValidationFacetViaMethod.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(validateMethod));
+            assertMethodEqualsFirstIn(validateMethod, 
actionValidationFacetViaMethod);
+            assertMethodWasRemoved(validateMethod);
         });
     }
 
@@ -133,18 +131,15 @@ extends FacetFactoryTestAbstract {
         assertNotNull(facet0);
         assertTrue(facet0 instanceof ActionParameterDefaultsFacetViaMethod);
         final ActionParameterDefaultsFacetViaMethod 
actionDefaultFacetViaMethod0 = (ActionParameterDefaultsFacetViaMethod) facet0;
-        assertMethodEquals(default0Method, 
actionDefaultFacetViaMethod0.getMethods().getFirstElseFail().asMethodElseFail());
-
-        
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(default0Method));
+        assertMethodEqualsFirstIn(default0Method, 
actionDefaultFacetViaMethod0);
+        assertMethodWasRemoved(default0Method);
 
         final Facet facet1 = 
facetHolderWithParms.getParameters().getElseFail(1).getFacet(ActionParameterDefaultsFacet.class);
         assertNotNull(facet1);
         assertTrue(facet1 instanceof ActionParameterDefaultsFacetViaMethod);
         final ActionParameterDefaultsFacetViaMethod 
actionDefaultFacetViaMethod1 = (ActionParameterDefaultsFacetViaMethod) facet1;
-        assertMethodEquals(default1Method, 
actionDefaultFacetViaMethod1.getMethods().getFirstElseFail().asMethodElseFail());
-
-        
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(default1Method));
-
+        assertMethodEqualsFirstIn(default1Method, 
actionDefaultFacetViaMethod1);
+        assertMethodWasRemoved(default1Method);
     }
 
     @Test
@@ -153,7 +148,6 @@ extends FacetFactoryTestAbstract {
 
         @SuppressWarnings("unused")
         class Customer {
-
             public void someAction(final int x, final long y, final long z) {}
             public Collection<Integer> choices0SomeAction() { return 
Collections.emptyList(); }
             public List<Long> choices1SomeAction() { return 
Collections.emptyList(); }
@@ -174,43 +168,33 @@ extends FacetFactoryTestAbstract {
         final Facet facet0 = 
facetHolderWithParms.getParameters().getElseFail(0).getFacet(ActionParameterChoicesFacet.class);
         assertNotNull(facet0);
         assertTrue(facet0 instanceof ActionParameterChoicesFacetViaMethod);
-        final ActionParameterChoicesFacetViaMethod 
actionChoicesFacetViaMethod0 = (ActionParameterChoicesFacetViaMethod) facet0;
-        assertMethodEquals(choices0Method, 
actionChoicesFacetViaMethod0.getMethods().getFirstElseFail().asMethodElseFail());
-
-        
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(choices0Method));
+        val actionChoicesFacetViaMethod0 = 
(ActionParameterChoicesFacetViaMethod) facet0;
+        assertMethodEqualsFirstIn(choices0Method, 
actionChoicesFacetViaMethod0);
+        assertMethodWasRemoved(choices0Method);
 
         final Facet facet1 = 
facetHolderWithParms.getParameters().getElseFail(1).getFacet(ActionParameterChoicesFacet.class);
         assertNotNull(facet1);
         assertTrue(facet1 instanceof ActionParameterChoicesFacetViaMethod);
-        final ActionParameterChoicesFacetViaMethod 
actionChoicesFacetViaMethod1 = (ActionParameterChoicesFacetViaMethod) facet1;
-        assertMethodEquals(choices1Method, 
actionChoicesFacetViaMethod1.getMethods().getFirstElseFail().asMethodElseFail());
-
-        
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(choices1Method));
+        val actionChoicesFacetViaMethod1 = 
(ActionParameterChoicesFacetViaMethod) facet1;
+        assertMethodEqualsFirstIn(choices1Method, 
actionChoicesFacetViaMethod1);
+        assertMethodWasRemoved(choices1Method);
 
         final Facet facet2 = 
facetHolderWithParms.getParameters().getElseFail(2).getFacet(ActionParameterChoicesFacet.class);
         assertNotNull(facet2);
         assertTrue(facet2 instanceof ActionParameterChoicesFacetViaMethod);
-        final ActionParameterChoicesFacetViaMethod 
actionChoicesFacetViaMethod2 = (ActionParameterChoicesFacetViaMethod) facet2;
-        assertMethodEquals(choices2Method, 
actionChoicesFacetViaMethod2.getMethods().getFirstElseFail().asMethodElseFail());
-
-        
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(choices2Method));
-
-
+        val actionChoicesFacetViaMethod2 = 
(ActionParameterChoicesFacetViaMethod) facet2;
+        assertMethodEqualsFirstIn(choices2Method, 
actionChoicesFacetViaMethod2);
+        assertMethodWasRemoved(choices2Method);
     }
 
     @Test
     void installsParameterAutoCompleteMethodAndRemovesMethod() {
         val facetFactory = new 
ActionParameterAutoCompleteFacetViaMethodFactory(getMetaModelContext());
 
+        @SuppressWarnings("unused")
         class Customer {
-            @SuppressWarnings("unused")
-            public void someAction(final int x, final long y) {
-            }
-
-            @SuppressWarnings("unused")
-            public List<Integer> autoComplete0SomeAction(final String 
searchArg) {
-                return Collections.emptyList();
-            }
+            public void someAction(final int x, final long y) {}
+            public List<Integer> autoComplete0SomeAction(final String 
searchArg) { return Collections.emptyList();}
         }
 
         final Method actionMethod = findMethodExactOrFail(Customer.class, 
"someAction", new Class[] { int.class, long.class });
@@ -226,9 +210,8 @@ extends FacetFactoryTestAbstract {
         assertNotNull(facet0);
         assertTrue(facet0 instanceof 
ActionParameterAutoCompleteFacetViaMethod);
         final ActionParameterAutoCompleteFacetViaMethod 
actionAutoCompleteFacetViaMethod0 = (ActionParameterAutoCompleteFacetViaMethod) 
facet0;
-        assertMethodEquals(autoComplete0Method, 
actionAutoCompleteFacetViaMethod0.getMethods().getFirstElseFail().asMethodElseFail());
-
-        
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(autoComplete0Method));
+        assertMethodEqualsFirstIn(autoComplete0Method, 
actionAutoCompleteFacetViaMethod0);
+        assertMethodWasRemoved(autoComplete0Method);
     }
 
 }
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_ActionInvocation.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_ActionInvocation.java
index d6dfc8dec2..bb6003916c 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_ActionInvocation.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_ActionInvocation.java
@@ -21,18 +21,16 @@ package 
org.apache.causeway.core.metamodel.facets.actions.action;
 import java.lang.reflect.Method;
 
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.commons.internal.reflection._MethodFacades;
 import org.apache.causeway.core.metamodel.facetapi.Facet;
-import org.apache.causeway.core.metamodel.facetapi.FeatureType;
 import 
org.apache.causeway.core.metamodel.facets.FacetFactory.ProcessMethodContext;
 import org.apache.causeway.core.metamodel.facets.FacetFactoryTestAbstract;
-import org.apache.causeway.core.metamodel.facets.FacetedMethod;
 import 
org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
 import 
org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEvent;
 import 
org.apache.causeway.core.metamodel.facets.members.disabled.method.DisableForContextFacet;
@@ -45,7 +43,6 @@ import 
org.apache.causeway.core.metamodel.spec.ObjectSpecification;
 
 import lombok.val;
 
-@SuppressWarnings("unused")
 class ActionAnnotationFacetFactoryTest_ActionInvocation
 extends FacetFactoryTestAbstract {
 
@@ -55,14 +52,12 @@ extends FacetFactoryTestAbstract {
 
     private void processInvocation(
             final ActionAnnotationFacetFactory facetFactory, final 
ProcessMethodContext processMethodContext) {
-
         val actionIfAny = 
processMethodContext.synthesizeOnMethod(Action.class);
         facetFactory.processInvocation(processMethodContext, actionIfAny);
     }
 
     @BeforeEach
     public void setUp() {
-
         this.facetFactory =  new 
ActionAnnotationFacetFactory(getMetaModelContext());
 
         val specLoader = getSpecificationLoader();
@@ -70,8 +65,9 @@ extends FacetFactoryTestAbstract {
         stringSpec = specLoader.loadSpecification(java.lang.String.class);
     }
 
-    public void testActionInvocationFacetIsInstalledAndMethodRemoved() {
-
+    @Test
+    void actionInvocationFacetIsInstalledAndMethodRemoved() {
+        @SuppressWarnings("unused")
         class Customer {
             public void someAction() {}
         }
@@ -87,17 +83,17 @@ extends FacetFactoryTestAbstract {
             assertNotNull(facet);
             assertTrue(facet instanceof ActionInvocationFacetForDomainEvent);
             final ActionInvocationFacetForDomainEvent 
actionInvocationFacetViaMethod = (ActionInvocationFacetForDomainEvent) facet;
-            assertEquals(actionMethod, 
actionInvocationFacetViaMethod.getMethods().getFirstElseFail());
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(actionMethod));
+            assertMethodEqualsFirstIn(actionMethod, 
actionInvocationFacetViaMethod);
+            assertMethodWasRemoved(actionMethod);
         });
     }
 
-    public void testActionReturnTypeWhenVoid() {
-
+    @Test
+    void actionReturnTypeWhenVoid() {
+        @SuppressWarnings("unused")
         class Customer {
             public void someAction() {}
         }
-
         actionScenario(Customer.class, "someAction", (processMethodContext, 
facetHolder, facetedMethod, facetedMethodParameter) -> {
             //when
             processInvocation(facetFactory, processMethodContext);
@@ -108,12 +104,12 @@ extends FacetFactoryTestAbstract {
         });
     }
 
-    public void testActionReturnTypeWhenNotVoid() {
-
+    @Test
+    void actionReturnTypeWhenNotVoid() {
+        @SuppressWarnings("unused")
         class Customer {
             public String someAction() { return null; }
         }
-
         actionScenario(Customer.class, "someAction", (processMethodContext, 
facetHolder, facetedMethod, facetedMethodParameter) -> {
             //when
             processInvocation(facetFactory, processMethodContext);
@@ -124,12 +120,11 @@ extends FacetFactoryTestAbstract {
         });
     }
 
-    public void testActionOnType() {
-
+    @Test
+    void actionOnType() {
+        @SuppressWarnings("unused")
         class LocalCustomer {
-            public String someAction() {
-                return null;
-            }
+            public String someAction() { return null; }
         }
 
         val customerSpec = 
getSpecificationLoader().loadSpecification(LocalCustomer.class);
@@ -137,7 +132,7 @@ extends FacetFactoryTestAbstract {
         actionScenario(LocalCustomer.class, "someAction", 
(processMethodContext, facetHolder, facetedMethod, facetedMethodParameter) -> {
             //when
             processInvocation(facetFactory, processMethodContext);
-            // then
+            //then
             final Facet facet = 
facetedMethod.getFacet(ActionInvocationFacet.class);
             final ActionInvocationFacetForDomainEvent 
actionInvocationFacetViaMethod =
                     (ActionInvocationFacetForDomainEvent) facet;
@@ -147,85 +142,71 @@ extends FacetFactoryTestAbstract {
         });
     }
 
-    public void testActionsPickedUpFromSuperclass() {
-
+    @Test
+    void actionsPickedUpFromSuperclass() {
+        @SuppressWarnings("unused")
         class Customer {
-            public void someAction(final int x, final long y) {
-            }
+            public void someAction(final int x, final long y) {}
         }
-
         class CustomerEx extends Customer {
         }
-
-        final Method actionMethod = findMethodExactOrFail(CustomerEx.class, 
"someAction", new Class[] { int.class, long.class });
-
-        final FacetedMethod facetHolderWithParms = FacetedMethod
-                .createForAction(getMetaModelContext(), CustomerEx.class, 
_MethodFacades.regular(actionMethod));
-
-        processInvocation(facetFactory, ProcessMethodContext
-                .forTesting(CustomerEx.class, null, actionMethod, 
methodRemover, facetHolderWithParms));
-
-        final Facet facet0 = 
facetHolderWithParms.getFacet(ActionInvocationFacet.class);
-        assertNotNull(facet0);
+        actionScenario(CustomerEx.class, "someAction", (processMethodContext, 
facetHolder, facetedMethod, facetedMethodParameter) -> {
+            //when
+            processInvocation(facetFactory, processMethodContext);
+            //then
+            final Facet facet = 
facetedMethod.getFacet(ActionInvocationFacet.class);
+            assertNotNull(facet);
+        });
     }
 
-    public void testActionsPickedUpFromSuperclassButHelpersFromSubClass() {
-
+    @Test
+    void actionsPickedUpFromSuperclassButHelpersFromSubClass() {
         val facetFactoryForChoices = new 
ActionParameterChoicesFacetViaMethodFactory(getMetaModelContext());
         val facetFactoryForDisable = new 
DisableForContextFacetViaMethodFactory(getMetaModelContext());
 
+        @SuppressWarnings("unused")
         class Customer {
             public void someAction(final int x, final long y) { }
             public int[] choices0SomeAction() { return new int[0]; }
         }
-
+        @SuppressWarnings("unused")
         class CustomerEx extends Customer {
             @Override
-            public int[] choices0SomeAction() {
-                return new int[0];
-            }
-            public long[] choices1SomeAction() {
-                return new long[0];
-            }
-            public String disableSomeAction() {
-                return null;
-            }
+            public int[] choices0SomeAction() { return new int[0]; }
+            public long[] choices1SomeAction() { return new long[0]; }
+            public String disableSomeAction() { return null; }
         }
 
-        final Method actionMethod = findMethodExactOrFail(CustomerEx.class, 
"someAction", new Class[] { int.class, long.class });
         final Method choices0Method = findMethodExactOrFail(CustomerEx.class, 
"choices0SomeAction", new Class[] {});
         final Method choices1Method = findMethodExactOrFail(CustomerEx.class, 
"choices1SomeAction", new Class[] {});
         final Method disableMethod = findMethodExactOrFail(CustomerEx.class, 
"disableSomeAction", new Class[] {});
 
-        final FacetedMethod facetHolderWithParms = 
FacetedMethod.createForAction(getMetaModelContext(), CustomerEx.class,
-                _MethodFacades.regular(actionMethod));
-
-        final ProcessMethodContext processMethodContext = ProcessMethodContext
-                .forTesting(CustomerEx.class, FeatureType.ACTION, 
actionMethod, methodRemover, facetHolderWithParms);
-        processInvocation(facetFactory, processMethodContext);
-
-        facetFactoryForChoices.process(processMethodContext);
-        facetFactoryForDisable.process(processMethodContext);
-
-        final Facet facet0 = 
facetHolderWithParms.getFacet(ActionInvocationFacet.class);
-        assertNotNull(facet0);
-
-        final Facet facet1 = 
facetHolderWithParms.getParameters().getElseFail(0).getFacet(ActionParameterChoicesFacet.class);
-        assertNotNull(facet1);
-        assertTrue(facet1 instanceof ActionParameterChoicesFacetViaMethod);
-        final ActionParameterChoicesFacetViaMethod 
actionChoicesFacetViaMethod0 = (ActionParameterChoicesFacetViaMethod) facet1;
-        assertEquals(choices0Method, 
actionChoicesFacetViaMethod0.getMethods().getFirstElseFail());
-
-        final Facet facet2 = 
facetHolderWithParms.getParameters().getElseFail(1).getFacet(ActionParameterChoicesFacet.class);
-        assertNotNull(facet2);
-        assertTrue(facet2 instanceof ActionParameterChoicesFacetViaMethod);
-        final ActionParameterChoicesFacetViaMethod 
actionChoicesFacetViaMethod1 = (ActionParameterChoicesFacetViaMethod) facet2;
-        assertEquals(choices1Method, 
actionChoicesFacetViaMethod1.getMethods().getFirstElseFail());
-
-        final Facet facet3 = 
facetHolderWithParms.getFacet(DisableForContextFacet.class);
-        assertNotNull(facet3);
-        assertTrue(facet3 instanceof DisableForContextFacetViaMethod);
-        final DisableForContextFacetViaMethod disableFacetViaMethod = 
(DisableForContextFacetViaMethod) facet3;
-        assertEquals(disableMethod, 
disableFacetViaMethod.getMethods().getFirstElseFail());
+        actionScenario(CustomerEx.class, "someAction", (processMethodContext, 
facetHolder, facetedMethod, facetedMethodParameter) -> {
+            //when
+            processInvocation(facetFactory, processMethodContext);
+            facetFactoryForChoices.process(processMethodContext);
+            facetFactoryForDisable.process(processMethodContext);
+            //then
+            final Facet facet0 = 
facetedMethod.getFacet(ActionInvocationFacet.class);
+            assertNotNull(facet0);
+
+            final Facet facet1 = 
facetedMethod.getParameters().getElseFail(0).getFacet(ActionParameterChoicesFacet.class);
+            assertNotNull(facet1);
+            assertTrue(facet1 instanceof ActionParameterChoicesFacetViaMethod);
+            val actionChoicesFacetViaMethod0 = 
(ActionParameterChoicesFacetViaMethod) facet1;
+            assertMethodEqualsFirstIn(choices0Method, 
actionChoicesFacetViaMethod0);
+
+            final Facet facet2 = 
facetedMethod.getParameters().getElseFail(1).getFacet(ActionParameterChoicesFacet.class);
+            assertNotNull(facet2);
+            assertTrue(facet2 instanceof ActionParameterChoicesFacetViaMethod);
+            val actionChoicesFacetViaMethod1 = 
(ActionParameterChoicesFacetViaMethod) facet2;
+            assertMethodEqualsFirstIn(choices1Method, 
actionChoicesFacetViaMethod1);
+
+            final Facet facet3 = 
facetedMethod.getFacet(DisableForContextFacet.class);
+            assertNotNull(facet3);
+            assertTrue(facet3 instanceof DisableForContextFacetViaMethod);
+            val disableFacetViaMethod = (DisableForContextFacetViaMethod) 
facet3;
+            assertMethodEqualsFirstIn(disableMethod, disableFacetViaMethod);
+        });
     }
 }
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
index 8924fed9bb..21d182cd42 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
@@ -56,10 +56,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyOrCollectionAccessorFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof CollectionAccessorFacetViaAccessor);
-            final CollectionAccessorFacetViaAccessor 
propertyAccessorFacetViaAccessor = (CollectionAccessorFacetViaAccessor) facet;
-            assertMethodEquals(collectionAccessorMethod, 
propertyAccessorFacetViaAccessor.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(collectionAccessorMethod));
+            val propertyAccessorFacetViaAccessor = 
(CollectionAccessorFacetViaAccessor) facet;
+            assertMethodEqualsFirstIn(collectionAccessorMethod, 
propertyAccessorFacetViaAccessor);
+            assertMethodWasRemoved(collectionAccessorMethod);
         });
     }
 
@@ -80,10 +79,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyOrCollectionAccessorFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof CollectionAccessorFacetViaAccessor);
-            final CollectionAccessorFacetViaAccessor 
propertyAccessorFacetViaAccessor = (CollectionAccessorFacetViaAccessor) facet;
-            assertMethodEquals(collectionAccessorMethod, 
propertyAccessorFacetViaAccessor.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(collectionAccessorMethod));
+            val propertyAccessorFacetViaAccessor = 
(CollectionAccessorFacetViaAccessor) facet;
+            assertMethodEqualsFirstIn(collectionAccessorMethod, 
propertyAccessorFacetViaAccessor);
+            assertMethodWasRemoved(collectionAccessorMethod);
         });
     }
 
@@ -104,10 +102,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyOrCollectionAccessorFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof CollectionAccessorFacetViaAccessor);
-            final CollectionAccessorFacetViaAccessor 
propertyAccessorFacetViaAccessor = (CollectionAccessorFacetViaAccessor) facet;
-            assertMethodEquals(collectionAccessorMethod, 
propertyAccessorFacetViaAccessor.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(collectionAccessorMethod));
+            val propertyAccessorFacetViaAccessor = 
(CollectionAccessorFacetViaAccessor) facet;
+            assertMethodEqualsFirstIn(collectionAccessorMethod, 
propertyAccessorFacetViaAccessor);
+            assertMethodWasRemoved(collectionAccessorMethod);
         });
     }
 
@@ -128,10 +125,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyOrCollectionAccessorFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof CollectionAccessorFacetViaAccessor);
-            final CollectionAccessorFacetViaAccessor 
propertyAccessorFacetViaAccessor = (CollectionAccessorFacetViaAccessor) facet;
-            assertMethodEquals(collectionAccessorMethod, 
propertyAccessorFacetViaAccessor.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(collectionAccessorMethod));
+            val propertyAccessorFacetViaAccessor = 
(CollectionAccessorFacetViaAccessor) facet;
+            assertMethodEqualsFirstIn(collectionAccessorMethod, 
propertyAccessorFacetViaAccessor);
+            assertMethodWasRemoved(collectionAccessorMethod);
         });
     }
 
@@ -153,10 +149,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyOrCollectionAccessorFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof CollectionAccessorFacetViaAccessor);
-            final CollectionAccessorFacetViaAccessor 
propertyAccessorFacetViaAccessor = (CollectionAccessorFacetViaAccessor) facet;
-            assertMethodEquals(collectionAccessorMethod, 
propertyAccessorFacetViaAccessor.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(collectionAccessorMethod));
+            val propertyAccessorFacetViaAccessor = 
(CollectionAccessorFacetViaAccessor) facet;
+            assertMethodEqualsFirstIn(collectionAccessorMethod, 
propertyAccessorFacetViaAccessor);
+            assertMethodWasRemoved(collectionAccessorMethod);
         });
     }
 
@@ -180,7 +175,7 @@ extends FacetFactoryTestAbstract {
             assertNotNull(facet);
             assertTrue(facet instanceof CollectionAccessorFacetViaAccessor);
             val collectionAccessorFacetViaMethod = 
(CollectionAccessorFacetViaAccessor) facet;
-            assertMethodEquals(collectionAccessorMethod, 
collectionAccessorFacetViaMethod.getMethods().getFirstElseFail().asMethodElseFail());
+            assertMethodEqualsFirstIn(collectionAccessorMethod, 
collectionAccessorFacetViaMethod);
         });
     }
 }
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java
index a8c9291615..7ed88281e9 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java
@@ -67,11 +67,9 @@ extends ObjectSupportFacetFactoryTestAbstract {
             assertNotNull(facet);
             assertTrue(facet instanceof TitleFacetFromToStringMethod);
             val titleFacetViaTitleMethod = (TitleFacetFromToStringMethod) 
facet;
-            assertMethodEquals(toStringMethod, 
titleFacetViaTitleMethod.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(toStringMethod));
+            assertMethodEqualsFirstIn(toStringMethod, 
titleFacetViaTitleMethod);
+            assertMethodWasRemoved(toStringMethod);
         });
-
     }
 
     @Test
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
index 0f07e424a9..630abd1e3d 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
@@ -79,10 +79,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyOrCollectionAccessorFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof PropertyAccessorFacetViaAccessor);
-            final PropertyAccessorFacetViaAccessor 
propertyAccessorFacetViaAccessor = (PropertyAccessorFacetViaAccessor) facet;
-            assertMethodEquals(propertyAccessorMethod, 
propertyAccessorFacetViaAccessor.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertyAccessorMethod));
+            val propertyAccessorFacetViaAccessor = 
(PropertyAccessorFacetViaAccessor) facet;
+            assertMethodEqualsFirstIn(propertyAccessorMethod, 
propertyAccessorFacetViaAccessor);
+            assertMethodWasRemoved(propertyAccessorMethod);
         });
     }
 
@@ -103,10 +102,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertySetterFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof PropertySetterFacetViaSetterMethod);
-            final PropertySetterFacetViaSetterMethod propertySetterFacet = 
(PropertySetterFacetViaSetterMethod) facet;
-            assertMethodEquals(propertySetterMethod, 
propertySetterFacet.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertySetterMethod));
+            val propertySetterFacet = (PropertySetterFacetViaSetterMethod) 
facet;
+            assertMethodEqualsFirstIn(propertySetterMethod, 
propertySetterFacet);
+            assertMethodWasRemoved(propertySetterMethod);
         });
     }
 
@@ -127,10 +125,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyInitializationFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof PropertyInitializationFacet);
-            final PropertyInitializationFacetViaSetterMethod 
propertySetterFacet = (PropertyInitializationFacetViaSetterMethod) facet;
-            assertMethodEquals(propertySetterMethod, 
propertySetterFacet.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertySetterMethod));
+            val propertySetterFacet = 
(PropertyInitializationFacetViaSetterMethod) facet;
+            assertMethodEqualsFirstIn(propertySetterMethod, 
propertySetterFacet);
+            assertMethodWasRemoved(propertySetterMethod);
         });
     }
 
@@ -167,8 +164,8 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyClearFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof PropertyClearFacetViaSetterMethod);
-            final PropertyClearFacetViaSetterMethod propertyClearFacet = 
(PropertyClearFacetViaSetterMethod) facet;
-            assertMethodEquals(propertySetterMethod, 
propertyClearFacet.getMethods().getFirstElseFail().asMethodElseFail());
+            val propertyClearFacet = (PropertyClearFacetViaSetterMethod) facet;
+            assertMethodEqualsFirstIn(propertySetterMethod, 
propertyClearFacet);
         });
     }
 
@@ -190,10 +187,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyChoicesFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof PropertyChoicesFacetViaMethod);
-            final PropertyChoicesFacetViaMethod propertyChoicesFacet = 
(PropertyChoicesFacetViaMethod) facet;
-            assertMethodEquals(propertyChoicesMethod, 
propertyChoicesFacet.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertyChoicesMethod));
+            val propertyChoicesFacet = (PropertyChoicesFacetViaMethod) facet;
+            assertMethodEqualsFirstIn(propertyChoicesMethod, 
propertyChoicesFacet);
+            assertMethodWasRemoved(propertyChoicesMethod);
         });
     }
 
@@ -215,10 +211,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyAutoCompleteFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof PropertyAutoCompleteFacetMethod);
-            final PropertyAutoCompleteFacetMethod propertyAutoCompleteFacet = 
(PropertyAutoCompleteFacetMethod) facet;
-            assertMethodEquals(propertyAutoCompleteMethod, 
propertyAutoCompleteFacet.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertyAutoCompleteMethod));
+            val propertyAutoCompleteFacet = (PropertyAutoCompleteFacetMethod) 
facet;
+            assertMethodEqualsFirstIn(propertyAutoCompleteMethod, 
propertyAutoCompleteFacet);
+            assertMethodWasRemoved(propertyAutoCompleteMethod);
         });
     }
 
@@ -240,10 +235,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyDefaultFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof PropertyDefaultFacetViaMethod);
-            final PropertyDefaultFacetViaMethod propertyDefaultFacet = 
(PropertyDefaultFacetViaMethod) facet;
-            assertMethodEquals(propertyDefaultMethod, 
propertyDefaultFacet.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertyDefaultMethod));
+            val propertyDefaultFacet = (PropertyDefaultFacetViaMethod) facet;
+            assertMethodEqualsFirstIn(propertyDefaultMethod, 
propertyDefaultFacet);
+            assertMethodWasRemoved(propertyDefaultMethod);
         });
     }
 
@@ -265,10 +259,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyValidateFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof PropertyValidateFacetViaMethod);
-            final PropertyValidateFacetViaMethod propertyValidateFacet = 
(PropertyValidateFacetViaMethod) facet;
-            assertMethodEquals(propertyValidateMethod, 
propertyValidateFacet.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertyValidateMethod));
+            val propertyValidateFacet = (PropertyValidateFacetViaMethod) facet;
+            assertMethodEqualsFirstIn(propertyValidateMethod, 
propertyValidateFacet);
+            assertMethodWasRemoved(propertyValidateMethod);
         });
     }
 
@@ -290,10 +283,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(DisableForContextFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof DisableForContextFacetViaMethod);
-            final DisableForContextFacetViaMethod disableForContextFacet = 
(DisableForContextFacetViaMethod) facet;
-            assertMethodEquals(propertyDisableMethod, 
disableForContextFacet.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertyDisableMethod));
+            val disableForContextFacet = (DisableForContextFacetViaMethod) 
facet;
+            assertMethodEqualsFirstIn(propertyDisableMethod, 
disableForContextFacet);
+            assertMethodWasRemoved(propertyDisableMethod);
         });
     }
 
@@ -315,10 +307,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(DisableForContextFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof DisableForContextFacetViaMethod);
-            final DisableForContextFacetViaMethod disableForContextFacet = 
(DisableForContextFacetViaMethod) facet;
-            assertMethodEquals(propertyDisableMethod, 
disableForContextFacet.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertyDisableMethod));
+            val disableForContextFacet = (DisableForContextFacetViaMethod) 
facet;
+            assertMethodEqualsFirstIn(propertyDisableMethod, 
disableForContextFacet);
+            assertMethodWasRemoved(propertyDisableMethod);
         });
     }
 
@@ -340,10 +331,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(HideForContextFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof HideForContextFacetViaMethod);
-            final HideForContextFacetViaMethod hideForContextFacet = 
(HideForContextFacetViaMethod) facet;
-            assertMethodEquals(propertyHideMethod, 
hideForContextFacet.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertyHideMethod));
+            val hideForContextFacet = (HideForContextFacetViaMethod) facet;
+            assertMethodEqualsFirstIn(propertyHideMethod, hideForContextFacet);
+            assertMethodWasRemoved(propertyHideMethod);
         });
     }
 
@@ -365,10 +355,9 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(HideForContextFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof HideForContextFacetViaMethod);
-            final HideForContextFacetViaMethod hideForContextFacet = 
(HideForContextFacetViaMethod) facet;
-            assertMethodEquals(propertyHideMethod, 
hideForContextFacet.getMethods().getFirstElseFail().asMethodElseFail());
-
-            
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertyHideMethod));
+            val hideForContextFacet = (HideForContextFacetViaMethod) facet;
+            assertMethodEqualsFirstIn(propertyHideMethod, hideForContextFacet);
+            assertMethodWasRemoved(propertyHideMethod);
         });
     }
 
@@ -391,8 +380,8 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(PropertyOrCollectionAccessorFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof PropertyAccessorFacetViaAccessor);
-            final PropertyAccessorFacetViaAccessor accessorFacet = 
(PropertyAccessorFacetViaAccessor) facet;
-            assertMethodEquals(propertyAccessorMethod, 
accessorFacet.getMethods().getFirstElseFail().asMethodElseFail());
+            val accessorFacet = (PropertyAccessorFacetViaAccessor) facet;
+            assertMethodEqualsFirstIn(propertyAccessorMethod, accessorFacet);
         });
 
     }
@@ -426,14 +415,14 @@ extends FacetFactoryTestAbstract {
             final Facet facet = 
facetedMethod.getFacet(HideForContextFacet.class);
             assertNotNull(facet);
             assertTrue(facet instanceof HideForContextFacetViaMethod);
-            final HideForContextFacetViaMethod hideForContextFacet = 
(HideForContextFacetViaMethod) facet;
-            assertMethodEquals(propertyHideMethod, 
hideForContextFacet.getMethods().getFirstElseFail().asMethodElseFail());
+            val hideForContextFacet = (HideForContextFacetViaMethod) facet;
+            assertMethodEqualsFirstIn(propertyHideMethod, hideForContextFacet);
 
             final Facet facet2 = 
facetedMethod.getFacet(DisableForContextFacet.class);
             assertNotNull(facet2);
             assertTrue(facet2 instanceof DisableForContextFacetViaMethod);
-            final DisableForContextFacetViaMethod disableForContextFacet = 
(DisableForContextFacetViaMethod) facet2;
-            assertMethodEquals(propertyDisableMethod, 
disableForContextFacet.getMethods().getFirstElseFail().asMethodElseFail());
+            val disableForContextFacet = (DisableForContextFacetViaMethod) 
facet2;
+            assertMethodEqualsFirstIn(propertyDisableMethod, 
disableForContextFacet);
         });
     }
 


Reply via email to