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);
     }
 
     /**