You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2024/02/29 23:39:43 UTC

(causeway) branch CAUSEWAY-3676 updated (7f3d1f1e5a -> 56e073501e)

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

danhaywood pushed a change to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git


 discard 7f3d1f1e5a CAUSEWAY-3676: improves javadoc
 discard cc63248260 CAUSEWAY-3676: introduces PrintSchemaIntegTestAbstract
 discard 996d662949 CAUSEWAY-3676: moves CausewayViewerGraphqlTestModuleIntegTestAbstract into testsupport module
     add 221b004d83 Bump approvaltests 22.3.3->22.4.0, maven-compiler-plugin 3.11.0->3.12.1
     add f4acce30ee CAUSEWAY-3687: unify managed-bean-adapter hierarchy into single class (_SingletonBeanProvider)
     add 135526f23e CAUSEWAY-3687: adds MM validation when UI contributing proxy is detected
     add a68a262ace Bump com.google.cloud.tools:jib-maven-plugin from 3.4.0 to 3.4.1
     add dc04c99979 Merge pull request #2241 from apache/dependabot/maven/master/com.google.cloud.tools-jib-maven-plugin-3.4.1
     new 00fc42dd3e CAUSEWAY-3676: moves CausewayViewerGraphqlTestModuleIntegTestAbstract into testsupport module
     new 3fbbc94848 CAUSEWAY-3676: introduces PrintSchemaIntegTestAbstract
     new bb869b33ca CAUSEWAY-3676: improves javadoc
     new 9e10edf99e updates causeway stickers
     new 844e772005 CAUSEWAY-3676: updates docs for graphql test support
     new 56e073501e CAUSEWAY-3676: updates docs for graphql test support (2)

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (7f3d1f1e5a)
            \
             N -- N -- N   refs/heads/CAUSEWAY-3676 (56e073501e)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../supplemental-ui/img/home/causeway-sticker.pdf  | Bin 0 -> 19623 bytes
 .../supplemental-ui/img/home/causeway-sticker.png  | Bin 31368 -> 4066 bytes
 .../supplemental-ui/img/home/causeway-sticker.pptx | Bin 0 -> 40064 bytes
 .../org/apache/causeway/applib/id/LogicalType.java |   4 +
 .../applib/services/registry/ServiceRegistry.java  |  11 ++-
 bom/pom.xml                                        |   4 +-
 commons/pom.xml                                    |   8 +-
 .../commons/internal/ioc/_IocContainer.java        |   4 +-
 .../commons/internal/ioc/_IocContainer_Spring.java |  22 ++---
 .../commons/internal/ioc/_ManagedBeanAdapter.java  |  50 ------------
 .../internal/ioc/_ManagedBeanAdapter_Spring.java   |  49 -----------
 .../ioc/_ManagedBeanAdapter_forTestingLazy.java    |  44 ----------
 .../internal/ioc/_SingletonBeanProvider.java       |  90 +++++++++++++++++++++
 .../apache/causeway/commons/io/JsonUtilsTest.java  |  11 +++
 .../progmodel/ProgrammingModelConstants.java       |   4 +
 .../_testing/MetaModelContext_forTesting.java      |  36 ++++-----
 .../_testing/ServiceRegistry_forTesting.java       |  18 ++---
 .../context/MetaModelContext_usingSpring.java      |   9 +--
 .../DomainObjectAnnotationFacetFactory.java        |  48 +++++++++--
 .../core/metamodel/objectmanager/ObjectLoader.java |   6 +-
 .../services/registry/ServiceRegistryDefault.java  |  29 ++++---
 .../title/TitlesAndTranslationsValidator.java      |   3 +-
 .../RuntimeServicesTestAbstract.java               |   8 +-
 pom.xml                                            |   2 +-
 .../SpringServiceProvisioningTest.java             |   6 +-
 starters/pom.xml                                   |   4 +-
 .../viewer/test/schema/PrintSchemaIntegTest.java   |   9 +--
 viewers/graphql/testsupport/pom.xml                |  16 +---
 .../CausewayViewerGraphqlIntegTestAbstract.java    |  27 +++++++
 .../schema/PrintSchemaIntegTestAbstract.java       |  21 ++++-
 30 files changed, 281 insertions(+), 262 deletions(-)
 create mode 100644 antora/supplemental-ui/img/home/causeway-sticker.pdf
 create mode 100644 antora/supplemental-ui/img/home/causeway-sticker.pptx
 delete mode 100644 commons/src/main/java/org/apache/causeway/commons/internal/ioc/_ManagedBeanAdapter.java
 delete mode 100644 commons/src/main/java/org/apache/causeway/commons/internal/ioc/_ManagedBeanAdapter_Spring.java
 delete mode 100644 commons/src/main/java/org/apache/causeway/commons/internal/ioc/_ManagedBeanAdapter_forTestingLazy.java
 create mode 100644 commons/src/main/java/org/apache/causeway/commons/internal/ioc/_SingletonBeanProvider.java


(causeway) 04/06: updates causeway stickers

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 9e10edf99e8a29e0f75e31f0483ba24e4d5a236a
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Feb 29 23:28:31 2024 +0000

    updates causeway stickers
---
 antora/supplemental-ui/img/home/causeway-sticker.pdf | Bin 0 -> 19623 bytes
 antora/supplemental-ui/img/home/causeway-sticker.png | Bin 31368 -> 4066 bytes
 .../supplemental-ui/img/home/causeway-sticker.pptx   | Bin 0 -> 40064 bytes
 3 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/antora/supplemental-ui/img/home/causeway-sticker.pdf b/antora/supplemental-ui/img/home/causeway-sticker.pdf
new file mode 100644
index 0000000000..85af71cb60
Binary files /dev/null and b/antora/supplemental-ui/img/home/causeway-sticker.pdf differ
diff --git a/antora/supplemental-ui/img/home/causeway-sticker.png b/antora/supplemental-ui/img/home/causeway-sticker.png
index c82a023852..ad9493cc73 100644
Binary files a/antora/supplemental-ui/img/home/causeway-sticker.png and b/antora/supplemental-ui/img/home/causeway-sticker.png differ
diff --git a/antora/supplemental-ui/img/home/causeway-sticker.pptx b/antora/supplemental-ui/img/home/causeway-sticker.pptx
new file mode 100644
index 0000000000..4f2d293572
Binary files /dev/null and b/antora/supplemental-ui/img/home/causeway-sticker.pptx differ


(causeway) 06/06: CAUSEWAY-3676: updates docs for graphql test support (2)

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 56e073501e009c59132b5201f603d6b85e8688ae
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Feb 29 23:38:50 2024 +0000

    CAUSEWAY-3676: updates docs for graphql test support (2)
---
 .../viewer/test/schema/PrintSchemaIntegTest.java        |  9 +++------
 .../schema/PrintSchemaIntegTestAbstract.java            | 17 +++++++++++++++++
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/PrintSchemaIntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/PrintSchemaIntegTest.java
index db80da49b0..ef2fa41ede 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/PrintSchemaIntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/PrintSchemaIntegTest.java
@@ -18,21 +18,18 @@
  */
 package org.apache.causeway.viewer.graphql.viewer.test.schema;
 
-import org.apache.causeway.viewer.graphql.viewer.testsupport.schema.PrintSchemaIntegTestAbstract;
-
 import org.springframework.test.context.DynamicPropertyRegistry;
 import org.springframework.test.context.DynamicPropertySource;
-import org.springframework.transaction.annotation.Transactional;
 
-import org.apache.causeway.core.config.CausewayConfiguration;
+import org.apache.causeway.viewer.graphql.viewer.testsupport.schema.PrintSchemaIntegTestAbstract;
 
-import static org.apache.causeway.commons.internal.assertions._Assert.assertNotNull;
+import static org.apache.causeway.core.config.CausewayConfiguration.Viewer.Graphql.ApiVariant;
 
 public class PrintSchemaIntegTest extends PrintSchemaIntegTestAbstract {
 
     @DynamicPropertySource
     static void apiVariant(DynamicPropertyRegistry registry) {
-        registry.add("causeway.viewer.graphql.api-variant", CausewayConfiguration.Viewer.Graphql.ApiVariant.QUERY_WITH_MUTATIONS_NON_SPEC_COMPLIANT::name);
+        registry.add("causeway.viewer.graphql.api-variant", ApiVariant.QUERY_WITH_MUTATIONS_NON_SPEC_COMPLIANT::name);
     }
 
 }
diff --git a/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
index e95b377d6f..6bf0f1573e 100644
--- a/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
+++ b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
@@ -57,6 +57,23 @@ import lombok.val;
  *     be overridden from the framework's default, use for example Spring's @{@link DynamicPropertySource} annotation.
  * </p>
  *
+ * <p>
+ * For example:
+ *
+ * <pre>
+ * import static org.apache.causeway.core.config.CausewayConfiguration.Viewer.Graphql;
+ *
+ * public class PrintSchemaIntegTest extends PrintSchemaIntegTestAbstract {
+ *    {@literal @}DynamicPropertySource
+ *     static void apiVariant(DynamicPropertyRegistry registry) {
+ *         registry.add(
+ *              "causeway.viewer.graphql.api-variant",
+ *              Graphql.ApiVariant.QUERY_WITH_MUTATIONS_NON_SPEC_COMPLIANT::name);
+ *     }
+ * }
+ * </pre>
+ * </p>
+ *
  * @since 2.0 {@index}
  */
 @Transactional


(causeway) 02/06: CAUSEWAY-3676: introduces PrintSchemaIntegTestAbstract

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 3fbbc948488b58554e90d5a5933571b38ca8ab66
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 28 19:36:42 2024 +0000

    CAUSEWAY-3676: introduces PrintSchemaIntegTestAbstract
---
 .../viewer/test/e2e/Abstract_IntegTest.java        |   4 +-
 .../viewer/test/schema/PrintSchemaIntegTest.java   |  38 ++++
 .../viewer/test/utils/WinMergeGqlDiffReporter.java |  27 ---
 viewers/graphql/test/src/test/resources/schema.gql | 252 +++++++++++++++++++++
 ...=> CausewayViewerGraphqlIntegTestAbstract.java} |   8 +-
 .../schema/PrintSchemaIntegTestAbstract.java}      |  34 ++-
 6 files changed, 310 insertions(+), 53 deletions(-)

diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java
index 25f63bf8ef..b7edeff3fd 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java
@@ -32,7 +32,7 @@ import org.springframework.test.context.DynamicPropertySource;
 import org.springframework.transaction.annotation.Propagation;
 
 import org.apache.causeway.applib.services.bookmark.BookmarkService;
-import org.apache.causeway.viewer.graphql.viewer.testsupport.CausewayViewerGraphqlTestModuleIntegTestAbstract;
+import org.apache.causeway.viewer.graphql.viewer.testsupport.CausewayViewerGraphqlIntegTestAbstract;
 import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.Department;
 import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.DepartmentRepository;
 import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.DeptHeadRepository;
@@ -42,7 +42,7 @@ import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.StaffMemberRep
 @Import({
         UniversityModule.class
 })
-public abstract class Abstract_IntegTest extends CausewayViewerGraphqlTestModuleIntegTestAbstract {
+public abstract class Abstract_IntegTest extends CausewayViewerGraphqlIntegTestAbstract {
 
     protected Abstract_IntegTest() {
         super(Abstract_IntegTest.class);
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/PrintSchemaIntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/PrintSchemaIntegTest.java
new file mode 100644
index 0000000000..db80da49b0
--- /dev/null
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/PrintSchemaIntegTest.java
@@ -0,0 +1,38 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.viewer.graphql.viewer.test.schema;
+
+import org.apache.causeway.viewer.graphql.viewer.testsupport.schema.PrintSchemaIntegTestAbstract;
+
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.springframework.transaction.annotation.Transactional;
+
+import org.apache.causeway.core.config.CausewayConfiguration;
+
+import static org.apache.causeway.commons.internal.assertions._Assert.assertNotNull;
+
+public class PrintSchemaIntegTest extends PrintSchemaIntegTestAbstract {
+
+    @DynamicPropertySource
+    static void apiVariant(DynamicPropertyRegistry registry) {
+        registry.add("causeway.viewer.graphql.api-variant", CausewayConfiguration.Viewer.Graphql.ApiVariant.QUERY_WITH_MUTATIONS_NON_SPEC_COMPLIANT::name);
+    }
+
+}
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/utils/WinMergeGqlDiffReporter.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/utils/WinMergeGqlDiffReporter.java
deleted file mode 100644
index 999ddfc7f7..0000000000
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/utils/WinMergeGqlDiffReporter.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.apache.causeway.viewer.graphql.viewer.test.utils;
-
-import java.util.List;
-
-import com.spun.util.ArrayUtils;
-
-import org.approvaltests.reporters.DiffInfo;
-import org.approvaltests.reporters.DiffPrograms;
-import org.approvaltests.reporters.GenericDiffReporter;
-
-public class WinMergeGqlDiffReporter extends GenericDiffReporter {
-
-    private static DiffInfo WIN_MERGE_REPORTER =
-            new DiffInfo(DiffPrograms.Windows.WIN_MERGE_REPORTER.diffProgram,
-                    ArrayUtils.combine(
-                            List.of(".gql"),
-                            ArrayUtils.combine(
-                                    GenericDiffReporter.TEXT_FILE_EXTENSIONS,
-                                    GenericDiffReporter.IMAGE_FILE_EXTENSIONS)
-                            )
-                    );
-
-    public WinMergeGqlDiffReporter() {
-        super(WIN_MERGE_REPORTER);
-    }
-
-}
diff --git a/viewers/graphql/test/src/test/resources/schema.gql b/viewers/graphql/test/src/test/resources/schema.gql
index a033bcdba2..5b162765d0 100644
--- a/viewers/graphql/test/src/test/resources/schema.gql
+++ b/viewers/graphql/test/src/test/resources/schema.gql
@@ -259,6 +259,7 @@ type rich__causeway_applib_DomainObjectList__actionArguments__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
+  set(actionArguments: String): rich__causeway_applib_DomainObjectList
   validate(actionArguments: String): String
 }
 
@@ -267,6 +268,7 @@ type rich__causeway_applib_DomainObjectList__actionId__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
+  set(actionId: String): rich__causeway_applib_DomainObjectList
   validate(actionId: String): String
 }
 
@@ -275,6 +277,7 @@ type rich__causeway_applib_DomainObjectList__actionOwningFqcn__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
+  set(actionOwningFqcn: String): rich__causeway_applib_DomainObjectList
   validate(actionOwningFqcn: String): String
 }
 
@@ -283,6 +286,7 @@ type rich__causeway_applib_DomainObjectList__elementTypeFqcn__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(elementTypeFqcn: String!): rich__causeway_applib_DomainObjectList
   validate(elementTypeFqcn: String): String
 }
 
@@ -308,6 +312,7 @@ type rich__causeway_applib_DomainObjectList__title__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(title: String!): rich__causeway_applib_DomainObjectList
   validate(title: String): String
 }
 
@@ -333,6 +338,7 @@ type rich__causeway_applib_FacetGroupNode__facets__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(facets: String!): rich__causeway_applib_FacetGroupNode
   validate(facets: String): String
 }
 
@@ -351,6 +357,7 @@ type rich__causeway_applib_FacetGroupNode__parentNode__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
+  set(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): rich__causeway_applib_FacetGroupNode
   validate(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
@@ -387,6 +394,7 @@ type rich__causeway_applib_ParameterNode__parameter__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(parameter: String!): rich__causeway_applib_ParameterNode
   validate(parameter: String): String
 }
 
@@ -395,6 +403,7 @@ type rich__causeway_applib_ParameterNode__parentNode__gqlv_property {
   disabled: String
   get: rich__causeway_applib_node_ActionNode!
   hidden: Boolean
+  set(parentNode: rich__causeway_applib_node_ActionNode__gqlv_input!): rich__causeway_applib_ParameterNode
   validate(parentNode: rich__causeway_applib_node_ActionNode__gqlv_input): String
 }
 
@@ -433,6 +442,7 @@ type rich__causeway_applib_PropertyNode__mixedIn__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
+  set(mixedIn: Boolean!): rich__causeway_applib_PropertyNode
   validate(mixedIn: Boolean): String
 }
 
@@ -441,6 +451,7 @@ type rich__causeway_applib_PropertyNode__parentNode__gqlv_property {
   disabled: String
   get: rich__causeway_applib_TypeNode!
   hidden: Boolean
+  set(parentNode: rich__causeway_applib_TypeNode__gqlv_input!): rich__causeway_applib_PropertyNode
   validate(parentNode: rich__causeway_applib_TypeNode__gqlv_input): String
 }
 
@@ -449,6 +460,7 @@ type rich__causeway_applib_PropertyNode__property__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(property: String!): rich__causeway_applib_PropertyNode
   validate(property: String): String
 }
 
@@ -466,6 +478,7 @@ type rich__causeway_applib_RoleMemento__description__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(description: String!): rich__causeway_applib_RoleMemento
   validate(description: String): String
 }
 
@@ -485,6 +498,7 @@ type rich__causeway_applib_RoleMemento__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(name: String!): rich__causeway_applib_RoleMemento
   validate(name: String): String
 }
 
@@ -510,6 +524,7 @@ type rich__causeway_applib_TypeNode__domainClassDto__gqlv_property {
   disabled: String
   get: rich__causeway_schema_metamodel_v2_DomainClassDto!
   hidden: Boolean
+  set(domainClassDto: rich__causeway_schema_metamodel_v2_DomainClassDto__gqlv_input!): rich__causeway_applib_TypeNode
   validate(domainClassDto: rich__causeway_schema_metamodel_v2_DomainClassDto__gqlv_input): String
 }
 
@@ -528,6 +543,7 @@ type rich__causeway_applib_TypeNode__parentNode__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
+  set(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): rich__causeway_applib_TypeNode
   validate(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
@@ -563,6 +579,7 @@ type rich__causeway_applib_UserMemento__authenticationCode__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(authenticationCode: String!): rich__causeway_applib_UserMemento
   validate(authenticationCode: String): String
 }
 
@@ -572,6 +589,7 @@ type rich__causeway_applib_UserMemento__authenticationSource__gqlv_property {
   disabled: String
   get: rich__org_apache_causeway_applib_services_user_UserMemento_AuthenticationSource__gqlv_enum!
   hidden: Boolean
+  set(authenticationSource: rich__org_apache_causeway_applib_services_user_UserMemento_AuthenticationSource__gqlv_enum!): rich__causeway_applib_UserMemento
   validate(authenticationSource: rich__org_apache_causeway_applib_services_user_UserMemento_AuthenticationSource__gqlv_enum): String
 }
 
@@ -580,6 +598,7 @@ type rich__causeway_applib_UserMemento__avatarUrl__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
+  set(avatarUrl: String): rich__causeway_applib_UserMemento
   validate(avatarUrl: String): String
 }
 
@@ -599,6 +618,7 @@ type rich__causeway_applib_UserMemento__impersonating__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
+  set(impersonating: Boolean!): rich__causeway_applib_UserMemento
   validate(impersonating: Boolean): String
 }
 
@@ -607,6 +627,7 @@ type rich__causeway_applib_UserMemento__languageLocale__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
+  set(languageLocale: String): rich__causeway_applib_UserMemento
   validate(languageLocale: String): String
 }
 
@@ -615,6 +636,7 @@ type rich__causeway_applib_UserMemento__multiTenancyToken__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
+  set(multiTenancyToken: String): rich__causeway_applib_UserMemento
   validate(multiTenancyToken: String): String
 }
 
@@ -623,6 +645,7 @@ type rich__causeway_applib_UserMemento__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(name: String!): rich__causeway_applib_UserMemento
   validate(name: String): String
 }
 
@@ -631,6 +654,7 @@ type rich__causeway_applib_UserMemento__numberFormatLocale__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
+  set(numberFormatLocale: String): rich__causeway_applib_UserMemento
   validate(numberFormatLocale: String): String
 }
 
@@ -639,6 +663,7 @@ type rich__causeway_applib_UserMemento__realName__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
+  set(realName: String): rich__causeway_applib_UserMemento
   validate(realName: String): String
 }
 
@@ -654,6 +679,7 @@ type rich__causeway_applib_UserMemento__timeFormatLocale__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
+  set(timeFormatLocale: String): rich__causeway_applib_UserMemento
   validate(timeFormatLocale: String): String
 }
 
@@ -692,6 +718,7 @@ type rich__causeway_applib_node_ActionNode__action__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(action: String!): rich__causeway_applib_node_ActionNode
   validate(action: String): String
 }
 
@@ -717,6 +744,7 @@ type rich__causeway_applib_node_ActionNode__mixedIn__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
+  set(mixedIn: Boolean!): rich__causeway_applib_node_ActionNode
   validate(mixedIn: Boolean): String
 }
 
@@ -725,6 +753,7 @@ type rich__causeway_applib_node_ActionNode__parentNode__gqlv_property {
   disabled: String
   get: rich__causeway_applib_TypeNode!
   hidden: Boolean
+  set(parentNode: rich__causeway_applib_TypeNode__gqlv_input!): rich__causeway_applib_node_ActionNode
   validate(parentNode: rich__causeway_applib_TypeNode__gqlv_input): String
 }
 
@@ -752,6 +781,7 @@ type rich__causeway_applib_node_CollectionNode__collection__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(collection: String!): rich__causeway_applib_node_CollectionNode
   validate(collection: String): String
 }
 
@@ -771,6 +801,7 @@ type rich__causeway_applib_node_CollectionNode__mixedIn__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
+  set(mixedIn: Boolean!): rich__causeway_applib_node_CollectionNode
   validate(mixedIn: Boolean): String
 }
 
@@ -779,6 +810,7 @@ type rich__causeway_applib_node_CollectionNode__parentNode__gqlv_property {
   disabled: String
   get: rich__causeway_applib_TypeNode!
   hidden: Boolean
+  set(parentNode: rich__causeway_applib_TypeNode__gqlv_input!): rich__causeway_applib_node_CollectionNode
   validate(parentNode: rich__causeway_applib_TypeNode__gqlv_input): String
 }
 
@@ -804,6 +836,7 @@ type rich__causeway_applib_node_FacetAttrNode__facetAttr__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(facetAttr: String!): rich__causeway_applib_node_FacetAttrNode
   validate(facetAttr: String): String
 }
 
@@ -823,6 +856,7 @@ type rich__causeway_applib_node_FacetAttrNode__parentNode__gqlv_property {
   disabled: String
   get: rich__causeway_applib_node_FacetNode!
   hidden: Boolean
+  set(parentNode: rich__causeway_applib_node_FacetNode__gqlv_input!): rich__causeway_applib_node_FacetAttrNode
   validate(parentNode: rich__causeway_applib_node_FacetNode__gqlv_input): String
 }
 
@@ -850,6 +884,7 @@ type rich__causeway_applib_node_FacetNode__facet__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(facet: String!): rich__causeway_applib_node_FacetNode
   validate(facet: String): String
 }
 
@@ -868,6 +903,7 @@ type rich__causeway_applib_node_FacetNode__parentNode__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
+  set(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): rich__causeway_applib_node_FacetNode
   validate(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
@@ -876,6 +912,7 @@ type rich__causeway_applib_node_FacetNode__shadowed__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
+  set(shadowed: Boolean!): rich__causeway_applib_node_FacetNode
   validate(shadowed: Boolean): String
 }
 
@@ -920,6 +957,7 @@ type rich__causeway_conf_ConfigurationProperty__key__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(key: String!): rich__causeway_conf_ConfigurationProperty
   validate(key: String): String
 }
 
@@ -928,6 +966,7 @@ type rich__causeway_conf_ConfigurationProperty__value__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(value: String!): rich__causeway_conf_ConfigurationProperty
   validate(value: String): String
 }
 
@@ -1003,6 +1042,7 @@ type rich__causeway_feat_ApplicationFeatureViewModel__memberName__gqlv_property
   disabled: String
   get: String!
   hidden: Boolean
+  set(memberName: String!): rich__causeway_feat_ApplicationFeatureViewModel
   validate(memberName: String): String
 }
 
@@ -1011,6 +1051,7 @@ type rich__causeway_feat_ApplicationFeatureViewModel__namespaceName__gqlv_proper
   disabled: String
   get: String!
   hidden: Boolean
+  set(namespaceName: String!): rich__causeway_feat_ApplicationFeatureViewModel
   validate(namespaceName: String): String
 }
 
@@ -1018,6 +1059,7 @@ type rich__causeway_feat_ApplicationFeatureViewModel__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
+  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationFeatureViewModel
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1026,6 +1068,7 @@ type rich__causeway_feat_ApplicationFeatureViewModel__typeSimpleName__gqlv_prope
   disabled: String
   get: String!
   hidden: Boolean
+  set(typeSimpleName: String!): rich__causeway_feat_ApplicationFeatureViewModel
   validate(typeSimpleName: String): String
 }
 
@@ -1066,6 +1109,7 @@ type rich__causeway_feat_ApplicationNamespace__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(memberName: String!): rich__causeway_feat_ApplicationNamespace
   validate(memberName: String): String
 }
 
@@ -1074,6 +1118,7 @@ type rich__causeway_feat_ApplicationNamespace__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(namespaceName: String!): rich__causeway_feat_ApplicationNamespace
   validate(namespaceName: String): String
 }
 
@@ -1081,6 +1126,7 @@ type rich__causeway_feat_ApplicationNamespace__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
+  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationNamespace
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1089,6 +1135,7 @@ type rich__causeway_feat_ApplicationNamespace__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(typeSimpleName: String!): rich__causeway_feat_ApplicationNamespace
   validate(typeSimpleName: String): String
 }
 
@@ -1134,6 +1181,7 @@ type rich__causeway_feat_ApplicationTypeAction__actionSemantics__gqlv_property {
   disabled: String
   get: rich__causeway_applib_annotation_SemanticsOf__gqlv_enum!
   hidden: Boolean
+  set(actionSemantics: rich__causeway_applib_annotation_SemanticsOf__gqlv_enum!): rich__causeway_feat_ApplicationTypeAction
   validate(actionSemantics: rich__causeway_applib_annotation_SemanticsOf__gqlv_enum): String
 }
 
@@ -1153,6 +1201,7 @@ type rich__causeway_feat_ApplicationTypeAction__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(memberName: String!): rich__causeway_feat_ApplicationTypeAction
   validate(memberName: String): String
 }
 
@@ -1161,6 +1210,7 @@ type rich__causeway_feat_ApplicationTypeAction__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(namespaceName: String!): rich__causeway_feat_ApplicationTypeAction
   validate(namespaceName: String): String
 }
 
@@ -1168,6 +1218,7 @@ type rich__causeway_feat_ApplicationTypeAction__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
+  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationTypeAction
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1176,6 +1227,7 @@ type rich__causeway_feat_ApplicationTypeAction__returnType__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(returnType: String!): rich__causeway_feat_ApplicationTypeAction
   validate(returnType: String): String
 }
 
@@ -1184,6 +1236,7 @@ type rich__causeway_feat_ApplicationTypeAction__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(typeSimpleName: String!): rich__causeway_feat_ApplicationTypeAction
   validate(typeSimpleName: String): String
 }
 
@@ -1209,6 +1262,7 @@ type rich__causeway_feat_ApplicationTypeCollection__derived__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
+  set(derived: Boolean!): rich__causeway_feat_ApplicationTypeCollection
   validate(derived: Boolean): String
 }
 
@@ -1217,6 +1271,7 @@ type rich__causeway_feat_ApplicationTypeCollection__elementType__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(elementType: String!): rich__causeway_feat_ApplicationTypeCollection
   validate(elementType: String): String
 }
 
@@ -1236,6 +1291,7 @@ type rich__causeway_feat_ApplicationTypeCollection__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(memberName: String!): rich__causeway_feat_ApplicationTypeCollection
   validate(memberName: String): String
 }
 
@@ -1244,6 +1300,7 @@ type rich__causeway_feat_ApplicationTypeCollection__namespaceName__gqlv_property
   disabled: String
   get: String!
   hidden: Boolean
+  set(namespaceName: String!): rich__causeway_feat_ApplicationTypeCollection
   validate(namespaceName: String): String
 }
 
@@ -1251,6 +1308,7 @@ type rich__causeway_feat_ApplicationTypeCollection__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
+  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationTypeCollection
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1259,6 +1317,7 @@ type rich__causeway_feat_ApplicationTypeCollection__typeSimpleName__gqlv_propert
   disabled: String
   get: String!
   hidden: Boolean
+  set(typeSimpleName: String!): rich__causeway_feat_ApplicationTypeCollection
   validate(typeSimpleName: String): String
 }
 
@@ -1291,6 +1350,7 @@ type rich__causeway_feat_ApplicationTypeMember__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(memberName: String!): rich__causeway_feat_ApplicationTypeMember
   validate(memberName: String): String
 }
 
@@ -1299,6 +1359,7 @@ type rich__causeway_feat_ApplicationTypeMember__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(namespaceName: String!): rich__causeway_feat_ApplicationTypeMember
   validate(namespaceName: String): String
 }
 
@@ -1306,6 +1367,7 @@ type rich__causeway_feat_ApplicationTypeMember__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
+  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationTypeMember
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1314,6 +1376,7 @@ type rich__causeway_feat_ApplicationTypeMember__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(typeSimpleName: String!): rich__causeway_feat_ApplicationTypeMember
   validate(typeSimpleName: String): String
 }
 
@@ -1343,6 +1406,7 @@ type rich__causeway_feat_ApplicationTypeProperty__derived__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
+  set(derived: Boolean!): rich__causeway_feat_ApplicationTypeProperty
   validate(derived: Boolean): String
 }
 
@@ -1362,6 +1426,7 @@ type rich__causeway_feat_ApplicationTypeProperty__maxLength__gqlv_property {
   disabled: String
   get: Int
   hidden: Boolean
+  set(maxLength: Int): rich__causeway_feat_ApplicationTypeProperty
   validate(maxLength: Int): String
 }
 
@@ -1370,6 +1435,7 @@ type rich__causeway_feat_ApplicationTypeProperty__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(memberName: String!): rich__causeway_feat_ApplicationTypeProperty
   validate(memberName: String): String
 }
 
@@ -1378,6 +1444,7 @@ type rich__causeway_feat_ApplicationTypeProperty__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(namespaceName: String!): rich__causeway_feat_ApplicationTypeProperty
   validate(namespaceName: String): String
 }
 
@@ -1385,6 +1452,7 @@ type rich__causeway_feat_ApplicationTypeProperty__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
+  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationTypeProperty
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1393,6 +1461,7 @@ type rich__causeway_feat_ApplicationTypeProperty__returnType__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(returnType: String!): rich__causeway_feat_ApplicationTypeProperty
   validate(returnType: String): String
 }
 
@@ -1401,6 +1470,7 @@ type rich__causeway_feat_ApplicationTypeProperty__typeSimpleName__gqlv_property
   disabled: String
   get: String!
   hidden: Boolean
+  set(typeSimpleName: String!): rich__causeway_feat_ApplicationTypeProperty
   validate(typeSimpleName: String): String
 }
 
@@ -1409,6 +1479,7 @@ type rich__causeway_feat_ApplicationTypeProperty__typicalLength__gqlv_property {
   disabled: String
   get: Int
   hidden: Boolean
+  set(typicalLength: Int): rich__causeway_feat_ApplicationTypeProperty
   validate(typicalLength: Int): String
 }
 
@@ -1442,6 +1513,7 @@ type rich__causeway_feat_ApplicationType__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(memberName: String!): rich__causeway_feat_ApplicationType
   validate(memberName: String): String
 }
 
@@ -1450,6 +1522,7 @@ type rich__causeway_feat_ApplicationType__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(namespaceName: String!): rich__causeway_feat_ApplicationType
   validate(namespaceName: String): String
 }
 
@@ -1457,6 +1530,7 @@ type rich__causeway_feat_ApplicationType__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
+  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationType
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1472,6 +1546,7 @@ type rich__causeway_feat_ApplicationType__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(typeSimpleName: String!): rich__causeway_feat_ApplicationType
   validate(typeSimpleName: String): String
 }
 
@@ -1503,6 +1578,7 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__actions__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(actions: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(actions: String): String
 }
 
@@ -1511,6 +1587,7 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__annotations__gqlv_proper
   disabled: String
   get: String!
   hidden: Boolean
+  set(annotations: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(annotations: String): String
 }
 
@@ -1519,6 +1596,7 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__collections__gqlv_proper
   disabled: String
   get: String!
   hidden: Boolean
+  set(collections: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(collections: String): String
 }
 
@@ -1527,6 +1605,7 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__facets__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(facets: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(facets: String): String
 }
 
@@ -1546,6 +1625,7 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__id__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(id: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(id: String): String
 }
 
@@ -1554,6 +1634,7 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__majorVersion__gqlv_prope
   disabled: String
   get: String
   hidden: Boolean
+  set(majorVersion: String): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(majorVersion: String): String
 }
 
@@ -1562,6 +1643,7 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__minorVersion__gqlv_prope
   disabled: String
   get: String
   hidden: Boolean
+  set(minorVersion: String): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(minorVersion: String): String
 }
 
@@ -1570,6 +1652,7 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__properties__gqlv_propert
   disabled: String
   get: String!
   hidden: Boolean
+  set(properties: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(properties: String): String
 }
 
@@ -1578,6 +1661,7 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__service__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
+  set(service: Boolean!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(service: Boolean): String
 }
 
@@ -1631,6 +1715,7 @@ type rich__causeway_testing_fixtures_FixtureResult__className__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(className: String!): rich__causeway_testing_fixtures_FixtureResult
   validate(className: String): String
 }
 
@@ -1639,6 +1724,7 @@ type rich__causeway_testing_fixtures_FixtureResult__fixtureScriptClassName__gqlv
   disabled: String
   get: String
   hidden: Boolean
+  set(fixtureScriptClassName: String): rich__causeway_testing_fixtures_FixtureResult
   validate(fixtureScriptClassName: String): String
 }
 
@@ -1658,6 +1744,7 @@ type rich__causeway_testing_fixtures_FixtureResult__key__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(key: String!): rich__causeway_testing_fixtures_FixtureResult
   validate(key: String): String
 }
 
@@ -1665,6 +1752,7 @@ type rich__causeway_testing_fixtures_FixtureResult__object__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
+  set(object: String!): rich__causeway_testing_fixtures_FixtureResult
   validate(object: String): String
 }
 
@@ -1826,6 +1914,7 @@ type rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__parentNode__
   datatype: String
   disabled: String
   hidden: Boolean
+  set(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): rich__org_apache_causeway_core_metamodel_inspect_model_MMNode
   validate(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
@@ -1862,6 +1951,7 @@ type rich__org_apache_causeway_core_metamodel_inspect_model_MemberNode__mixedIn_
   disabled: String
   get: Boolean!
   hidden: Boolean
+  set(mixedIn: Boolean!): rich__org_apache_causeway_core_metamodel_inspect_model_MemberNode
   validate(mixedIn: Boolean): String
 }
 
@@ -1870,6 +1960,7 @@ type rich__org_apache_causeway_core_metamodel_inspect_model_MemberNode__parentNo
   disabled: String
   get: rich__causeway_applib_TypeNode!
   hidden: Boolean
+  set(parentNode: rich__causeway_applib_TypeNode__gqlv_input!): rich__org_apache_causeway_core_metamodel_inspect_model_MemberNode
   validate(parentNode: rich__causeway_applib_TypeNode__gqlv_input): String
 }
 
@@ -1887,6 +1978,7 @@ type rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScr
   disabled: String
   get: String!
   hidden: Boolean
+  set(friendlyName: String!): rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript
   validate(friendlyName: String): String
 }
 
@@ -1906,6 +1998,7 @@ type rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScr
   disabled: String
   get: String!
   hidden: Boolean
+  set(qualifiedName: String!): rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript
   validate(qualifiedName: String): String
 }
 
@@ -1930,11 +2023,24 @@ type rich__university_admin_AdminMenu__actionWithDisabledParam__firstParam__gqlv
 type rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeNonIdempotent(firstParam: String!, secondParam: String!, thirdParameter: String!): rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_params
   validate(firstParam: String, secondParam: String, thirdParameter: String): String
 }
 
+type rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_args {
+  firstParam: String
+  secondParam: String
+  thirdParameter: String
+}
+
+type rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_invoke {
+  "Arguments used to invoke this action"
+  args: rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_args
+  results: String
+}
+
 type rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_params {
   "First Param"
   firstParam: rich__university_admin_AdminMenu__actionWithDisabledParam__firstParam__gqlv_action_parameter
@@ -1968,11 +2074,23 @@ type rich__university_admin_AdminMenu__actionWithHiddenParam__firstParam__gqlv_a
 type rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeNonIdempotent(firstParam: String!, secondParam: String!): rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_params
   validate(firstParam: String, secondParam: String): String
 }
 
+type rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_args {
+  firstParam: String
+  secondParam: String
+}
+
+type rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_invoke {
+  "Arguments used to invoke this action"
+  args: rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_args
+  results: String
+}
+
 type rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_params {
   "First Param"
   firstParam: rich__university_admin_AdminMenu__actionWithHiddenParam__firstParam__gqlv_action_parameter
@@ -1990,15 +2108,25 @@ type rich__university_admin_AdminMenu__actionWithHiddenParam__secondParam__gqlv_
 type rich__university_admin_AdminMenu__adminAction__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeNonIdempotent: rich__university_admin_AdminMenu__adminAction__gqlv_action_invoke
   validate: String
 }
 
+type rich__university_admin_AdminMenu__adminAction__gqlv_action_invoke {
+  results: String
+}
+
 type rich__university_admin_AdminMenu__otherAdminAction__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeNonIdempotent: rich__university_admin_AdminMenu__otherAdminAction__gqlv_action_invoke
   validate: String
 }
 
+type rich__university_admin_AdminMenu__otherAdminAction__gqlv_action_invoke {
+  results: String
+}
+
 type rich__university_calc_Calculator {
   "Add Big Decimals"
   addBigDecimals: rich__university_calc_Calculator__addBigDecimals__gqlv_action
@@ -3213,11 +3341,22 @@ type rich__university_dept_Department {
 type rich__university_dept_Department__addStaffMember__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeIdempotent(staffMember: rich__university_dept_StaffMember__gqlv_input!): rich__university_dept_Department__addStaffMember__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Department__addStaffMember__gqlv_action_params
   validate(staffMember: rich__university_dept_StaffMember__gqlv_input): String
 }
 
+type rich__university_dept_Department__addStaffMember__gqlv_action_args {
+  staffMember: rich__university_dept_StaffMember
+}
+
+type rich__university_dept_Department__addStaffMember__gqlv_action_invoke {
+  "Arguments used to invoke this action"
+  args: rich__university_dept_Department__addStaffMember__gqlv_action_args
+  results: rich__university_dept_Department
+}
+
 type rich__university_dept_Department__addStaffMember__gqlv_action_params {
   "Staff member of a university department, responsible for delivering lectures, tutorials, exam invigilation and candidate interviews"
   staffMember: rich__university_dept_Department__addStaffMember__staffMember__gqlv_action_parameter
@@ -3235,11 +3374,22 @@ type rich__university_dept_Department__addStaffMember__staffMember__gqlv_action_
 type rich__university_dept_Department__addStaffMembers__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeIdempotent(staffMembers: [rich__university_dept_StaffMember__gqlv_input]): rich__university_dept_Department__addStaffMembers__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Department__addStaffMembers__gqlv_action_params
   validate(staffMembers: [rich__university_dept_StaffMember__gqlv_input]): String
 }
 
+type rich__university_dept_Department__addStaffMembers__gqlv_action_args {
+  staffMembers: [rich__university_dept_StaffMember]
+}
+
+type rich__university_dept_Department__addStaffMembers__gqlv_action_invoke {
+  "Arguments used to invoke this action"
+  args: rich__university_dept_Department__addStaffMembers__gqlv_action_args
+  results: rich__university_dept_Department
+}
+
 type rich__university_dept_Department__addStaffMembers__gqlv_action_params {
   "Staff member of a university department, responsible for delivering lectures, tutorials, exam invigilation and candidate interviews"
   staffMembers: rich__university_dept_Department__addStaffMembers__staffMembers__gqlv_action_parameter
@@ -3257,11 +3407,22 @@ type rich__university_dept_Department__addStaffMembers__staffMembers__gqlv_actio
 type rich__university_dept_Department__changeDeptHead__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeIdempotent(newDeptHead: rich__university_dept_DeptHead__gqlv_input!): rich__university_dept_Department__changeDeptHead__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Department__changeDeptHead__gqlv_action_params
   validate(newDeptHead: rich__university_dept_DeptHead__gqlv_input): String
 }
 
+type rich__university_dept_Department__changeDeptHead__gqlv_action_args {
+  newDeptHead: rich__university_dept_DeptHead
+}
+
+type rich__university_dept_Department__changeDeptHead__gqlv_action_invoke {
+  "Arguments used to invoke this action"
+  args: rich__university_dept_Department__changeDeptHead__gqlv_action_args
+  results: rich__university_dept_Department
+}
+
 type rich__university_dept_Department__changeDeptHead__gqlv_action_params {
   "Departmental head, responsible for curriculum, research, funding and staff"
   newDeptHead: rich__university_dept_Department__changeDeptHead__newDeptHead__gqlv_action_parameter
@@ -3280,11 +3441,22 @@ type rich__university_dept_Department__changeDeptHead__newDeptHead__gqlv_action_
 type rich__university_dept_Department__changeName__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeIdempotent(newName: String!): rich__university_dept_Department__changeName__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Department__changeName__gqlv_action_params
   validate(newName: String): String
 }
 
+type rich__university_dept_Department__changeName__gqlv_action_args {
+  newName: String
+}
+
+type rich__university_dept_Department__changeName__gqlv_action_invoke {
+  "Arguments used to invoke this action"
+  args: rich__university_dept_Department__changeName__gqlv_action_args
+  results: rich__university_dept_Department
+}
+
 type rich__university_dept_Department__changeName__gqlv_action_params {
   "New Name"
   newName: rich__university_dept_Department__changeName__newName__gqlv_action_parameter
@@ -3305,6 +3477,7 @@ type rich__university_dept_Department__deptHead__gqlv_property {
   disabled: String
   get: rich__university_dept_DeptHead
   hidden: Boolean
+  set(deptHead: rich__university_dept_DeptHead__gqlv_input): rich__university_dept_Department
   validate(deptHead: rich__university_dept_DeptHead__gqlv_input): String
 }
 
@@ -3325,6 +3498,7 @@ type rich__university_dept_Department__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(name: String!): rich__university_dept_Department
   validate(name: String): String
 }
 
@@ -3332,11 +3506,22 @@ type rich__university_dept_Department__name__gqlv_property {
 type rich__university_dept_Department__removeStaffMember__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeIdempotent(staffMember: rich__university_dept_StaffMember__gqlv_input!): rich__university_dept_Department__removeStaffMember__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Department__removeStaffMember__gqlv_action_params
   validate(staffMember: rich__university_dept_StaffMember__gqlv_input): String
 }
 
+type rich__university_dept_Department__removeStaffMember__gqlv_action_args {
+  staffMember: rich__university_dept_StaffMember
+}
+
+type rich__university_dept_Department__removeStaffMember__gqlv_action_invoke {
+  "Arguments used to invoke this action"
+  args: rich__university_dept_Department__removeStaffMember__gqlv_action_args
+  results: rich__university_dept_Department
+}
+
 type rich__university_dept_Department__removeStaffMember__gqlv_action_params {
   "Staff member of a university department, responsible for delivering lectures, tutorials, exam invigilation and candidate interviews"
   staffMember: rich__university_dept_Department__removeStaffMember__staffMember__gqlv_action_parameter
@@ -3379,11 +3564,23 @@ type rich__university_dept_Departments__createDepartment__deptHead__gqlv_action_
 type rich__university_dept_Departments__createDepartment__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeNonIdempotent(deptHead: rich__university_dept_DeptHead__gqlv_input, name: String!): rich__university_dept_Departments__createDepartment__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Departments__createDepartment__gqlv_action_params
   validate(deptHead: rich__university_dept_DeptHead__gqlv_input, name: String): String
 }
 
+type rich__university_dept_Departments__createDepartment__gqlv_action_args {
+  deptHead: rich__university_dept_DeptHead
+  name: String
+}
+
+type rich__university_dept_Departments__createDepartment__gqlv_action_invoke {
+  "Arguments used to invoke this action"
+  args: rich__university_dept_Departments__createDepartment__gqlv_action_args
+  results: rich__university_dept_Department
+}
+
 type rich__university_dept_Departments__createDepartment__gqlv_action_params {
   "Departmental head, responsible for curriculum, research, funding and staff"
   deptHead: rich__university_dept_Departments__createDepartment__deptHead__gqlv_action_parameter
@@ -3468,11 +3665,22 @@ type rich__university_dept_DeptHead__changeDepartment__department__gqlv_action_p
 type rich__university_dept_DeptHead__changeDepartment__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeIdempotent(department: rich__university_dept_Department__gqlv_input!): rich__university_dept_DeptHead__changeDepartment__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_DeptHead__changeDepartment__gqlv_action_params
   validate(department: rich__university_dept_Department__gqlv_input): String
 }
 
+type rich__university_dept_DeptHead__changeDepartment__gqlv_action_args {
+  department: rich__university_dept_Department
+}
+
+type rich__university_dept_DeptHead__changeDepartment__gqlv_action_invoke {
+  "Arguments used to invoke this action"
+  args: rich__university_dept_DeptHead__changeDepartment__gqlv_action_args
+  results: rich__university_dept_DeptHead
+}
+
 type rich__university_dept_DeptHead__changeDepartment__gqlv_action_params {
   "University department specializing in a field of study"
   department: rich__university_dept_DeptHead__changeDepartment__department__gqlv_action_parameter
@@ -3482,11 +3690,22 @@ type rich__university_dept_DeptHead__changeDepartment__gqlv_action_params {
 type rich__university_dept_DeptHead__changeName__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeIdempotent(newName: String!): rich__university_dept_DeptHead__changeName__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_DeptHead__changeName__gqlv_action_params
   validate(newName: String): String
 }
 
+type rich__university_dept_DeptHead__changeName__gqlv_action_args {
+  newName: String
+}
+
+type rich__university_dept_DeptHead__changeName__gqlv_action_invoke {
+  "Arguments used to invoke this action"
+  args: rich__university_dept_DeptHead__changeName__gqlv_action_args
+  results: rich__university_dept_DeptHead
+}
+
 type rich__university_dept_DeptHead__changeName__gqlv_action_params {
   "New Name"
   newName: rich__university_dept_DeptHead__changeName__newName__gqlv_action_parameter
@@ -3507,6 +3726,7 @@ type rich__university_dept_DeptHead__department__gqlv_property {
   disabled: String
   get: rich__university_dept_Department
   hidden: Boolean
+  set(department: rich__university_dept_Department__gqlv_input): rich__university_dept_DeptHead
   validate(department: rich__university_dept_Department__gqlv_input): String
 }
 
@@ -3527,6 +3747,7 @@ type rich__university_dept_DeptHead__name__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
+  set(name: String): rich__university_dept_DeptHead
   validate(name: String): String
 }
 
@@ -3673,6 +3894,7 @@ type rich__university_dept_Person__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(name: String!): rich__university_dept_Person
   validate(name: String): String
 }
 
@@ -3706,6 +3928,7 @@ type rich__university_dept_StaffMember__department__gqlv_property {
   disabled: String
   get: rich__university_dept_Department
   hidden: Boolean
+  set(department: rich__university_dept_Department__gqlv_input): rich__university_dept_StaffMember
   validate(department: rich__university_dept_Department__gqlv_input): String
 }
 
@@ -3727,6 +3950,7 @@ type rich__university_dept_StaffMember__grade__gqlv_property {
   disabled: String
   get: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_dept_Grade__gqlv_enum!
   hidden: Boolean
+  set(grade: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_dept_Grade__gqlv_enum!): rich__university_dept_StaffMember
   validate(grade: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_dept_Grade__gqlv_enum): String
 }
 
@@ -3735,6 +3959,7 @@ type rich__university_dept_StaffMember__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
+  set(name: String!): rich__university_dept_StaffMember
   validate(name: String): String
 }
 
@@ -3743,6 +3968,7 @@ type rich__university_dept_StaffMember__photo__gqlv_property {
   disabled: String
   get: rich__university_dept_StaffMember__photo__gqlv_property_lob
   hidden: Boolean
+  set(photo: String): rich__university_dept_StaffMember
   validate(photo: String): String
 }
 
@@ -3764,11 +3990,23 @@ type rich__university_dept_Staff__createStaffMember__department__gqlv_action_par
 type rich__university_dept_Staff__createStaffMember__gqlv_action {
   disabled: String
   hidden: Boolean
+  invokeNonIdempotent(department: rich__university_dept_Department__gqlv_input!, name: String!): rich__university_dept_Staff__createStaffMember__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Staff__createStaffMember__gqlv_action_params
   validate(department: rich__university_dept_Department__gqlv_input, name: String): String
 }
 
+type rich__university_dept_Staff__createStaffMember__gqlv_action_args {
+  department: rich__university_dept_Department
+  name: String
+}
+
+type rich__university_dept_Staff__createStaffMember__gqlv_action_invoke {
+  "Arguments used to invoke this action"
+  args: rich__university_dept_Staff__createStaffMember__gqlv_action_args
+  results: rich__university_dept_StaffMember
+}
+
 type rich__university_dept_Staff__createStaffMember__gqlv_action_params {
   "University department specializing in a field of study"
   department: rich__university_dept_Staff__createStaffMember__department__gqlv_action_parameter
@@ -4555,8 +4793,18 @@ type simple__university_calc_Calculator {
 type simple__university_dept_Department {
   "Object metadata"
   _meta: simple__university_dept_Department__gqlv_meta
+  "University department specializing in a field of study"
+  addStaffMember(staffMember: simple__university_dept_StaffMember__gqlv_input!): simple__university_dept_Department
+  "University department specializing in a field of study"
+  addStaffMembers(staffMembers: [simple__university_dept_StaffMember__gqlv_input]): simple__university_dept_Department
+  "University department specializing in a field of study"
+  changeDeptHead(newDeptHead: simple__university_dept_DeptHead__gqlv_input!): simple__university_dept_Department
+  "University department specializing in a field of study"
+  changeName(newName: String!): simple__university_dept_Department
   deptHead: simple__university_dept_DeptHead
   name: String!
+  "University department specializing in a field of study"
+  removeStaffMember(staffMember: simple__university_dept_StaffMember__gqlv_input!): simple__university_dept_Department
   "Staff member of a university department, responsible for delivering lectures, tutorials, exam invigilation and candidate interviews"
   staffMembers: [simple__university_dept_StaffMember]
 }
@@ -4586,6 +4834,10 @@ type simple__university_dept_Departments {
 type simple__university_dept_DeptHead {
   "Object metadata"
   _meta: simple__university_dept_DeptHead__gqlv_meta
+  "Departmental head, responsible for curriculum, research, funding and staff"
+  changeDepartment(department: simple__university_dept_Department__gqlv_input!): simple__university_dept_DeptHead
+  "Departmental head, responsible for curriculum, research, funding and staff"
+  changeName(newName: String!): simple__university_dept_DeptHead
   department: simple__university_dept_Department
   name: String
 }
diff --git a/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlTestModuleIntegTestAbstract.java b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlIntegTestAbstract.java
similarity index 97%
rename from viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlTestModuleIntegTestAbstract.java
rename to viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlIntegTestAbstract.java
index 43fb0fe06f..8627d4fa22 100644
--- a/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlTestModuleIntegTestAbstract.java
+++ b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlIntegTestAbstract.java
@@ -87,7 +87,7 @@ import lombok.val;
 
 @SpringBootTest(
         classes = {
-                CausewayViewerGraphqlTestModuleIntegTestAbstract.TestApp.class
+                CausewayViewerGraphqlIntegTestAbstract.TestApp.class
         },
         webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
 )
@@ -95,19 +95,19 @@ import lombok.val;
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
 @ActiveProfiles("test")
-public abstract class CausewayViewerGraphqlTestModuleIntegTestAbstract {
+public abstract class CausewayViewerGraphqlIntegTestAbstract {
 
     private final Class<?> resourceBaseClazz;
     private final String suffix;
 
-    protected CausewayViewerGraphqlTestModuleIntegTestAbstract(
+    protected CausewayViewerGraphqlIntegTestAbstract(
             final Class<?> resourceBaseClazz,
             final String suffix
     ) {
         this.resourceBaseClazz = resourceBaseClazz;
         this.suffix = suffix;
     }
-    protected CausewayViewerGraphqlTestModuleIntegTestAbstract(final Class<?> resourceBaseClazz) {
+    protected CausewayViewerGraphqlIntegTestAbstract(final Class<?> resourceBaseClazz) {
         this(resourceBaseClazz, "._.gql");
     }
 
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
similarity index 75%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java
rename to viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
index 5ac7406294..a52a7d6300 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java
+++ b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
@@ -16,42 +16,48 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.graphql.viewer.test.schema;
+package org.apache.causeway.viewer.graphql.viewer.testsupport.schema;
 
 import java.io.File;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.stream.Collectors;
 
 import javax.inject.Inject;
 
 import graphql.schema.idl.SchemaPrinter;
 
-import org.approvaltests.core.Options;
+import org.apache.causeway.core.config.CausewayConfiguration;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
 import org.springframework.transaction.annotation.Transactional;
 
-import org.apache.causeway.commons.io.TextUtils;
 import org.apache.causeway.core.config.environment.CausewaySystemEnvironment;
 import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
 import org.apache.causeway.viewer.graphql.viewer.integration.GraphQlSourceForCauseway;
-import org.apache.causeway.viewer.graphql.viewer.testsupport.CausewayViewerGraphqlTestModuleIntegTestAbstract;
+import org.apache.causeway.viewer.graphql.viewer.testsupport.CausewayViewerGraphqlIntegTestAbstract;
 
 import static org.apache.causeway.commons.internal.assertions._Assert.assertNotNull;
 
 import lombok.val;
 
 @Transactional
-public class GqlSchema_print_IntegTest extends CausewayViewerGraphqlTestModuleIntegTestAbstract {
+public class PrintSchemaIntegTestAbstract extends CausewayViewerGraphqlIntegTestAbstract {
 
     @Inject private CausewaySystemEnvironment causewaySystemEnvironment;
     @Inject private SpecificationLoader specificationLoader;
     @Inject private GraphQlSourceForCauseway graphQlSourceForCauseway;
 
-    public GqlSchema_print_IntegTest() {
-        super(GqlSchema_print_IntegTest.class);
+    public PrintSchemaIntegTestAbstract() {
+        super(PrintSchemaIntegTestAbstract.class);
+    }
+
+    @DynamicPropertySource
+    static void apiVariant(DynamicPropertyRegistry registry) {
+        registry.add("causeway.viewer.graphql.api-variant", CausewayConfiguration.Viewer.Graphql.ApiVariant.QUERY_WITH_MUTATIONS_NON_SPEC_COMPLIANT::name);
     }
 
     @BeforeEach
@@ -76,16 +82,4 @@ public class GqlSchema_print_IntegTest extends CausewayViewerGraphqlTestModuleIn
         Files.write(Paths.get(targetFile1.getPath()), submit.getBytes());
     }
 
-    @SuppressWarnings("unused")
-    private Options gqlSchemaOptions() {
-        return new Options()
-                .withScrubber(this::unixLineEndings)
-                .forFile().withExtension(".gql");
-    }
-
-    private String unixLineEndings(final String input) {
-        return TextUtils.streamLines(input)
-                .collect(Collectors.joining("\n"));
-    }
-
 }


(causeway) 03/06: CAUSEWAY-3676: improves javadoc

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit bb869b33cab1adea35fa05cf877d14c5b6bab314
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 28 19:40:28 2024 +0000

    CAUSEWAY-3676: improves javadoc
---
 .../schema/PrintSchemaIntegTestAbstract.java           | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
index a52a7d6300..1df3802c55 100644
--- a/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
+++ b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
@@ -44,6 +44,19 @@ import static org.apache.causeway.commons.internal.assertions._Assert.assertNotN
 
 import lombok.val;
 
+/**
+ * Utility to print out the schema, to <code>src/test/resources</code> of the implementing subclass.
+ *
+ * <p>
+ *      IDEs can then detect this and use it to provide intellisense/code-completion for GraphQL queries,
+ *      eg used by tests.
+ * </p>
+ *
+ * <p>
+ *     If the {@link org.apache.causeway.core.config.CausewayConfiguration.Viewer.Graphql.ApiVariant ApiVariant} is to
+ *     be overridden from the framework's default, use for example Spring's @{@link DynamicPropertySource} annotation.
+ * </p>
+ */
 @Transactional
 public class PrintSchemaIntegTestAbstract extends CausewayViewerGraphqlIntegTestAbstract {
 
@@ -55,11 +68,6 @@ public class PrintSchemaIntegTestAbstract extends CausewayViewerGraphqlIntegTest
         super(PrintSchemaIntegTestAbstract.class);
     }
 
-    @DynamicPropertySource
-    static void apiVariant(DynamicPropertyRegistry registry) {
-        registry.add("causeway.viewer.graphql.api-variant", CausewayConfiguration.Viewer.Graphql.ApiVariant.QUERY_WITH_MUTATIONS_NON_SPEC_COMPLIANT::name);
-    }
-
     @BeforeEach
     protected void beforeEach() {
         assertNotNull(causewaySystemEnvironment);


(causeway) 01/06: CAUSEWAY-3676: moves CausewayViewerGraphqlTestModuleIntegTestAbstract into testsupport module

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 00fc42dd3ea8e9c6b3d69dae365bd0b27ec79c74
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 28 19:20:34 2024 +0000

    CAUSEWAY-3676: moves CausewayViewerGraphqlTestModuleIntegTestAbstract into testsupport module
---
 .../img/home/causeway-sticker-76mmx51mm.pdn        | Bin 0 -> 37919 bytes
 .../img/home/causeway-sticker-76mmx51mm.png        | Bin 0 -> 15992 bytes
 .../supplemental-ui/img/home/causeway-sticker.pdn  | Bin 0 -> 51512 bytes
 .../supplemental-ui/img/home/causeway-sticker.png  | Bin 0 -> 31368 bytes
 viewers/graphql/test/pom.xml                       |  78 +------
 .../viewer/test/e2e/Abstract_IntegTest.java        |  20 +-
 .../graphql/viewer/test/e2e/Admin_IntegTest.java   |   3 +
 .../test/schema/GqlSchema_print_IntegTest.java     |   4 +-
 viewers/graphql/test/src/test/resources/schema.gql | 252 ---------------------
 viewers/graphql/testsupport/pom.xml                |  89 ++++++++
 ...ayViewerGraphqlTestModuleIntegTestAbstract.java |  27 ++-
 11 files changed, 128 insertions(+), 345 deletions(-)

diff --git a/antora/supplemental-ui/img/home/causeway-sticker-76mmx51mm.pdn b/antora/supplemental-ui/img/home/causeway-sticker-76mmx51mm.pdn
new file mode 100644
index 0000000000..6f1cf15e7e
Binary files /dev/null and b/antora/supplemental-ui/img/home/causeway-sticker-76mmx51mm.pdn differ
diff --git a/antora/supplemental-ui/img/home/causeway-sticker-76mmx51mm.png b/antora/supplemental-ui/img/home/causeway-sticker-76mmx51mm.png
new file mode 100644
index 0000000000..1202491c46
Binary files /dev/null and b/antora/supplemental-ui/img/home/causeway-sticker-76mmx51mm.png differ
diff --git a/antora/supplemental-ui/img/home/causeway-sticker.pdn b/antora/supplemental-ui/img/home/causeway-sticker.pdn
new file mode 100644
index 0000000000..48bd01f094
Binary files /dev/null and b/antora/supplemental-ui/img/home/causeway-sticker.pdn differ
diff --git a/antora/supplemental-ui/img/home/causeway-sticker.png b/antora/supplemental-ui/img/home/causeway-sticker.png
new file mode 100644
index 0000000000..c82a023852
Binary files /dev/null and b/antora/supplemental-ui/img/home/causeway-sticker.png differ
diff --git a/viewers/graphql/test/pom.xml b/viewers/graphql/test/pom.xml
index 28c679887f..b183c36ba5 100644
--- a/viewers/graphql/test/pom.xml
+++ b/viewers/graphql/test/pom.xml
@@ -84,83 +84,9 @@
 
 		<!-- TESTING -->
 
-		<dependency>
-			<groupId>org.apache.causeway.core</groupId>
-			<artifactId>causeway-core-internaltestsupport</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.causeway.security</groupId>
-			<artifactId>causeway-security-bypass</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.causeway.core</groupId>
-			<artifactId>causeway-core-runtimeservices</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.causeway.testing</groupId>
-			<artifactId>causeway-testing-fixtures-applib</artifactId>
-			<scope>test</scope>
-		</dependency>
-        <dependency>
-            <groupId>org.apache.causeway.testing</groupId>
-            <artifactId>causeway-testing-integtestsupport-applib</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context-support</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-
-        <dependency>
-			<groupId>com.h2database</groupId>
-			<artifactId>h2</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>com.approvaltests</groupId>
-			<artifactId>approvaltests</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.causeway.persistence</groupId>
-			<artifactId>causeway-persistence-jpa-eclipselink</artifactId>
-			<scope>test</scope>
-			<exclusions>
-				<exclusion>
-					<groupId>org.eclipse.persistence</groupId>
-					<artifactId>jakarta.persistence</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-test-autoconfigure</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-
-
-        <dependency>
-            <groupId>org.springframework.graphql</groupId>
-            <artifactId>spring-graphql-test</artifactId>
-            <version>1.2.5</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.github.gavlyukovskiy</groupId>
-            <artifactId>datasource-proxy-spring-boot-starter</artifactId>
-            <scope>test</scope>
-        </dependency>
-
         <dependency>
-            <groupId>com.github.vertical-blank</groupId>
-            <artifactId>sql-formatter</artifactId>
+            <groupId>org.apache.causeway.viewer</groupId>
+            <artifactId>causeway-viewer-graphql-testsupport</artifactId>
             <scope>test</scope>
         </dependency>
 
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java
index d3809c1668..25f63bf8ef 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java
@@ -20,21 +20,39 @@ package org.apache.causeway.viewer.graphql.viewer.test.e2e;
 
 import javax.inject.Inject;
 
+import org.apache.causeway.core.config.CausewayConfiguration;
+import org.apache.causeway.viewer.graphql.viewer.test.domain.UniversityModule;
+
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
 import org.springframework.transaction.annotation.Propagation;
 
 import org.apache.causeway.applib.services.bookmark.BookmarkService;
-import org.apache.causeway.viewer.graphql.viewer.test.CausewayViewerGraphqlTestModuleIntegTestAbstract;
+import org.apache.causeway.viewer.graphql.viewer.testsupport.CausewayViewerGraphqlTestModuleIntegTestAbstract;
 import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.Department;
 import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.DepartmentRepository;
 import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.DeptHeadRepository;
 import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.StaffMemberRepository;
 
 
+@Import({
+        UniversityModule.class
+})
 public abstract class Abstract_IntegTest extends CausewayViewerGraphqlTestModuleIntegTestAbstract {
 
+    protected Abstract_IntegTest() {
+        super(Abstract_IntegTest.class);
+    }
+
+    @DynamicPropertySource
+    static void apiVariant(DynamicPropertyRegistry registry) {
+        registry.add("causeway.viewer.graphql.api-variant", CausewayConfiguration.Viewer.Graphql.ApiVariant.QUERY_WITH_MUTATIONS_NON_SPEC_COMPLIANT::name);
+    }
+
     @Inject protected DepartmentRepository departmentRepository;
     @Inject protected DeptHeadRepository deptHeadRepository;
     @Inject protected StaffMemberRepository staffMemberRepository;
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
index 6867f6b07d..66f54e51d0 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
@@ -21,10 +21,13 @@ package org.apache.causeway.viewer.graphql.viewer.test.e2e;
 import java.io.IOException;
 import java.net.URISyntaxException;
 
+import org.apache.causeway.viewer.graphql.viewer.test.domain.UniversityModule;
+
 import org.junit.jupiter.api.DynamicTest;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.TestFactory;
 
+import org.springframework.context.annotation.Import;
 import org.springframework.test.context.ActiveProfiles;
 
 
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java
index 05f5dd2429..5ac7406294 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java
@@ -37,7 +37,7 @@ import org.apache.causeway.commons.io.TextUtils;
 import org.apache.causeway.core.config.environment.CausewaySystemEnvironment;
 import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
 import org.apache.causeway.viewer.graphql.viewer.integration.GraphQlSourceForCauseway;
-import org.apache.causeway.viewer.graphql.viewer.test.CausewayViewerGraphqlTestModuleIntegTestAbstract;
+import org.apache.causeway.viewer.graphql.viewer.testsupport.CausewayViewerGraphqlTestModuleIntegTestAbstract;
 
 import static org.apache.causeway.commons.internal.assertions._Assert.assertNotNull;
 
@@ -51,7 +51,7 @@ public class GqlSchema_print_IntegTest extends CausewayViewerGraphqlTestModuleIn
     @Inject private GraphQlSourceForCauseway graphQlSourceForCauseway;
 
     public GqlSchema_print_IntegTest() {
-        super("._.gql");
+        super(GqlSchema_print_IntegTest.class);
     }
 
     @BeforeEach
diff --git a/viewers/graphql/test/src/test/resources/schema.gql b/viewers/graphql/test/src/test/resources/schema.gql
index 5b162765d0..a033bcdba2 100644
--- a/viewers/graphql/test/src/test/resources/schema.gql
+++ b/viewers/graphql/test/src/test/resources/schema.gql
@@ -259,7 +259,6 @@ type rich__causeway_applib_DomainObjectList__actionArguments__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(actionArguments: String): rich__causeway_applib_DomainObjectList
   validate(actionArguments: String): String
 }
 
@@ -268,7 +267,6 @@ type rich__causeway_applib_DomainObjectList__actionId__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(actionId: String): rich__causeway_applib_DomainObjectList
   validate(actionId: String): String
 }
 
@@ -277,7 +275,6 @@ type rich__causeway_applib_DomainObjectList__actionOwningFqcn__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(actionOwningFqcn: String): rich__causeway_applib_DomainObjectList
   validate(actionOwningFqcn: String): String
 }
 
@@ -286,7 +283,6 @@ type rich__causeway_applib_DomainObjectList__elementTypeFqcn__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(elementTypeFqcn: String!): rich__causeway_applib_DomainObjectList
   validate(elementTypeFqcn: String): String
 }
 
@@ -312,7 +308,6 @@ type rich__causeway_applib_DomainObjectList__title__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(title: String!): rich__causeway_applib_DomainObjectList
   validate(title: String): String
 }
 
@@ -338,7 +333,6 @@ type rich__causeway_applib_FacetGroupNode__facets__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(facets: String!): rich__causeway_applib_FacetGroupNode
   validate(facets: String): String
 }
 
@@ -357,7 +351,6 @@ type rich__causeway_applib_FacetGroupNode__parentNode__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
-  set(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): rich__causeway_applib_FacetGroupNode
   validate(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
@@ -394,7 +387,6 @@ type rich__causeway_applib_ParameterNode__parameter__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(parameter: String!): rich__causeway_applib_ParameterNode
   validate(parameter: String): String
 }
 
@@ -403,7 +395,6 @@ type rich__causeway_applib_ParameterNode__parentNode__gqlv_property {
   disabled: String
   get: rich__causeway_applib_node_ActionNode!
   hidden: Boolean
-  set(parentNode: rich__causeway_applib_node_ActionNode__gqlv_input!): rich__causeway_applib_ParameterNode
   validate(parentNode: rich__causeway_applib_node_ActionNode__gqlv_input): String
 }
 
@@ -442,7 +433,6 @@ type rich__causeway_applib_PropertyNode__mixedIn__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(mixedIn: Boolean!): rich__causeway_applib_PropertyNode
   validate(mixedIn: Boolean): String
 }
 
@@ -451,7 +441,6 @@ type rich__causeway_applib_PropertyNode__parentNode__gqlv_property {
   disabled: String
   get: rich__causeway_applib_TypeNode!
   hidden: Boolean
-  set(parentNode: rich__causeway_applib_TypeNode__gqlv_input!): rich__causeway_applib_PropertyNode
   validate(parentNode: rich__causeway_applib_TypeNode__gqlv_input): String
 }
 
@@ -460,7 +449,6 @@ type rich__causeway_applib_PropertyNode__property__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(property: String!): rich__causeway_applib_PropertyNode
   validate(property: String): String
 }
 
@@ -478,7 +466,6 @@ type rich__causeway_applib_RoleMemento__description__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(description: String!): rich__causeway_applib_RoleMemento
   validate(description: String): String
 }
 
@@ -498,7 +485,6 @@ type rich__causeway_applib_RoleMemento__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(name: String!): rich__causeway_applib_RoleMemento
   validate(name: String): String
 }
 
@@ -524,7 +510,6 @@ type rich__causeway_applib_TypeNode__domainClassDto__gqlv_property {
   disabled: String
   get: rich__causeway_schema_metamodel_v2_DomainClassDto!
   hidden: Boolean
-  set(domainClassDto: rich__causeway_schema_metamodel_v2_DomainClassDto__gqlv_input!): rich__causeway_applib_TypeNode
   validate(domainClassDto: rich__causeway_schema_metamodel_v2_DomainClassDto__gqlv_input): String
 }
 
@@ -543,7 +528,6 @@ type rich__causeway_applib_TypeNode__parentNode__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
-  set(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): rich__causeway_applib_TypeNode
   validate(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
@@ -579,7 +563,6 @@ type rich__causeway_applib_UserMemento__authenticationCode__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(authenticationCode: String!): rich__causeway_applib_UserMemento
   validate(authenticationCode: String): String
 }
 
@@ -589,7 +572,6 @@ type rich__causeway_applib_UserMemento__authenticationSource__gqlv_property {
   disabled: String
   get: rich__org_apache_causeway_applib_services_user_UserMemento_AuthenticationSource__gqlv_enum!
   hidden: Boolean
-  set(authenticationSource: rich__org_apache_causeway_applib_services_user_UserMemento_AuthenticationSource__gqlv_enum!): rich__causeway_applib_UserMemento
   validate(authenticationSource: rich__org_apache_causeway_applib_services_user_UserMemento_AuthenticationSource__gqlv_enum): String
 }
 
@@ -598,7 +580,6 @@ type rich__causeway_applib_UserMemento__avatarUrl__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(avatarUrl: String): rich__causeway_applib_UserMemento
   validate(avatarUrl: String): String
 }
 
@@ -618,7 +599,6 @@ type rich__causeway_applib_UserMemento__impersonating__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(impersonating: Boolean!): rich__causeway_applib_UserMemento
   validate(impersonating: Boolean): String
 }
 
@@ -627,7 +607,6 @@ type rich__causeway_applib_UserMemento__languageLocale__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(languageLocale: String): rich__causeway_applib_UserMemento
   validate(languageLocale: String): String
 }
 
@@ -636,7 +615,6 @@ type rich__causeway_applib_UserMemento__multiTenancyToken__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(multiTenancyToken: String): rich__causeway_applib_UserMemento
   validate(multiTenancyToken: String): String
 }
 
@@ -645,7 +623,6 @@ type rich__causeway_applib_UserMemento__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(name: String!): rich__causeway_applib_UserMemento
   validate(name: String): String
 }
 
@@ -654,7 +631,6 @@ type rich__causeway_applib_UserMemento__numberFormatLocale__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(numberFormatLocale: String): rich__causeway_applib_UserMemento
   validate(numberFormatLocale: String): String
 }
 
@@ -663,7 +639,6 @@ type rich__causeway_applib_UserMemento__realName__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(realName: String): rich__causeway_applib_UserMemento
   validate(realName: String): String
 }
 
@@ -679,7 +654,6 @@ type rich__causeway_applib_UserMemento__timeFormatLocale__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(timeFormatLocale: String): rich__causeway_applib_UserMemento
   validate(timeFormatLocale: String): String
 }
 
@@ -718,7 +692,6 @@ type rich__causeway_applib_node_ActionNode__action__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(action: String!): rich__causeway_applib_node_ActionNode
   validate(action: String): String
 }
 
@@ -744,7 +717,6 @@ type rich__causeway_applib_node_ActionNode__mixedIn__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(mixedIn: Boolean!): rich__causeway_applib_node_ActionNode
   validate(mixedIn: Boolean): String
 }
 
@@ -753,7 +725,6 @@ type rich__causeway_applib_node_ActionNode__parentNode__gqlv_property {
   disabled: String
   get: rich__causeway_applib_TypeNode!
   hidden: Boolean
-  set(parentNode: rich__causeway_applib_TypeNode__gqlv_input!): rich__causeway_applib_node_ActionNode
   validate(parentNode: rich__causeway_applib_TypeNode__gqlv_input): String
 }
 
@@ -781,7 +752,6 @@ type rich__causeway_applib_node_CollectionNode__collection__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(collection: String!): rich__causeway_applib_node_CollectionNode
   validate(collection: String): String
 }
 
@@ -801,7 +771,6 @@ type rich__causeway_applib_node_CollectionNode__mixedIn__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(mixedIn: Boolean!): rich__causeway_applib_node_CollectionNode
   validate(mixedIn: Boolean): String
 }
 
@@ -810,7 +779,6 @@ type rich__causeway_applib_node_CollectionNode__parentNode__gqlv_property {
   disabled: String
   get: rich__causeway_applib_TypeNode!
   hidden: Boolean
-  set(parentNode: rich__causeway_applib_TypeNode__gqlv_input!): rich__causeway_applib_node_CollectionNode
   validate(parentNode: rich__causeway_applib_TypeNode__gqlv_input): String
 }
 
@@ -836,7 +804,6 @@ type rich__causeway_applib_node_FacetAttrNode__facetAttr__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(facetAttr: String!): rich__causeway_applib_node_FacetAttrNode
   validate(facetAttr: String): String
 }
 
@@ -856,7 +823,6 @@ type rich__causeway_applib_node_FacetAttrNode__parentNode__gqlv_property {
   disabled: String
   get: rich__causeway_applib_node_FacetNode!
   hidden: Boolean
-  set(parentNode: rich__causeway_applib_node_FacetNode__gqlv_input!): rich__causeway_applib_node_FacetAttrNode
   validate(parentNode: rich__causeway_applib_node_FacetNode__gqlv_input): String
 }
 
@@ -884,7 +850,6 @@ type rich__causeway_applib_node_FacetNode__facet__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(facet: String!): rich__causeway_applib_node_FacetNode
   validate(facet: String): String
 }
 
@@ -903,7 +868,6 @@ type rich__causeway_applib_node_FacetNode__parentNode__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
-  set(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): rich__causeway_applib_node_FacetNode
   validate(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
@@ -912,7 +876,6 @@ type rich__causeway_applib_node_FacetNode__shadowed__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(shadowed: Boolean!): rich__causeway_applib_node_FacetNode
   validate(shadowed: Boolean): String
 }
 
@@ -957,7 +920,6 @@ type rich__causeway_conf_ConfigurationProperty__key__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(key: String!): rich__causeway_conf_ConfigurationProperty
   validate(key: String): String
 }
 
@@ -966,7 +928,6 @@ type rich__causeway_conf_ConfigurationProperty__value__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(value: String!): rich__causeway_conf_ConfigurationProperty
   validate(value: String): String
 }
 
@@ -1042,7 +1003,6 @@ type rich__causeway_feat_ApplicationFeatureViewModel__memberName__gqlv_property
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): rich__causeway_feat_ApplicationFeatureViewModel
   validate(memberName: String): String
 }
 
@@ -1051,7 +1011,6 @@ type rich__causeway_feat_ApplicationFeatureViewModel__namespaceName__gqlv_proper
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): rich__causeway_feat_ApplicationFeatureViewModel
   validate(namespaceName: String): String
 }
 
@@ -1059,7 +1018,6 @@ type rich__causeway_feat_ApplicationFeatureViewModel__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
-  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationFeatureViewModel
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1068,7 +1026,6 @@ type rich__causeway_feat_ApplicationFeatureViewModel__typeSimpleName__gqlv_prope
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): rich__causeway_feat_ApplicationFeatureViewModel
   validate(typeSimpleName: String): String
 }
 
@@ -1109,7 +1066,6 @@ type rich__causeway_feat_ApplicationNamespace__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): rich__causeway_feat_ApplicationNamespace
   validate(memberName: String): String
 }
 
@@ -1118,7 +1074,6 @@ type rich__causeway_feat_ApplicationNamespace__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): rich__causeway_feat_ApplicationNamespace
   validate(namespaceName: String): String
 }
 
@@ -1126,7 +1081,6 @@ type rich__causeway_feat_ApplicationNamespace__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
-  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationNamespace
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1135,7 +1089,6 @@ type rich__causeway_feat_ApplicationNamespace__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): rich__causeway_feat_ApplicationNamespace
   validate(typeSimpleName: String): String
 }
 
@@ -1181,7 +1134,6 @@ type rich__causeway_feat_ApplicationTypeAction__actionSemantics__gqlv_property {
   disabled: String
   get: rich__causeway_applib_annotation_SemanticsOf__gqlv_enum!
   hidden: Boolean
-  set(actionSemantics: rich__causeway_applib_annotation_SemanticsOf__gqlv_enum!): rich__causeway_feat_ApplicationTypeAction
   validate(actionSemantics: rich__causeway_applib_annotation_SemanticsOf__gqlv_enum): String
 }
 
@@ -1201,7 +1153,6 @@ type rich__causeway_feat_ApplicationTypeAction__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): rich__causeway_feat_ApplicationTypeAction
   validate(memberName: String): String
 }
 
@@ -1210,7 +1161,6 @@ type rich__causeway_feat_ApplicationTypeAction__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): rich__causeway_feat_ApplicationTypeAction
   validate(namespaceName: String): String
 }
 
@@ -1218,7 +1168,6 @@ type rich__causeway_feat_ApplicationTypeAction__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
-  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationTypeAction
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1227,7 +1176,6 @@ type rich__causeway_feat_ApplicationTypeAction__returnType__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(returnType: String!): rich__causeway_feat_ApplicationTypeAction
   validate(returnType: String): String
 }
 
@@ -1236,7 +1184,6 @@ type rich__causeway_feat_ApplicationTypeAction__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): rich__causeway_feat_ApplicationTypeAction
   validate(typeSimpleName: String): String
 }
 
@@ -1262,7 +1209,6 @@ type rich__causeway_feat_ApplicationTypeCollection__derived__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(derived: Boolean!): rich__causeway_feat_ApplicationTypeCollection
   validate(derived: Boolean): String
 }
 
@@ -1271,7 +1217,6 @@ type rich__causeway_feat_ApplicationTypeCollection__elementType__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(elementType: String!): rich__causeway_feat_ApplicationTypeCollection
   validate(elementType: String): String
 }
 
@@ -1291,7 +1236,6 @@ type rich__causeway_feat_ApplicationTypeCollection__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): rich__causeway_feat_ApplicationTypeCollection
   validate(memberName: String): String
 }
 
@@ -1300,7 +1244,6 @@ type rich__causeway_feat_ApplicationTypeCollection__namespaceName__gqlv_property
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): rich__causeway_feat_ApplicationTypeCollection
   validate(namespaceName: String): String
 }
 
@@ -1308,7 +1251,6 @@ type rich__causeway_feat_ApplicationTypeCollection__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
-  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationTypeCollection
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1317,7 +1259,6 @@ type rich__causeway_feat_ApplicationTypeCollection__typeSimpleName__gqlv_propert
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): rich__causeway_feat_ApplicationTypeCollection
   validate(typeSimpleName: String): String
 }
 
@@ -1350,7 +1291,6 @@ type rich__causeway_feat_ApplicationTypeMember__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): rich__causeway_feat_ApplicationTypeMember
   validate(memberName: String): String
 }
 
@@ -1359,7 +1299,6 @@ type rich__causeway_feat_ApplicationTypeMember__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): rich__causeway_feat_ApplicationTypeMember
   validate(namespaceName: String): String
 }
 
@@ -1367,7 +1306,6 @@ type rich__causeway_feat_ApplicationTypeMember__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
-  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationTypeMember
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1376,7 +1314,6 @@ type rich__causeway_feat_ApplicationTypeMember__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): rich__causeway_feat_ApplicationTypeMember
   validate(typeSimpleName: String): String
 }
 
@@ -1406,7 +1343,6 @@ type rich__causeway_feat_ApplicationTypeProperty__derived__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(derived: Boolean!): rich__causeway_feat_ApplicationTypeProperty
   validate(derived: Boolean): String
 }
 
@@ -1426,7 +1362,6 @@ type rich__causeway_feat_ApplicationTypeProperty__maxLength__gqlv_property {
   disabled: String
   get: Int
   hidden: Boolean
-  set(maxLength: Int): rich__causeway_feat_ApplicationTypeProperty
   validate(maxLength: Int): String
 }
 
@@ -1435,7 +1370,6 @@ type rich__causeway_feat_ApplicationTypeProperty__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): rich__causeway_feat_ApplicationTypeProperty
   validate(memberName: String): String
 }
 
@@ -1444,7 +1378,6 @@ type rich__causeway_feat_ApplicationTypeProperty__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): rich__causeway_feat_ApplicationTypeProperty
   validate(namespaceName: String): String
 }
 
@@ -1452,7 +1385,6 @@ type rich__causeway_feat_ApplicationTypeProperty__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
-  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationTypeProperty
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1461,7 +1393,6 @@ type rich__causeway_feat_ApplicationTypeProperty__returnType__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(returnType: String!): rich__causeway_feat_ApplicationTypeProperty
   validate(returnType: String): String
 }
 
@@ -1470,7 +1401,6 @@ type rich__causeway_feat_ApplicationTypeProperty__typeSimpleName__gqlv_property
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): rich__causeway_feat_ApplicationTypeProperty
   validate(typeSimpleName: String): String
 }
 
@@ -1479,7 +1409,6 @@ type rich__causeway_feat_ApplicationTypeProperty__typicalLength__gqlv_property {
   disabled: String
   get: Int
   hidden: Boolean
-  set(typicalLength: Int): rich__causeway_feat_ApplicationTypeProperty
   validate(typicalLength: Int): String
 }
 
@@ -1513,7 +1442,6 @@ type rich__causeway_feat_ApplicationType__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): rich__causeway_feat_ApplicationType
   validate(memberName: String): String
 }
 
@@ -1522,7 +1450,6 @@ type rich__causeway_feat_ApplicationType__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): rich__causeway_feat_ApplicationType
   validate(namespaceName: String): String
 }
 
@@ -1530,7 +1457,6 @@ type rich__causeway_feat_ApplicationType__parent__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
-  set(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input!): rich__causeway_feat_ApplicationType
   validate(parent: rich__causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1546,7 +1472,6 @@ type rich__causeway_feat_ApplicationType__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): rich__causeway_feat_ApplicationType
   validate(typeSimpleName: String): String
 }
 
@@ -1578,7 +1503,6 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__actions__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(actions: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(actions: String): String
 }
 
@@ -1587,7 +1511,6 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__annotations__gqlv_proper
   disabled: String
   get: String!
   hidden: Boolean
-  set(annotations: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(annotations: String): String
 }
 
@@ -1596,7 +1519,6 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__collections__gqlv_proper
   disabled: String
   get: String!
   hidden: Boolean
-  set(collections: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(collections: String): String
 }
 
@@ -1605,7 +1527,6 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__facets__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(facets: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(facets: String): String
 }
 
@@ -1625,7 +1546,6 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__id__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(id: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(id: String): String
 }
 
@@ -1634,7 +1554,6 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__majorVersion__gqlv_prope
   disabled: String
   get: String
   hidden: Boolean
-  set(majorVersion: String): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(majorVersion: String): String
 }
 
@@ -1643,7 +1562,6 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__minorVersion__gqlv_prope
   disabled: String
   get: String
   hidden: Boolean
-  set(minorVersion: String): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(minorVersion: String): String
 }
 
@@ -1652,7 +1570,6 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__properties__gqlv_propert
   disabled: String
   get: String!
   hidden: Boolean
-  set(properties: String!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(properties: String): String
 }
 
@@ -1661,7 +1578,6 @@ type rich__causeway_schema_metamodel_v2_DomainClassDto__service__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(service: Boolean!): rich__causeway_schema_metamodel_v2_DomainClassDto
   validate(service: Boolean): String
 }
 
@@ -1715,7 +1631,6 @@ type rich__causeway_testing_fixtures_FixtureResult__className__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(className: String!): rich__causeway_testing_fixtures_FixtureResult
   validate(className: String): String
 }
 
@@ -1724,7 +1639,6 @@ type rich__causeway_testing_fixtures_FixtureResult__fixtureScriptClassName__gqlv
   disabled: String
   get: String
   hidden: Boolean
-  set(fixtureScriptClassName: String): rich__causeway_testing_fixtures_FixtureResult
   validate(fixtureScriptClassName: String): String
 }
 
@@ -1744,7 +1658,6 @@ type rich__causeway_testing_fixtures_FixtureResult__key__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(key: String!): rich__causeway_testing_fixtures_FixtureResult
   validate(key: String): String
 }
 
@@ -1752,7 +1665,6 @@ type rich__causeway_testing_fixtures_FixtureResult__object__gqlv_property {
   datatype: String
   disabled: String
   hidden: Boolean
-  set(object: String!): rich__causeway_testing_fixtures_FixtureResult
   validate(object: String): String
 }
 
@@ -1914,7 +1826,6 @@ type rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__parentNode__
   datatype: String
   disabled: String
   hidden: Boolean
-  set(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): rich__org_apache_causeway_core_metamodel_inspect_model_MMNode
   validate(parentNode: rich__org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
@@ -1951,7 +1862,6 @@ type rich__org_apache_causeway_core_metamodel_inspect_model_MemberNode__mixedIn_
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(mixedIn: Boolean!): rich__org_apache_causeway_core_metamodel_inspect_model_MemberNode
   validate(mixedIn: Boolean): String
 }
 
@@ -1960,7 +1870,6 @@ type rich__org_apache_causeway_core_metamodel_inspect_model_MemberNode__parentNo
   disabled: String
   get: rich__causeway_applib_TypeNode!
   hidden: Boolean
-  set(parentNode: rich__causeway_applib_TypeNode__gqlv_input!): rich__org_apache_causeway_core_metamodel_inspect_model_MemberNode
   validate(parentNode: rich__causeway_applib_TypeNode__gqlv_input): String
 }
 
@@ -1978,7 +1887,6 @@ type rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScr
   disabled: String
   get: String!
   hidden: Boolean
-  set(friendlyName: String!): rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript
   validate(friendlyName: String): String
 }
 
@@ -1998,7 +1906,6 @@ type rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScr
   disabled: String
   get: String!
   hidden: Boolean
-  set(qualifiedName: String!): rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript
   validate(qualifiedName: String): String
 }
 
@@ -2023,24 +1930,11 @@ type rich__university_admin_AdminMenu__actionWithDisabledParam__firstParam__gqlv
 type rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(firstParam: String!, secondParam: String!, thirdParameter: String!): rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_params
   validate(firstParam: String, secondParam: String, thirdParameter: String): String
 }
 
-type rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_args {
-  firstParam: String
-  secondParam: String
-  thirdParameter: String
-}
-
-type rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_invoke {
-  "Arguments used to invoke this action"
-  args: rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_args
-  results: String
-}
-
 type rich__university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_params {
   "First Param"
   firstParam: rich__university_admin_AdminMenu__actionWithDisabledParam__firstParam__gqlv_action_parameter
@@ -2074,23 +1968,11 @@ type rich__university_admin_AdminMenu__actionWithHiddenParam__firstParam__gqlv_a
 type rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(firstParam: String!, secondParam: String!): rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_params
   validate(firstParam: String, secondParam: String): String
 }
 
-type rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_args {
-  firstParam: String
-  secondParam: String
-}
-
-type rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_invoke {
-  "Arguments used to invoke this action"
-  args: rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_args
-  results: String
-}
-
 type rich__university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_params {
   "First Param"
   firstParam: rich__university_admin_AdminMenu__actionWithHiddenParam__firstParam__gqlv_action_parameter
@@ -2108,25 +1990,15 @@ type rich__university_admin_AdminMenu__actionWithHiddenParam__secondParam__gqlv_
 type rich__university_admin_AdminMenu__adminAction__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent: rich__university_admin_AdminMenu__adminAction__gqlv_action_invoke
   validate: String
 }
 
-type rich__university_admin_AdminMenu__adminAction__gqlv_action_invoke {
-  results: String
-}
-
 type rich__university_admin_AdminMenu__otherAdminAction__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent: rich__university_admin_AdminMenu__otherAdminAction__gqlv_action_invoke
   validate: String
 }
 
-type rich__university_admin_AdminMenu__otherAdminAction__gqlv_action_invoke {
-  results: String
-}
-
 type rich__university_calc_Calculator {
   "Add Big Decimals"
   addBigDecimals: rich__university_calc_Calculator__addBigDecimals__gqlv_action
@@ -3341,22 +3213,11 @@ type rich__university_dept_Department {
 type rich__university_dept_Department__addStaffMember__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeIdempotent(staffMember: rich__university_dept_StaffMember__gqlv_input!): rich__university_dept_Department__addStaffMember__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Department__addStaffMember__gqlv_action_params
   validate(staffMember: rich__university_dept_StaffMember__gqlv_input): String
 }
 
-type rich__university_dept_Department__addStaffMember__gqlv_action_args {
-  staffMember: rich__university_dept_StaffMember
-}
-
-type rich__university_dept_Department__addStaffMember__gqlv_action_invoke {
-  "Arguments used to invoke this action"
-  args: rich__university_dept_Department__addStaffMember__gqlv_action_args
-  results: rich__university_dept_Department
-}
-
 type rich__university_dept_Department__addStaffMember__gqlv_action_params {
   "Staff member of a university department, responsible for delivering lectures, tutorials, exam invigilation and candidate interviews"
   staffMember: rich__university_dept_Department__addStaffMember__staffMember__gqlv_action_parameter
@@ -3374,22 +3235,11 @@ type rich__university_dept_Department__addStaffMember__staffMember__gqlv_action_
 type rich__university_dept_Department__addStaffMembers__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeIdempotent(staffMembers: [rich__university_dept_StaffMember__gqlv_input]): rich__university_dept_Department__addStaffMembers__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Department__addStaffMembers__gqlv_action_params
   validate(staffMembers: [rich__university_dept_StaffMember__gqlv_input]): String
 }
 
-type rich__university_dept_Department__addStaffMembers__gqlv_action_args {
-  staffMembers: [rich__university_dept_StaffMember]
-}
-
-type rich__university_dept_Department__addStaffMembers__gqlv_action_invoke {
-  "Arguments used to invoke this action"
-  args: rich__university_dept_Department__addStaffMembers__gqlv_action_args
-  results: rich__university_dept_Department
-}
-
 type rich__university_dept_Department__addStaffMembers__gqlv_action_params {
   "Staff member of a university department, responsible for delivering lectures, tutorials, exam invigilation and candidate interviews"
   staffMembers: rich__university_dept_Department__addStaffMembers__staffMembers__gqlv_action_parameter
@@ -3407,22 +3257,11 @@ type rich__university_dept_Department__addStaffMembers__staffMembers__gqlv_actio
 type rich__university_dept_Department__changeDeptHead__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeIdempotent(newDeptHead: rich__university_dept_DeptHead__gqlv_input!): rich__university_dept_Department__changeDeptHead__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Department__changeDeptHead__gqlv_action_params
   validate(newDeptHead: rich__university_dept_DeptHead__gqlv_input): String
 }
 
-type rich__university_dept_Department__changeDeptHead__gqlv_action_args {
-  newDeptHead: rich__university_dept_DeptHead
-}
-
-type rich__university_dept_Department__changeDeptHead__gqlv_action_invoke {
-  "Arguments used to invoke this action"
-  args: rich__university_dept_Department__changeDeptHead__gqlv_action_args
-  results: rich__university_dept_Department
-}
-
 type rich__university_dept_Department__changeDeptHead__gqlv_action_params {
   "Departmental head, responsible for curriculum, research, funding and staff"
   newDeptHead: rich__university_dept_Department__changeDeptHead__newDeptHead__gqlv_action_parameter
@@ -3441,22 +3280,11 @@ type rich__university_dept_Department__changeDeptHead__newDeptHead__gqlv_action_
 type rich__university_dept_Department__changeName__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeIdempotent(newName: String!): rich__university_dept_Department__changeName__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Department__changeName__gqlv_action_params
   validate(newName: String): String
 }
 
-type rich__university_dept_Department__changeName__gqlv_action_args {
-  newName: String
-}
-
-type rich__university_dept_Department__changeName__gqlv_action_invoke {
-  "Arguments used to invoke this action"
-  args: rich__university_dept_Department__changeName__gqlv_action_args
-  results: rich__university_dept_Department
-}
-
 type rich__university_dept_Department__changeName__gqlv_action_params {
   "New Name"
   newName: rich__university_dept_Department__changeName__newName__gqlv_action_parameter
@@ -3477,7 +3305,6 @@ type rich__university_dept_Department__deptHead__gqlv_property {
   disabled: String
   get: rich__university_dept_DeptHead
   hidden: Boolean
-  set(deptHead: rich__university_dept_DeptHead__gqlv_input): rich__university_dept_Department
   validate(deptHead: rich__university_dept_DeptHead__gqlv_input): String
 }
 
@@ -3498,7 +3325,6 @@ type rich__university_dept_Department__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(name: String!): rich__university_dept_Department
   validate(name: String): String
 }
 
@@ -3506,22 +3332,11 @@ type rich__university_dept_Department__name__gqlv_property {
 type rich__university_dept_Department__removeStaffMember__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeIdempotent(staffMember: rich__university_dept_StaffMember__gqlv_input!): rich__university_dept_Department__removeStaffMember__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Department__removeStaffMember__gqlv_action_params
   validate(staffMember: rich__university_dept_StaffMember__gqlv_input): String
 }
 
-type rich__university_dept_Department__removeStaffMember__gqlv_action_args {
-  staffMember: rich__university_dept_StaffMember
-}
-
-type rich__university_dept_Department__removeStaffMember__gqlv_action_invoke {
-  "Arguments used to invoke this action"
-  args: rich__university_dept_Department__removeStaffMember__gqlv_action_args
-  results: rich__university_dept_Department
-}
-
 type rich__university_dept_Department__removeStaffMember__gqlv_action_params {
   "Staff member of a university department, responsible for delivering lectures, tutorials, exam invigilation and candidate interviews"
   staffMember: rich__university_dept_Department__removeStaffMember__staffMember__gqlv_action_parameter
@@ -3564,23 +3379,11 @@ type rich__university_dept_Departments__createDepartment__deptHead__gqlv_action_
 type rich__university_dept_Departments__createDepartment__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(deptHead: rich__university_dept_DeptHead__gqlv_input, name: String!): rich__university_dept_Departments__createDepartment__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Departments__createDepartment__gqlv_action_params
   validate(deptHead: rich__university_dept_DeptHead__gqlv_input, name: String): String
 }
 
-type rich__university_dept_Departments__createDepartment__gqlv_action_args {
-  deptHead: rich__university_dept_DeptHead
-  name: String
-}
-
-type rich__university_dept_Departments__createDepartment__gqlv_action_invoke {
-  "Arguments used to invoke this action"
-  args: rich__university_dept_Departments__createDepartment__gqlv_action_args
-  results: rich__university_dept_Department
-}
-
 type rich__university_dept_Departments__createDepartment__gqlv_action_params {
   "Departmental head, responsible for curriculum, research, funding and staff"
   deptHead: rich__university_dept_Departments__createDepartment__deptHead__gqlv_action_parameter
@@ -3665,22 +3468,11 @@ type rich__university_dept_DeptHead__changeDepartment__department__gqlv_action_p
 type rich__university_dept_DeptHead__changeDepartment__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeIdempotent(department: rich__university_dept_Department__gqlv_input!): rich__university_dept_DeptHead__changeDepartment__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_DeptHead__changeDepartment__gqlv_action_params
   validate(department: rich__university_dept_Department__gqlv_input): String
 }
 
-type rich__university_dept_DeptHead__changeDepartment__gqlv_action_args {
-  department: rich__university_dept_Department
-}
-
-type rich__university_dept_DeptHead__changeDepartment__gqlv_action_invoke {
-  "Arguments used to invoke this action"
-  args: rich__university_dept_DeptHead__changeDepartment__gqlv_action_args
-  results: rich__university_dept_DeptHead
-}
-
 type rich__university_dept_DeptHead__changeDepartment__gqlv_action_params {
   "University department specializing in a field of study"
   department: rich__university_dept_DeptHead__changeDepartment__department__gqlv_action_parameter
@@ -3690,22 +3482,11 @@ type rich__university_dept_DeptHead__changeDepartment__gqlv_action_params {
 type rich__university_dept_DeptHead__changeName__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeIdempotent(newName: String!): rich__university_dept_DeptHead__changeName__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_DeptHead__changeName__gqlv_action_params
   validate(newName: String): String
 }
 
-type rich__university_dept_DeptHead__changeName__gqlv_action_args {
-  newName: String
-}
-
-type rich__university_dept_DeptHead__changeName__gqlv_action_invoke {
-  "Arguments used to invoke this action"
-  args: rich__university_dept_DeptHead__changeName__gqlv_action_args
-  results: rich__university_dept_DeptHead
-}
-
 type rich__university_dept_DeptHead__changeName__gqlv_action_params {
   "New Name"
   newName: rich__university_dept_DeptHead__changeName__newName__gqlv_action_parameter
@@ -3726,7 +3507,6 @@ type rich__university_dept_DeptHead__department__gqlv_property {
   disabled: String
   get: rich__university_dept_Department
   hidden: Boolean
-  set(department: rich__university_dept_Department__gqlv_input): rich__university_dept_DeptHead
   validate(department: rich__university_dept_Department__gqlv_input): String
 }
 
@@ -3747,7 +3527,6 @@ type rich__university_dept_DeptHead__name__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(name: String): rich__university_dept_DeptHead
   validate(name: String): String
 }
 
@@ -3894,7 +3673,6 @@ type rich__university_dept_Person__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(name: String!): rich__university_dept_Person
   validate(name: String): String
 }
 
@@ -3928,7 +3706,6 @@ type rich__university_dept_StaffMember__department__gqlv_property {
   disabled: String
   get: rich__university_dept_Department
   hidden: Boolean
-  set(department: rich__university_dept_Department__gqlv_input): rich__university_dept_StaffMember
   validate(department: rich__university_dept_Department__gqlv_input): String
 }
 
@@ -3950,7 +3727,6 @@ type rich__university_dept_StaffMember__grade__gqlv_property {
   disabled: String
   get: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_dept_Grade__gqlv_enum!
   hidden: Boolean
-  set(grade: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_dept_Grade__gqlv_enum!): rich__university_dept_StaffMember
   validate(grade: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_dept_Grade__gqlv_enum): String
 }
 
@@ -3959,7 +3735,6 @@ type rich__university_dept_StaffMember__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(name: String!): rich__university_dept_StaffMember
   validate(name: String): String
 }
 
@@ -3968,7 +3743,6 @@ type rich__university_dept_StaffMember__photo__gqlv_property {
   disabled: String
   get: rich__university_dept_StaffMember__photo__gqlv_property_lob
   hidden: Boolean
-  set(photo: String): rich__university_dept_StaffMember
   validate(photo: String): String
 }
 
@@ -3990,23 +3764,11 @@ type rich__university_dept_Staff__createStaffMember__department__gqlv_action_par
 type rich__university_dept_Staff__createStaffMember__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(department: rich__university_dept_Department__gqlv_input!, name: String!): rich__university_dept_Staff__createStaffMember__gqlv_action_invoke
   "Parameters of this action"
   params: rich__university_dept_Staff__createStaffMember__gqlv_action_params
   validate(department: rich__university_dept_Department__gqlv_input, name: String): String
 }
 
-type rich__university_dept_Staff__createStaffMember__gqlv_action_args {
-  department: rich__university_dept_Department
-  name: String
-}
-
-type rich__university_dept_Staff__createStaffMember__gqlv_action_invoke {
-  "Arguments used to invoke this action"
-  args: rich__university_dept_Staff__createStaffMember__gqlv_action_args
-  results: rich__university_dept_StaffMember
-}
-
 type rich__university_dept_Staff__createStaffMember__gqlv_action_params {
   "University department specializing in a field of study"
   department: rich__university_dept_Staff__createStaffMember__department__gqlv_action_parameter
@@ -4793,18 +4555,8 @@ type simple__university_calc_Calculator {
 type simple__university_dept_Department {
   "Object metadata"
   _meta: simple__university_dept_Department__gqlv_meta
-  "University department specializing in a field of study"
-  addStaffMember(staffMember: simple__university_dept_StaffMember__gqlv_input!): simple__university_dept_Department
-  "University department specializing in a field of study"
-  addStaffMembers(staffMembers: [simple__university_dept_StaffMember__gqlv_input]): simple__university_dept_Department
-  "University department specializing in a field of study"
-  changeDeptHead(newDeptHead: simple__university_dept_DeptHead__gqlv_input!): simple__university_dept_Department
-  "University department specializing in a field of study"
-  changeName(newName: String!): simple__university_dept_Department
   deptHead: simple__university_dept_DeptHead
   name: String!
-  "University department specializing in a field of study"
-  removeStaffMember(staffMember: simple__university_dept_StaffMember__gqlv_input!): simple__university_dept_Department
   "Staff member of a university department, responsible for delivering lectures, tutorials, exam invigilation and candidate interviews"
   staffMembers: [simple__university_dept_StaffMember]
 }
@@ -4834,10 +4586,6 @@ type simple__university_dept_Departments {
 type simple__university_dept_DeptHead {
   "Object metadata"
   _meta: simple__university_dept_DeptHead__gqlv_meta
-  "Departmental head, responsible for curriculum, research, funding and staff"
-  changeDepartment(department: simple__university_dept_Department__gqlv_input!): simple__university_dept_DeptHead
-  "Departmental head, responsible for curriculum, research, funding and staff"
-  changeName(newName: String!): simple__university_dept_DeptHead
   department: simple__university_dept_Department
   name: String
 }
diff --git a/viewers/graphql/testsupport/pom.xml b/viewers/graphql/testsupport/pom.xml
index 122858718d..b55b959c2d 100644
--- a/viewers/graphql/testsupport/pom.xml
+++ b/viewers/graphql/testsupport/pom.xml
@@ -47,6 +47,22 @@
 
     </properties>
 
+    <dependencyManagement>
+        <dependencies>
+
+            <dependency>
+                <groupId>com.github.gavlyukovskiy</groupId>
+                <artifactId>datasource-proxy-spring-boot-starter</artifactId>
+                <version>${datasource-proxy-spring-boot-starter.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.github.vertical-blank</groupId>
+                <artifactId>sql-formatter</artifactId>
+                <version>${sql-formatter.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <build>
 		<testResources>
 			<testResource>
@@ -62,6 +78,79 @@
 
 	<dependencies>
 
+        <dependency>
+            <groupId>org.apache.causeway.viewer</groupId>
+            <artifactId>causeway-viewer-graphql-viewer</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.causeway.core</groupId>
+            <artifactId>causeway-core-internaltestsupport</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.causeway.security</groupId>
+            <artifactId>causeway-security-bypass</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.causeway.core</groupId>
+            <artifactId>causeway-core-runtimeservices</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-fixtures-applib</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-integtestsupport-applib</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context-support</artifactId>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.approvaltests</groupId>
+            <artifactId>approvaltests</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.causeway.persistence</groupId>
+            <artifactId>causeway-persistence-jpa-eclipselink</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.eclipse.persistence</groupId>
+                    <artifactId>jakarta.persistence</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-test-autoconfigure</artifactId>
+        </dependency>
+
+
+
+        <dependency>
+            <groupId>org.springframework.graphql</groupId>
+            <artifactId>spring-graphql-test</artifactId>
+            <version>1.2.5</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.gavlyukovskiy</groupId>
+            <artifactId>datasource-proxy-spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.vertical-blank</groupId>
+            <artifactId>sql-formatter</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/CausewayViewerGraphqlTestModuleIntegTestAbstract.java b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlTestModuleIntegTestAbstract.java
similarity index 94%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/CausewayViewerGraphqlTestModuleIntegTestAbstract.java
rename to viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlTestModuleIntegTestAbstract.java
index f4a44c2499..43fb0fe06f 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/CausewayViewerGraphqlTestModuleIntegTestAbstract.java
+++ b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlTestModuleIntegTestAbstract.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.graphql.viewer.test;
+package org.apache.causeway.viewer.graphql.viewer.testsupport;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -78,8 +78,6 @@ import org.apache.causeway.testing.fixtures.applib.CausewayModuleTestingFixtures
 import org.apache.causeway.viewer.graphql.viewer.CausewayModuleViewerGraphqlViewer;
 import org.apache.causeway.viewer.graphql.viewer.integration.ExecutionGraphQlServiceForCauseway;
 import org.apache.causeway.viewer.graphql.viewer.integration.GraphQlSourceForCauseway;
-import org.apache.causeway.viewer.graphql.viewer.test.domain.UniversityModule;
-import org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest;
 
 import static org.apache.causeway.commons.internal.assertions._Assert.assertNotNull;
 
@@ -91,10 +89,7 @@ import lombok.val;
         classes = {
                 CausewayViewerGraphqlTestModuleIntegTestAbstract.TestApp.class
         },
-        webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
-        properties = {
-                "causeway.viewer.graphql.api-variant=QUERY_WITH_MUTATIONS_NON_SPEC_COMPLIANT"
-        }
+        webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
 )
 @AutoConfigureHttpGraphQlTester
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
@@ -102,13 +97,18 @@ import lombok.val;
 @ActiveProfiles("test")
 public abstract class CausewayViewerGraphqlTestModuleIntegTestAbstract {
 
+    private final Class<?> resourceBaseClazz;
     private final String suffix;
 
-    protected CausewayViewerGraphqlTestModuleIntegTestAbstract(String suffix) {
+    protected CausewayViewerGraphqlTestModuleIntegTestAbstract(
+            final Class<?> resourceBaseClazz,
+            final String suffix
+    ) {
+        this.resourceBaseClazz = resourceBaseClazz;
         this.suffix = suffix;
     }
-    protected CausewayViewerGraphqlTestModuleIntegTestAbstract() {
-        this("._.gql");
+    protected CausewayViewerGraphqlTestModuleIntegTestAbstract(final Class<?> resourceBaseClazz) {
+        this(resourceBaseClazz, "._.gql");
     }
 
     /**
@@ -126,7 +126,6 @@ public abstract class CausewayViewerGraphqlTestModuleIntegTestAbstract {
             CausewayModuleTestingFixturesApplib.class,
             CausewayModuleViewerGraphqlViewer.class,
 
-            UniversityModule.class
     })
     @PropertySources({
             @PropertySource(CausewayPresets.H2InMemory_withUniqueSchema),
@@ -340,14 +339,14 @@ public abstract class CausewayViewerGraphqlTestModuleIntegTestAbstract {
 
     protected void afterEach() {}
 
-    protected static Blob asPdfBlob(String fileName) {
+    protected Blob asPdfBlob(String fileName) {
         val bytes = toBytes(fileName);
         return new Blob(fileName, "application/pdf", bytes);
     }
 
     @SneakyThrows
-    protected static byte[] toBytes(String fileName){
-        InputStream inputStream = new ClassPathResource(fileName, Abstract_IntegTest.class).getInputStream();
+    protected byte[] toBytes(String fileName){
+        InputStream inputStream = new ClassPathResource(fileName, resourceBaseClazz).getInputStream();
         ByteArrayOutputStream buffer = new ByteArrayOutputStream();
 
         int nRead;


(causeway) 05/06: CAUSEWAY-3676: updates docs for graphql test support

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 844e772005b74528ba11bcdc426bab8c6b03fda3
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Feb 29 23:35:23 2024 +0000

    CAUSEWAY-3676: updates docs for graphql test support
---
 .../CausewayViewerGraphqlIntegTestAbstract.java    | 27 ++++++++++++++++++++++
 .../schema/PrintSchemaIntegTestAbstract.java       |  4 +++-
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlIntegTestAbstract.java b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlIntegTestAbstract.java
index 8627d4fa22..ea08553319 100644
--- a/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlIntegTestAbstract.java
+++ b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/CausewayViewerGraphqlIntegTestAbstract.java
@@ -85,6 +85,33 @@ import lombok.SneakyThrows;
 import lombok.Value;
 import lombok.val;
 
+/**
+ * Intended as a base class for integration testing.
+ *
+ * <p>
+ *     Subclass and {@link Import} the Spring {@link org.springframework.context.annotation.Configuration}s (modules)
+ *     that hold the domain model.
+ * </p>
+ *
+ * <p>
+ *     Write tests as queries with a <code>._.gql</code> suffix (or specify a different suffix through the constructor).
+ *     Then override the {@link #each()} method trivially:
+ *
+ *     <pre>
+ *    {@literal @}TestFactory
+ *     public Iterable<DynamicTest> each() throws IOException, URISyntaxException {
+ *         return super.each();
+ *     }
+ *     </pre>
+ * </p>
+ *
+ * <p>
+ *     The class will use {@link Approvals approval} tests to assert the returned response is correct.
+ * </p>
+ *
+ *
+ * @since 2.0 {@index}
+ */
 @SpringBootTest(
         classes = {
                 CausewayViewerGraphqlIntegTestAbstract.TestApp.class
diff --git a/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
index 1df3802c55..e95b377d6f 100644
--- a/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
+++ b/viewers/graphql/testsupport/src/main/java/org/apache/causeway/viewer/graphql/viewer/testsupport/schema/PrintSchemaIntegTestAbstract.java
@@ -56,9 +56,11 @@ import lombok.val;
  *     If the {@link org.apache.causeway.core.config.CausewayConfiguration.Viewer.Graphql.ApiVariant ApiVariant} is to
  *     be overridden from the framework's default, use for example Spring's @{@link DynamicPropertySource} annotation.
  * </p>
+ *
+ * @since 2.0 {@index}
  */
 @Transactional
-public class PrintSchemaIntegTestAbstract extends CausewayViewerGraphqlIntegTestAbstract {
+public abstract class PrintSchemaIntegTestAbstract extends CausewayViewerGraphqlIntegTestAbstract {
 
     @Inject private CausewaySystemEnvironment causewaySystemEnvironment;
     @Inject private SpecificationLoader specificationLoader;