You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/07/05 05:28:23 UTC
[isis] branch master updated: ISIS-2787: housekeeping with tests:
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new b074db4 ISIS-2787: housekeeping with tests:
b074db4 is described below
commit b074db497e16d111de64f502d8df783530d34aa6
Author: andi-huber <ah...@apache.org>
AuthorDate: Mon Jul 5 07:28:12 2021 +0200
ISIS-2787: housekeeping with tests:
- move reflection tests to applib (as using the @Programmatic annot.)
and align package naming
- bundle the complexity for setting up service tests (w/o Spring and w/o
mocking) into a common abstract test class (RuntimeServicesTestAbstract)
---
.../reflection/ReflectSampleForTesting.java | 2 +-
.../commons/internal/reflection/ReflectTest.java | 33 +++++----
.../_testing/MetaModelContext_forTesting.java | 18 ++++-
.../RuntimeServicesTestAbstract.java | 81 ++++++++++++++++++++++
.../bootstrap3/MenuBarsServiceBS3Test.java | 56 ++++-----------
5 files changed, 127 insertions(+), 63 deletions(-)
diff --git a/core/runtimeservices/src/test/java/org/apache/isis/core/metamodel/commons/internal/reflection/ReflectSampleForTesting.java b/api/applib/src/test/java/org/apache/isis/applib/commons/internal/reflection/ReflectSampleForTesting.java
similarity index 94%
rename from core/runtimeservices/src/test/java/org/apache/isis/core/metamodel/commons/internal/reflection/ReflectSampleForTesting.java
rename to api/applib/src/test/java/org/apache/isis/applib/commons/internal/reflection/ReflectSampleForTesting.java
index 5bb3688..99bf53d 100644
--- a/core/runtimeservices/src/test/java/org/apache/isis/core/metamodel/commons/internal/reflection/ReflectSampleForTesting.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/commons/internal/reflection/ReflectSampleForTesting.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.commons.internal.reflection;
+package org.apache.isis.applib.commons.internal.reflection;
public class ReflectSampleForTesting {
diff --git a/core/runtimeservices/src/test/java/org/apache/isis/core/metamodel/commons/internal/reflection/ReflectTest.java b/api/applib/src/test/java/org/apache/isis/applib/commons/internal/reflection/ReflectTest.java
similarity index 83%
rename from core/runtimeservices/src/test/java/org/apache/isis/core/metamodel/commons/internal/reflection/ReflectTest.java
rename to api/applib/src/test/java/org/apache/isis/applib/commons/internal/reflection/ReflectTest.java
index 1ca1bd5..94310a1 100644
--- a/core/runtimeservices/src/test/java/org/apache/isis/core/metamodel/commons/internal/reflection/ReflectTest.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/commons/internal/reflection/ReflectTest.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.isis.core.metamodel.commons.internal.reflection;
+package org.apache.isis.applib.commons.internal.reflection;
import java.lang.reflect.Method;
import java.util.List;
@@ -27,10 +27,6 @@ import java.util.stream.Collectors;
import org.junit.jupiter.api.Test;
-import static org.junit.Assert.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.commons.internal.reflection._Reflect.InterfacePolicy;
@@ -38,6 +34,9 @@ import org.apache.isis.commons.internal.reflection._Reflect.InterfacePolicy;
import static org.apache.isis.commons.internal.reflection._Reflect.getAnnotation;
import static org.apache.isis.commons.internal.reflection._Reflect.streamAllMethods;
import static org.apache.isis.commons.internal.reflection._Reflect.streamTypeHierarchy;
+import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import lombok.val;
@@ -53,11 +52,11 @@ class ReflectTest {
.collect(Collectors.toSet());
assertSetContainsAll(_Sets.<String>of(
- "org.apache.isis.core.metamodel.commons.internal.reflection.ReflectSampleForTesting$Nested",
+ "org.apache.isis.applib.commons.internal.reflection.ReflectSampleForTesting$Nested",
"java.lang.Object"),
typeSet);
}
-
+
@Test
void typeHierarchyAndInterfaces() {
@@ -67,11 +66,11 @@ class ReflectTest {
val typeSet = streamTypeHierarchy(type, InterfacePolicy.INCLUDE)
.map(Class::getName)
.collect(Collectors.toSet());
-
+
assertSetContainsAll(_Sets.<String>of(
- "org.apache.isis.core.metamodel.commons.internal.reflection.ReflectSampleForTesting$NestedInterface",
- "org.apache.isis.core.metamodel.commons.internal.reflection.ReflectSampleForTesting$Nested",
- "java.lang.Object"),
+ "org.apache.isis.applib.commons.internal.reflection.ReflectSampleForTesting$NestedInterface",
+ "org.apache.isis.applib.commons.internal.reflection.ReflectSampleForTesting$Nested",
+ "java.lang.Object"),
typeSet);
}
@@ -84,10 +83,10 @@ class ReflectTest {
val typeSet = streamAllMethods(type, true)
.map(m->m.toString())
.collect(Collectors.toSet());
-
+
assertSetContainsAll(_Sets.<String>of(
- "public abstract void org.apache.isis.core.metamodel.commons.internal.reflection.ReflectSampleForTesting$NestedInterface.sayHello()",
- "public void org.apache.isis.core.metamodel.commons.internal.reflection.ReflectSampleForTesting$Nested.sayHello()"),
+ "public abstract void org.apache.isis.applib.commons.internal.reflection.ReflectSampleForTesting$NestedInterface.sayHello()",
+ "public void org.apache.isis.applib.commons.internal.reflection.ReflectSampleForTesting$Nested.sayHello()"),
typeSet);
}
@@ -111,8 +110,8 @@ class ReflectTest {
static interface I {
static class B implements I {}
}
-
-
+
+
@Test
void typeHierarchyAndInterfaces2() {
@@ -132,7 +131,7 @@ class ReflectTest {
// -- HELPER
-
+
private static void assertSetContainsAll(Set<String> shouldContain, Set<String> actuallyContains) {
assertTrue(_Sets.minus(shouldContain, actuallyContains).isEmpty());
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
index f10c498..f2f3127 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
@@ -51,6 +51,7 @@ import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.commons.internal.collections._Streams;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.commons.internal.ioc._ManagedBeanAdapter;
import org.apache.isis.core.config.IsisConfiguration;
@@ -160,6 +161,9 @@ implements MetaModelContext {
@Singular
private List<Object> singletons;
+ @Singular
+ private List<_ManagedBeanAdapter> singletonProviders;
+
// -- SERVICE SUPPORT
@Override
@@ -212,7 +216,7 @@ implements MetaModelContext {
}
Stream<_ManagedBeanAdapter> streamBeanAdapters() {
- return Stream.concat(
+ return _Streams.concat(
streamSingletons().map(_ManagedBeanAdapter::forTesting),
Stream.of(
// support for lazy bean providers,
@@ -221,7 +225,8 @@ implements MetaModelContext {
_ManagedBeanAdapter.forTestingLazy(JaxbService.class, this::getJaxbService),
_ManagedBeanAdapter.forTestingLazy(MenuBarsService.class, this::getMenuBarsService),
_ManagedBeanAdapter.forTestingLazy(LayoutService.class, this::getLayoutService)
- ));
+ ),
+ singletonProviders.stream());
}
private static IsisSystemEnvironment newIsisSystemEnvironment() {
@@ -380,7 +385,14 @@ implements MetaModelContext {
private final JaxbService jaxbService = new JaxbService.Simple();
@Getter(lazy = true)
- private final MenuBarsService menuBarsService = MenuBarsService.forTesting();
+ private final MenuBarsService menuBarsService = createMenuBarsService();
+ private final MenuBarsService createMenuBarsService() {
+ return getSingletonProviders().stream()
+ .filter(provider->provider.isCandidateFor(MenuBarsService.class))
+ .findFirst()
+ .map(provider->(MenuBarsService)provider.getInstance().getFirstOrFail())
+ .orElseGet(MenuBarsService::forTesting);
+ }
@Getter(lazy = true)
private final GridReaderUsingJaxb gridReader = createGridReader();
diff --git a/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/RuntimeServicesTestAbstract.java b/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/RuntimeServicesTestAbstract.java
new file mode 100644
index 0000000..a6014ce
--- /dev/null
+++ b/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/RuntimeServicesTestAbstract.java
@@ -0,0 +1,81 @@
+package org.apache.isis.core.runtimeservices;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+
+import org.apache.isis.applib.services.jaxb.JaxbService;
+import org.apache.isis.applib.services.menu.MenuBarsLoaderService;
+import org.apache.isis.applib.services.menu.MenuBarsService;
+import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.commons.internal.ioc._ManagedBeanAdapter;
+import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
+import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting.MetaModelContext_forTestingBuilder;
+import org.apache.isis.core.metamodel.context.HasMetaModelContext;
+import org.apache.isis.core.metamodel.context.MetaModelContext;
+import org.apache.isis.core.runtimeservices.menubars.MenuBarsLoaderServiceDefault;
+import org.apache.isis.core.runtimeservices.menubars.bootstrap3.MenuBarsServiceBS3;
+
+import lombok.Getter;
+import lombok.val;
+
+public abstract class RuntimeServicesTestAbstract
+implements HasMetaModelContext {
+
+ @Getter(onMethod_ = {@Override})
+ private MetaModelContext metaModelContext;
+
+ @BeforeEach
+ final void setUp() throws Exception {
+ val mmcBuilder = MetaModelContext_forTesting.builder();
+
+ // install runtime services into MMC (extend as needed)
+
+ mmcBuilder.singletonProvider(
+ _ManagedBeanAdapter
+ .forTestingLazy(MenuBarsLoaderService.class, ()->{
+
+ val jaxbService = getServiceRegistry().lookupServiceElseFail(JaxbService.class);
+ return new MenuBarsLoaderServiceDefault(
+ getSystemEnvironment(),
+ jaxbService,
+ getConfiguration());
+ }));
+
+
+ mmcBuilder.singletonProvider(
+ _ManagedBeanAdapter
+ .forTestingLazy(MenuBarsService.class, ()->{
+
+ val messageService = getServiceRegistry().lookupServiceElseFail(MessageService.class);
+ val jaxbService = getServiceRegistry().lookupServiceElseFail(JaxbService.class);
+ val menuBarsLoaderService = getServiceRegistry().lookupServiceElseFail(MenuBarsLoaderService.class);
+ return new MenuBarsServiceBS3(
+ menuBarsLoaderService,
+ messageService,
+ jaxbService,
+ getSystemEnvironment(),
+ metaModelContext);
+
+ }));
+
+ onSetUp(mmcBuilder);
+ metaModelContext = mmcBuilder.build();
+ afterSetUp();
+ }
+
+ @AfterEach
+ final void tearDown() throws Exception {
+ onTearDown();
+ metaModelContext.getSpecificationLoader().disposeMetaModel();
+ }
+
+ protected void onSetUp(MetaModelContext_forTestingBuilder mmcBuilder) {
+ }
+
+ protected void afterSetUp() {
+ }
+
+ protected void onTearDown() {
+ }
+
+}
\ No newline at end of file
diff --git a/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/menubars/bootstrap3/MenuBarsServiceBS3Test.java b/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/menubars/bootstrap3/MenuBarsServiceBS3Test.java
index 2ae56a7..2aea10b 100644
--- a/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/menubars/bootstrap3/MenuBarsServiceBS3Test.java
+++ b/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/menubars/bootstrap3/MenuBarsServiceBS3Test.java
@@ -18,69 +18,41 @@
*/
package org.apache.isis.core.runtimeservices.menubars.bootstrap3;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.apache.isis.applib.services.jaxb.JaxbService;
-import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.applib.services.menu.MenuBarsService;
import org.apache.isis.commons.internal.base._Refs;
-import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
-import org.apache.isis.core.metamodel.context.HasMetaModelContext;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.runtimeservices.menubars.MenuBarsLoaderServiceDefault;
+import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting.MetaModelContext_forTestingBuilder;
+import org.apache.isis.core.runtimeservices.RuntimeServicesTestAbstract;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import lombok.Getter;
import lombok.val;
class MenuBarsServiceBS3Test
-implements HasMetaModelContext {
-
- @Getter(onMethod_ = {@Override})
- private MetaModelContext metaModelContext;
+extends RuntimeServicesTestAbstract {
private MenuBarsServiceBS3 menuBarsService;
- @BeforeEach
- void setUp() throws Exception {
- metaModelContext = MetaModelContext_forTesting
- .builder()
- .singleton(new Bar())
- .build();
+ @Override
+ protected void onSetUp(MetaModelContext_forTestingBuilder mmcBuilder) {
+ mmcBuilder.singleton(new Bar());
+ }
+
+ @Override
+ protected void afterSetUp() {
+ menuBarsService = (MenuBarsServiceBS3) getServiceRegistry().lookupServiceElseFail(MenuBarsService.class);
+ // double check, we are all set
getSpecificationLoader().loadSpecification(Bar.class);
assertTrue(getServiceRegistry().streamRegisteredBeans()
.anyMatch(bean->bean.getBeanClass().equals(Bar.class)));
- assertTrue(metaModelContext.streamServiceAdapters()
+ assertTrue(getMetaModelContext().streamServiceAdapters()
.anyMatch(domainObject->domainObject.getSpecification().getCorrespondingClass().equals(Bar.class)));
-
-
- val messageService = getServiceRegistry().lookupServiceElseFail(MessageService.class);
- val jaxbService = getServiceRegistry().lookupServiceElseFail(JaxbService.class);
-
- val menuBarsLoaderService = new MenuBarsLoaderServiceDefault(
- getSystemEnvironment(),
- jaxbService,
- getConfiguration());
-
- menuBarsService = new MenuBarsServiceBS3(
- menuBarsLoaderService,
- messageService,
- jaxbService,
- getSystemEnvironment(),
- metaModelContext);
-
- }
-
- @AfterEach
- void tearDown() throws Exception {
- getSpecificationLoader().disposeMetaModel();
}
@Test