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 cc63248260750a2d9f3aecd8df39adcdd88ea6ea
Author: danhaywood <[email protected]>
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"));
-    }
-
 }

Reply via email to