This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/master by this push:
new 916c9da553 CAUSEWAY-3411: puts specs-to-yaml code into MmSpecUtil
916c9da553 is described below
commit 916c9da5535092cceb733044b5609c702127a897
Author: Andi Huber <[email protected]>
AuthorDate: Tue Apr 4 17:37:33 2023 +0200
CAUSEWAY-3411: puts specs-to-yaml code into MmSpecUtil
---
.../causeway/core/metamodel/object/MmSpecUtil.java | 43 ++++++++++++++++++++++
.../demoapp/testing/jdo/SpinUpDemoJdoTest.java | 31 ++++++++++++++--
.../demoapp/testing/jpa/SpinUpDemoJpaTest.java | 40 +++++---------------
3 files changed, 80 insertions(+), 34 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmSpecUtil.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmSpecUtil.java
index d3b555d3fb..b958a0d955 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmSpecUtil.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmSpecUtil.java
@@ -18,9 +18,17 @@
*/
package org.apache.causeway.core.metamodel.object;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+import org.apache.causeway.commons.collections.Can;
+import org.apache.causeway.commons.internal.collections._Multimaps;
import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
+import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
import lombok.NonNull;
+import lombok.val;
import lombok.experimental.UtilityClass;
@UtilityClass
@@ -42,4 +50,39 @@ public final class MmSpecUtil {
.apply(guess.getSpecificationLoader().specForTypeElseFail(requiredType));
}
+ /**
+ * Introduced for JUnit testing.
+ * <p>
+ * Shortcut for {@code
specificationsBySortAsYaml(specLoader.snapshotSpecifications())}.
+ */
+ public String specificationsBySortAsYaml(final @NonNull
SpecificationLoader specLoader) {
+ return specificationsBySortAsYaml(specLoader.snapshotSpecifications());
+ }
+
+ /**
+ * Introduced for JUnit testing.
+ */
+ public String specificationsBySortAsYaml(final @NonNull
Can<ObjectSpecification> specs) {
+
+ // collect all ObjectSpecifications into a list-multi-map, where
BeanSort is the key
+ var specsBySort = _Multimaps.<String,
String>newListMultimap(LinkedHashMap<String, List<String>>::new,
ArrayList::new);
+ specs
+ .stream()
+ .sorted()
+
.forEach(spec->specsBySort.putElement(spec.getBeanSort().name(),
spec.getLogicalTypeName()));
+
+ // export the list-multi-map to YAML format
+ val sb = new StringBuilder();
+ sb.append("ObjectSpecifications:\n");
+ specsBySort
+ .forEach((key, list)->{
+ sb.append(String.format(" %s:\n", key));
+ list.forEach(logicalTypeName->{
+ sb.append(String.format(" - %s\n", logicalTypeName));
+ });
+ });
+
+ return sb.toString();
+ }
+
}
\ No newline at end of file
diff --git
a/examples/demo/testing/jdo/src/test/java/demoapp/testing/jdo/SpinUpDemoJdoTest.java
b/examples/demo/testing/jdo/src/test/java/demoapp/testing/jdo/SpinUpDemoJdoTest.java
index d9dc037ba5..fd140ce5b0 100644
---
a/examples/demo/testing/jdo/src/test/java/demoapp/testing/jdo/SpinUpDemoJdoTest.java
+++
b/examples/demo/testing/jdo/src/test/java/demoapp/testing/jdo/SpinUpDemoJdoTest.java
@@ -18,11 +18,22 @@
*/
package demoapp.testing.jdo;
+import org.approvaltests.Approvals;
+import org.approvaltests.core.Options;
+import org.approvaltests.reporters.DiffReporter;
+import org.approvaltests.reporters.UseReporter;
import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
+import org.apache.causeway.core.metamodel.context.MetaModelContext;
+import org.apache.causeway.core.metamodel.object.MmSpecUtil;
+
+import lombok.val;
+
@SpringBootTest(
classes = {
DemoDomainJdo_forTesting.class
@@ -31,10 +42,24 @@ import org.springframework.test.context.ActiveProfiles;
})
@ActiveProfiles(profiles = "demo-jdo")
class SpinUpDemoJdoTest {
-
+
+ @Autowired MetaModelContext mmc;
+
@Test @Disabled("missing DomainObjectAliasedJdo, ...") //TODO demo domain
is currently WIP
- void contextLoads() {
-
+ @DisplayName("verifyAllSpecificationsDiscovered")
+ @UseReporter(DiffReporter.class)
+ void verify() {
+
+ val specificationsBySortAsYaml =
+
MmSpecUtil.specificationsBySortAsYaml(mmc.getSpecificationLoader());
+
+ //debug
+ //System.err.printf("%s%n", specificationsBySortAsYaml);
+
+ // verify against approved run
+ Approvals.verify(specificationsBySortAsYaml, new Options()
+ .forFile()
+ .withExtension(".yaml"));
}
}
\ No newline at end of file
diff --git
a/examples/demo/testing/jpa/src/test/java/demoapp/testing/jpa/SpinUpDemoJpaTest.java
b/examples/demo/testing/jpa/src/test/java/demoapp/testing/jpa/SpinUpDemoJpaTest.java
index 5f64c5edfe..2ce07f5767 100644
---
a/examples/demo/testing/jpa/src/test/java/demoapp/testing/jpa/SpinUpDemoJpaTest.java
+++
b/examples/demo/testing/jpa/src/test/java/demoapp/testing/jpa/SpinUpDemoJpaTest.java
@@ -18,10 +18,6 @@
*/
package demoapp.testing.jpa;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-
import org.approvaltests.Approvals;
import org.approvaltests.core.Options;
import org.approvaltests.reporters.DiffReporter;
@@ -32,9 +28,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
-import org.apache.causeway.commons.internal.collections._Multimaps;
-import org.apache.causeway.core.config.beans.CausewayBeanTypeRegistry;
import org.apache.causeway.core.metamodel.context.MetaModelContext;
+import org.apache.causeway.core.metamodel.object.MmSpecUtil;
import lombok.val;
@@ -48,39 +43,22 @@ import lombok.val;
})
@ActiveProfiles(profiles = "demo-jpa")
class SpinUpDemoJpaTest {
-
+
@Autowired MetaModelContext mmc;
- @Autowired CausewayBeanTypeRegistry causewayBeanTypeRegistry;
-
+
@Test
@DisplayName("verifyAllSpecificationsDiscovered")
@UseReporter(DiffReporter.class)
void verify() {
-
- var specsBySort = _Multimaps.<String,
String>newListMultimap(LinkedHashMap<String, List<String>>::new,
ArrayList::new);
- // collect all ObjectSpecifications into a list-multi-map, where
BeanSort is the key
- mmc.getSpecificationLoader().snapshotSpecifications()
- .stream()
- .sorted()
-
.forEach(spec->specsBySort.putElement(spec.getBeanSort().name(),
spec.getLogicalTypeName()));
-
- // export the list-multi-map to YAML format
- val sb = new StringBuilder();
- sb.append("ObjectSpecifications:\n");
- specsBySort
- .forEach((key, list)->{
- sb.append(String.format(" %s:\n", key));
- list.forEach(logicalTypeName->{
- sb.append(String.format(" - %s\n", logicalTypeName));
- });
- });
-
+ val specificationsBySortAsYaml =
+
MmSpecUtil.specificationsBySortAsYaml(mmc.getSpecificationLoader());
+
//debug
- //System.err.printf("%s%n", sb.toString());
-
+ //System.err.printf("%s%n", specificationsBySortAsYaml);
+
// verify against approved run
- Approvals.verify(sb.toString(), new Options()
+ Approvals.verify(specificationsBySortAsYaml, new Options()
.forFile()
.withExtension(".yaml"));
}