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/04 03:11:37 UTC

[isis] branch master updated: ISIS-2787: some housekeeping with MM 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 e7e37c0  ISIS-2787: some housekeeping with MM tests
e7e37c0 is described below

commit e7e37c0ee71123ce3f1b53c92f3caa4d5eccc5c3
Author: andi-huber <ah...@apache.org>
AuthorDate: Sun Jul 4 05:11:25 2021 +0200

    ISIS-2787: some housekeeping with MM tests
---
 .../apache/isis/core/config/IsisConfiguration.java | 19 ++---
 .../_testing/MetaModelContext_forTesting.java      | 24 +++---
 .../facets/object/mixin/MixinIntendedAs.java       | 26 +------
 .../facets/param/name/ParameterNameFacetTest.java  |  4 -
 .../services/title/TitleServiceDefaultTest.java    | 33 ++------
 .../SpecificationLoaderTestAbstract.java           | 82 ++------------------
 .../webapp/wicket/jdo/DemoAppWicketJdo.java        |  3 +-
 .../SpecificationLoaderTestAbstract.java           | 88 ++--------------------
 8 files changed, 41 insertions(+), 238 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
index 574e872..aed0f79 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
@@ -22,7 +22,6 @@ import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import java.time.Duration;
-import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -32,16 +31,9 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
-import java.util.Set;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
 import javax.activation.DataSource;
 import javax.validation.Constraint;
 import javax.validation.ConstraintValidator;
@@ -51,7 +43,6 @@ import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 
 import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.convert.DurationUnit;
 import org.springframework.core.env.ConfigurableEnvironment;
 import org.springframework.validation.annotation.Validated;
 
@@ -69,6 +60,7 @@ import org.apache.isis.applib.services.userreg.EmailNotificationService;
 import org.apache.isis.applib.services.userreg.UserRegistrationService;
 import org.apache.isis.applib.services.userui.UserMenu;
 import org.apache.isis.commons.internal.context._Context;
+import org.apache.isis.core.config.IsisConfiguration.Viewer;
 import org.apache.isis.core.config.metamodel.facets.DefaultViewConfiguration;
 import org.apache.isis.core.config.metamodel.facets.EditingObjectsConfiguration;
 import org.apache.isis.core.config.metamodel.facets.PublishingPolicies.ActionPublishingPolicy;
@@ -78,12 +70,15 @@ import org.apache.isis.core.config.metamodel.services.ApplicationFeaturesInitCon
 import org.apache.isis.core.config.metamodel.specloader.IntrospectionMode;
 import org.apache.isis.core.config.viewer.wicket.DialogMode;
 
-import lombok.Builder;
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
 import lombok.Data;
 import lombok.Getter;
-import lombok.NonNull;
 import lombok.Setter;
-import lombok.Singular;
 import lombok.Value;
 import lombok.val;
 
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 c677837..df4a54a 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
@@ -25,8 +25,6 @@ import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.stream.Stream;
 
-import static java.util.Objects.requireNonNull;
-
 import org.springframework.core.env.AbstractEnvironment;
 
 import org.apache.isis.applib.services.factory.FactoryService;
@@ -59,6 +57,7 @@ import org.apache.isis.core.metamodel.objectmanager.ObjectManagerDefault;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModelAbstract;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilterDefault;
+import org.apache.isis.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava8;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorRegistry;
 import org.apache.isis.core.metamodel.services.events.MetamodelEventService;
 import org.apache.isis.core.metamodel.services.title.TitleServiceDefault;
@@ -68,13 +67,16 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoaderDefault;
 import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
 import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
 
+import static java.util.Objects.requireNonNull;
+
 import lombok.Builder;
 import lombok.Getter;
 import lombok.Singular;
 import lombok.val;
 
 @Builder @Getter
-public final class MetaModelContext_forTesting implements MetaModelContext {
+public final class MetaModelContext_forTesting
+implements MetaModelContext {
 
     public static MetaModelContext buildDefault() {
         return MetaModelContext_forTesting.builder()
@@ -86,8 +88,9 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
 
     @Builder.Default
     private MetamodelEventService metamodelEventService =
-    MetamodelEventService.builder()
-    .build();
+        MetamodelEventService
+        .builder()
+        .build();
 
     @Builder.Default
     private IsisSystemEnvironment systemEnvironment = newIsisSystemEnvironment();
@@ -104,7 +107,8 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
 
     private SpecificationLoader specificationLoader;
 
-    private Function<MetaModelContext,  ProgrammingModel> programmingModelFactory;
+    @Builder.Default
+    private Function<MetaModelContext,  ProgrammingModel> programmingModelFactory = ProgrammingModelFacetsJava8::new;
 
     private InteractionProvider interactionProvider;
 
@@ -193,8 +197,6 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
                 .filter(_NullSafe::isPresent);
     }
 
-
-
     private static IsisSystemEnvironment newIsisSystemEnvironment() {
         val env = new IsisSystemEnvironment();
         env.setUnitTesting(true);
@@ -339,9 +341,13 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
             this.configuration = currentConfigBackup;
         }
 
+    }
 
+    // -- WITHERS
 
+    public MetaModelContext updateTitleService(Function<MetaModelContext, TitleService> factory) {
+        titleService = factory.apply(this);
+        return this;
     }
 
-
 }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinIntendedAs.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinIntendedAs.java
index 28a8c98..3494920 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinIntendedAs.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinIntendedAs.java
@@ -20,16 +20,8 @@ package org.apache.isis.core.metamodel.facets.object.mixin;
 
 import java.lang.reflect.Method;
 
-import org.mockito.ArgumentMatchers;
-import org.mockito.Mockito;
-
-import static org.mockito.Mockito.when;
-
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.applib.services.i18n.Mode;
-import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderAbstract;
@@ -38,8 +30,6 @@ import org.apache.isis.core.metamodel.facetapi.MethodRemover;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava8;
-import org.apache.isis.core.metamodel.services.title.TitleServiceDefault;
 
 import lombok.val;
 
@@ -50,28 +40,14 @@ abstract class MixinIntendedAs {
 
     protected void setUp() throws Exception {
 
-        val mockServiceInjector = Mockito.mock(ServiceInjector.class);
-        when(mockServiceInjector.injectServicesInto(ArgumentMatchers.any())).thenAnswer(i -> i.getArguments()[0]);
-
-        val mockTranslationService = Mockito.mock(TranslationService.class);
-        when(mockTranslationService.getMode()).thenReturn(Mode.DISABLED);
-
-        // PRODUCTION
-
         metaModelContext = MetaModelContext_forTesting.builder()
-                .programmingModelFactory(ProgrammingModelFacetsJava8::new)
-                .translationService(mockTranslationService)
-                .titleService(new TitleServiceDefault(null, null))
-                .serviceInjector(mockServiceInjector)
                 .build();
 
-        metaModelContext.getSpecificationLoader().createMetaModel();
-
         programmingModel = metaModelContext.getProgrammingModel();
     }
 
     protected void tearDown() {
-        programmingModel = null;
+        metaModelContext.getSpecificationLoader().disposeMetaModel();
     }
 
     protected void newContext(
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
index 2532a33..c4550a4 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
@@ -50,13 +50,9 @@ extends AbstractFacetFactoryJUnit4TestCase {
     @Before
     public void setUp() throws Exception {
 
-        //val mockServiceInjector = Mockito.mock(ServiceInjector.class);
-
         val metaModelContext = MetaModelContext_forTesting.builder()
-                .programmingModelFactory(ProgrammingModelFacetsJava8::new)
                 .build();
 
-
         super.setUpFacetedMethodAndParameter();
 
         programmingModel = metaModelContext.getProgrammingModel();
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefaultTest.java
index 1022f9b..976ce98 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefaultTest.java
@@ -18,47 +18,26 @@
  */
 package org.apache.isis.core.metamodel.services.title;
 
-import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentMatchers;
-import org.mockito.Mockito;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.Mockito.when;
-
-import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava8;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import lombok.val;
 
 class TitleServiceDefaultTest {
 
-    private MetaModelContext metaModelContext;
     private TitleServiceDefault titleService;
 
     @BeforeEach
     void setUp() throws Exception {
 
-        val mockServiceInjector = Mockito.mock(ServiceInjector.class);
-        when(mockServiceInjector.injectServicesInto(ArgumentMatchers.any())).thenAnswer(i -> i.getArguments()[0]);
-
-        metaModelContext = MetaModelContext_forTesting.builder()
-                .programmingModelFactory(ProgrammingModelFacetsJava8::new)
-                .titleService(new TitleServiceDefault(null, null)) // not used by this test, but required to init
-                .serviceInjector(mockServiceInjector)
-                .build();
-
-        metaModelContext.getSpecificationLoader().createMetaModel();
-
-        titleService = new TitleServiceDefault(null, metaModelContext.getObjectManager());
-
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
+        MetaModelContext_forTesting.builder()
+                .build()
+                .updateTitleService(mmc->titleService = new TitleServiceDefault(null, mmc.getObjectManager()))
+                ;
     }
 
     // -- FEATURED
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
index 6db5217..d44d446 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -23,22 +23,8 @@ import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-import org.springframework.core.env.ConfigurableEnvironment;
 
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.Mockito.when;
-
-import org.apache.isis.applib.services.grid.GridService;
-import org.apache.isis.applib.services.i18n.Mode;
-import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.iactn.InteractionProvider;
-import org.apache.isis.applib.services.inject.ServiceInjector;
-import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.applib.services.title.TitleService;
 import org.apache.isis.commons.internal.base._Optionals;
-import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -48,60 +34,15 @@ import org.apache.isis.core.metamodel.facets.all.described.ObjectDescribedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.MemberNamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.ObjectNamedFacet;
 import org.apache.isis.core.metamodel.facets.collections.CollectionFacet;
-import org.apache.isis.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava8;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
 import lombok.val;
 
 abstract class SpecificationLoaderTestAbstract {
 
-    static class Producers {
-
-        ConfigurableEnvironment newConfigurableEnvironment() {
-            val mock = Mockito.mock(ConfigurableEnvironment.class);
-            when(mock.getProperty("")).thenReturn("nop");
-            return mock;
-        }
-
-        IsisConfiguration newConfiguration() {
-            val config = new IsisConfiguration(newConfigurableEnvironment()); // uses defaults!
-            config.getCore().getMetaModel().getIntrospector().setLockAfterFullIntrospection(false);
-            return config;
-        }
-
-        InteractionProvider mockInteractionProvider() {
-            return Mockito.mock(InteractionProvider.class);
-        }
-
-        GridService mockGridService() {
-            return Mockito.mock(GridService.class);
-        }
-
-        MessageService mockMessageService() {
-            return Mockito.mock(MessageService.class);
-        }
-
-        TitleService mockTitleService() {
-            return Mockito.mock(TitleService.class);
-        }
-
-        TranslationService mockTranslationService() {
-            val mock = Mockito.mock(TranslationService.class);
-            when(mock.getMode()).thenReturn(Mode.DISABLED);
-            return mock;
-        }
-
-        ServiceInjector mockServiceInjector() {
-            return Mockito.mock(ServiceInjector.class);
-        }
-
-    }
-
-    protected IsisConfiguration isisConfiguration;
-    protected SpecificationLoader specificationLoader;
-    protected InteractionProvider mockInteractionProvider;
-    protected GridService mockGridService;
-    protected MessageService mockMessageService;
     protected MetaModelContext metaModelContext;
 
     // is loaded by subclasses
@@ -112,23 +53,10 @@ abstract class SpecificationLoaderTestAbstract {
 
         // PRODUCTION
 
-        val producers = new Producers();
-
         metaModelContext = MetaModelContext_forTesting.builder()
-                .configuration(isisConfiguration = producers.newConfiguration())
-                .programmingModelFactory(ProgrammingModelFacetsJava8::new)
-                .translationService(producers.mockTranslationService())
-                .titleService(producers.mockTitleService())
-                .interactionProvider(mockInteractionProvider =
-                    producers.mockInteractionProvider())
-                .singleton(mockMessageService = producers.mockMessageService())
-                .singleton(mockGridService = producers.mockGridService())
-                .serviceInjector(producers.mockServiceInjector())
                 .build();
 
-        specificationLoader = metaModelContext.getSpecificationLoader();
-
-        specificationLoader.createMetaModel();
+        val specificationLoader = metaModelContext.getSpecificationLoader();
 
         specification = loadSpecification(specificationLoader);
 
@@ -136,7 +64,7 @@ abstract class SpecificationLoaderTestAbstract {
 
     @AfterEach
     public void tearDown() throws Exception {
-        specificationLoader.disposeMetaModel();
+        metaModelContext.getSpecificationLoader().disposeMetaModel();
     }
 
     protected abstract ObjectSpecification loadSpecification(SpecificationLoader reflector);
diff --git a/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java b/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
index 570728d..2d79d26 100644
--- a/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
+++ b/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
@@ -23,6 +23,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.context.annotation.Import;
 
+import org.apache.isis.commons.internal.debug.xray.XrayEnable;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.ui.IsisModuleExtPdfjsUi;
 import org.apache.isis.valuetypes.asciidoc.metamodel.IsisModuleValAsciidocMetaModel;
 import org.apache.isis.valuetypes.asciidoc.persistence.jdo.dn5.IsisModuleValAsciidocPersistenceJdoDn5;
@@ -60,7 +61,7 @@ import demoapp.webapp.wicket.common.ui.custom.WhereInTheWorldPanelFactory;
     IsisModuleValAsciidocPersistenceJdoDn5.class,
     IsisModuleValMarkdownPersistenceJdoDn5.class,
 
-    //XrayEnable.class // for debugging only
+    XrayEnable.class // for debugging only
 })
 //@Log4j2
 public class DemoAppWicketJdo extends SpringBootServletInitializer {
diff --git a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/specloader/SpecificationLoaderTestAbstract.java b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/specloader/SpecificationLoaderTestAbstract.java
index fe0ad65..cd511d6 100644
--- a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -23,22 +23,8 @@ import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-import org.springframework.core.env.ConfigurableEnvironment;
 
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.Mockito.when;
-
-import org.apache.isis.applib.services.grid.GridService;
-import org.apache.isis.applib.services.i18n.Mode;
-import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.iactn.InteractionProvider;
-import org.apache.isis.applib.services.inject.ServiceInjector;
-import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.applib.services.title.TitleService;
 import org.apache.isis.commons.internal.base._Optionals;
-import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -48,61 +34,16 @@ import org.apache.isis.core.metamodel.facets.all.described.ObjectDescribedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.MemberNamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.ObjectNamedFacet;
 import org.apache.isis.core.metamodel.facets.collections.CollectionFacet;
-import org.apache.isis.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava8;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
 import lombok.val;
 
 abstract class SpecificationLoaderTestAbstract {
 
-    static class Producers {
-
-        ConfigurableEnvironment newConfigurableEnvironment() {
-            val mock = Mockito.mock(ConfigurableEnvironment.class);
-            when(mock.getProperty("")).thenReturn("nop");
-            return mock;
-        }
-
-        IsisConfiguration newConfiguration() {
-            val config = new IsisConfiguration(newConfigurableEnvironment()); // uses defaults!
-            config.getCore().getMetaModel().getIntrospector().setLockAfterFullIntrospection(false);
-            return config;
-        }
-
-        InteractionProvider mockInteractionProvider() {
-            return Mockito.mock(InteractionProvider.class);
-        }
-
-        GridService mockGridService() {
-            return Mockito.mock(GridService.class);
-        }
-
-        MessageService mockMessageService() {
-            return Mockito.mock(MessageService.class);
-        }
-
-        TitleService mockTitleService() {
-            return Mockito.mock(TitleService.class);
-        }
-
-        TranslationService mockTranslationService() {
-            val mock = Mockito.mock(TranslationService.class);
-            when(mock.getMode()).thenReturn(Mode.DISABLED);
-            return mock;
-        }
-
-        ServiceInjector mockServiceInjector() {
-            return Mockito.mock(ServiceInjector.class);
-        }
-
-    }
-
-    protected IsisConfiguration isisConfiguration;
-    protected SpecificationLoader specificationLoader;
-    protected InteractionProvider mockInteractionProvider;
-    protected GridService mockGridService;
-    protected MessageService mockMessageService;
     protected MetaModelContext metaModelContext;
 
     // is loaded by subclasses
@@ -111,34 +52,15 @@ abstract class SpecificationLoaderTestAbstract {
     @BeforeEach
     public void setUp() throws Exception {
 
-        // PRODUCTION
-
-        val producers = new Producers();
-
         metaModelContext = MetaModelContext_forTesting.builder()
-                .configuration(isisConfiguration = producers.newConfiguration())
-                .programmingModelFactory(ProgrammingModelFacetsJava8::new)
-                .translationService(producers.mockTranslationService())
-                .titleService(producers.mockTitleService())
-//                .objectAdapterProvider(mockPersistenceSessionServiceInternal = producers.mockPersistenceSessionServiceInternal())
-                .interactionProvider(mockInteractionProvider =
-                    producers.mockInteractionProvider())
-                .singleton(mockMessageService = producers.mockMessageService())
-                .singleton(mockGridService = producers.mockGridService())
-                .serviceInjector(producers.mockServiceInjector())
                 .build();
 
-        specificationLoader = metaModelContext.getSpecificationLoader();
-
-        specificationLoader.createMetaModel();
-
-        specification = loadSpecification(specificationLoader);
-
+        specification = loadSpecification(metaModelContext.getSpecificationLoader());
     }
 
     @AfterEach
     public void tearDown() throws Exception {
-        specificationLoader.disposeMetaModel();
+        metaModelContext.getSpecificationLoader().disposeMetaModel();
     }
 
     protected abstract ObjectSpecification loadSpecification(SpecificationLoader reflector);