You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2019/08/20 13:25:59 UTC
[isis] 02/05: ISIS-2100: adds runPersonaScripts for FixtureScripts
and ...
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch v2-antora
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 298001c8df8af6ecba2162c2d2ef0df205840ab9
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jul 22 22:22:01 2019 +0100
ISIS-2100: adds runPersonaScripts for FixtureScripts and ...
... and IsisIntegrationTestAbstractWithFixtures
---
.../bdd/specs/SimpleObjectsStepDef.java | 4 +-
.../JdoBootstrappingTest_usingFixtures.java | 106 +++++++++++++++++++++
.../IsisIntegrationTestAbstractWithFixtures.java | 9 +-
.../fixtures/fixturescripts/FixtureScripts.java | 26 +++--
4 files changed, 129 insertions(+), 16 deletions(-)
diff --git a/examples/apps/simpleapp/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectsStepDef.java b/examples/apps/simpleapp/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectsStepDef.java
index 1750537..65074d5 100644
--- a/examples/apps/simpleapp/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectsStepDef.java
+++ b/examples/apps/simpleapp/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectsStepDef.java
@@ -66,9 +66,7 @@ public class SimpleObjectsStepDef extends SpringIntegrationTest {
txTemplate.getTransactionManager().rollback(status);
};
- fixtureScripts.runBuilderScript(SimpleObject_persona.BANG.builder());
- fixtureScripts.runBuilderScript(SimpleObject_persona.BAR.builder());
- fixtureScripts.runBuilderScript(SimpleObject_persona.BAZ.builder());
+ fixtureScripts.runPersonas(SimpleObject_persona.BANG, SimpleObject_persona.BAR, SimpleObject_persona.BAZ);
status.flush();
}
diff --git a/examples/smoketest/src/test/java/org/apache/isis/testdomain/bootstrapping/JdoBootstrappingTest_usingFixtures.java b/examples/smoketest/src/test/java/org/apache/isis/testdomain/bootstrapping/JdoBootstrappingTest_usingFixtures.java
new file mode 100644
index 0000000..43925a1
--- /dev/null
+++ b/examples/smoketest/src/test/java/org/apache/isis/testdomain/bootstrapping/JdoBootstrappingTest_usingFixtures.java
@@ -0,0 +1,106 @@
+/*
+ * 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.isis.testdomain.bootstrapping;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
+import org.apache.isis.runtime.system.context.IsisContext;
+import org.apache.isis.testdomain.jdo.Book;
+import org.apache.isis.testdomain.jdo.Inventory;
+import org.apache.isis.testdomain.jdo.JdoTestDomainModule;
+import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
+import org.apache.isis.testdomain.jdo.Product;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.Rollback;
+import org.springframework.transaction.annotation.Transactional;
+
+import lombok.val;
+
+@SpringBootTest(
+ classes = {
+ JdoTestDomainModule.class,
+ },
+ properties = {
+ "logging.config=log4j2-debug-persistence.xml",
+ "logging.level.org.apache.isis.jdo.persistence.PersistenceSession5=DEBUG"
+})
+@Transactional
+class JdoBootstrappingTest_usingFixtures {
+
+ @Inject private FixtureScripts fixtureScripts;
+ @Inject private RepositoryService repository;
+
+ @BeforeEach
+ void setUp() {
+
+ val txTemplate = IsisContext.createTransactionTemplate();
+ val txMan = txTemplate.getTransactionManager();
+
+
+ val status = txMan.getTransaction(null);
+
+ // cleanup
+ //fixtureScripts.runPersonaScript(JdoTestDomainPersona.PurgeAll.builder());
+
+ // given
+ //fixtureScripts.runPersonaScript(JdoTestDomainPersona.InventoryWith1Book.builder());
+
+ Set<Product> products = new HashSet<>();
+
+ products.add(Book.of(
+ "Sample Book", "A sample book for testing.", 99.,
+ "Sample Author", "Sample ISBN", "Sample Publisher"));
+
+ val inventory = Inventory.of("Sample Inventory", products);
+ repository.persist(inventory);
+
+ txMan.commit(status);
+
+ System.out.println("!!! AFTER SETUP");
+
+ }
+
+ @Test @Rollback(false)
+ void sampleInventoryShouldBeSetUp() {
+
+ val inventories = repository.allInstances(Inventory.class);
+ assertEquals(1, inventories.size());
+
+ val inventory = inventories.get(0);
+ assertNotNull(inventory);
+ assertNotNull(inventory.getProducts());
+ assertEquals(1, inventory.getProducts().size());
+
+ val product = inventory.getProducts().iterator().next();
+ assertEquals("Sample Book", product.getName());
+
+ }
+
+}
diff --git a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/IsisIntegrationTestAbstractWithFixtures.java b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/IsisIntegrationTestAbstractWithFixtures.java
index 27becb3..4103d1e 100644
--- a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/IsisIntegrationTestAbstractWithFixtures.java
+++ b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/IsisIntegrationTestAbstractWithFixtures.java
@@ -42,9 +42,12 @@ public abstract class IsisIntegrationTestAbstractWithFixtures extends IsisIntegr
return this.fixtureScripts.runBuilderScript(fixtureScript);
}
- protected <T> T runBuilderScript(final PersonaWithBuilderScript<BuilderScriptAbstract<T>> persona) {
- final BuilderScriptAbstract<T> builderScript = persona.builder();
- return runBuilderScript(builderScript);
+ protected <T> void runPersonaScripts(final PersonaWithBuilderScript<? extends BuilderScriptAbstract<T>>... personaScripts) {
+ this.fixtureScripts.runPersonaScripts(personaScripts);
+ }
+
+ protected <T> T runPersonaScript(final PersonaWithBuilderScript<? extends BuilderScriptAbstract<T>> personaScript) {
+ return this.fixtureScripts.runPersonaScript(personaScript);
}
/**
diff --git a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
index 5eb394b..677c376 100644
--- a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
+++ b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
@@ -351,20 +351,26 @@ public abstract class FixtureScripts extends AbstractService {
@Programmatic
public void run(final FixtureScript... fixtureScriptList) {
+
+ val singleScript = toSingleScript(fixtureScriptList);
+ val parameters = (String)null;
+
+ transactionService.executeWithinTransaction(()->{
+ runFixtureScript(singleScript, parameters);
+ });
+ }
- val singleScript = toSingleScript(fixtureScriptList);
- val parameters = (String)null;
-
- transactionService.executeWithinTransaction(()->{
- runFixtureScript(singleScript, parameters);
- });
-
+ @Programmatic
+ public <T> void runPersonas(final PersonaWithBuilderScript<? extends BuilderScriptAbstract<T>>... personaScripts) {
+ for (PersonaWithBuilderScript<? extends BuilderScriptAbstract<T>> personaWithBuilderScript : personaScripts) {
+ runPersona(personaWithBuilderScript);
+ }
}
@Programmatic
- public <T> T runPersona(final PersonaWithBuilderScript<BuilderScriptAbstract<T>> persona) {
- val builderScript = persona.builder();
- return runBuilderScript(builderScript);
+ public <T> T runPersona(final PersonaWithBuilderScript<? extends BuilderScriptAbstract<T>> persona) {
+ final BuilderScriptAbstract<T> fixtureScript = persona.builder();
+ return runBuilderScript(fixtureScript);
}
/**