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 2019/06/06 11:48:00 UTC

[isis] branch 2112_SpringBoot updated: ISIS-2112: smoke-testing PublisherService

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch 2112_SpringBoot
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/2112_SpringBoot by this push:
     new 4153593  ISIS-2112: smoke-testing PublisherService
4153593 is described below

commit 41535935413772c66b82a3175ff06a51691ac50e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jun 6 13:47:54 2019 +0200

    ISIS-2112: smoke-testing PublisherService
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-2112
---
 .../services/publish/PublishedObjectsDefault.java  |  3 +
 .../isis/testdomain/tests/AuditerServiceTest.java  |  2 +
 .../testdomain/tests/PublisherServiceTest.java     | 82 ++++++++++++++--------
 3 files changed, 57 insertions(+), 30 deletions(-)

diff --git a/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/publish/PublishedObjectsDefault.java b/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/publish/PublishedObjectsDefault.java
index 0fc4883..36f7d3b 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/publish/PublishedObjectsDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/publish/PublishedObjectsDefault.java
@@ -41,9 +41,12 @@ import org.apache.isis.schema.common.v1.OidDto;
 import org.apache.isis.schema.common.v1.OidsDto;
 import org.apache.isis.schema.utils.jaxbadapters.JavaSqlTimestampXmlGregorianCalendarAdapter;
 
+import lombok.ToString;
+
 /**
  * Captures which objects were created, updated or deleted in the course of a transaction.
  */
+@ToString
 public class PublishedObjectsDefault implements PublishedObjects, RepresentsInteractionMemberExecution {
 
     // -- constructor, fields
diff --git a/example/misc/smoketest/src/test/java/org/apache/isis/testdomain/tests/AuditerServiceTest.java b/example/misc/smoketest/src/test/java/org/apache/isis/testdomain/tests/AuditerServiceTest.java
index 943dd05..9f60da9 100644
--- a/example/misc/smoketest/src/test/java/org/apache/isis/testdomain/tests/AuditerServiceTest.java
+++ b/example/misc/smoketest/src/test/java/org/apache/isis/testdomain/tests/AuditerServiceTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.testdomain.tests;
 
+import static org.junit.Assert.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.sql.Timestamp;
@@ -89,6 +90,7 @@ class AuditerServiceTest {
 				.getFirst()
 				.orElse(null);
 
+		assertNotNull(auditerServiceAny);
 		assertEquals(AuditerServiceStub.class, auditerServiceAny.getClass());
 
 		// given
diff --git a/example/misc/smoketest/src/test/java/org/apache/isis/testdomain/tests/PublisherServiceTest.java b/example/misc/smoketest/src/test/java/org/apache/isis/testdomain/tests/PublisherServiceTest.java
index d78e535..ff891bf 100644
--- a/example/misc/smoketest/src/test/java/org/apache/isis/testdomain/tests/PublisherServiceTest.java
+++ b/example/misc/smoketest/src/test/java/org/apache/isis/testdomain/tests/PublisherServiceTest.java
@@ -18,36 +18,56 @@
  */
 package org.apache.isis.testdomain.tests;
 
-import java.util.Map;
-import java.util.stream.Collectors;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import javax.inject.Inject;
 
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.fixturescripts.FixtureScripts;
+import org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault;
 import org.apache.isis.applib.services.iactn.Interaction.Execution;
 import org.apache.isis.applib.services.publish.PublishedObjects;
 import org.apache.isis.applib.services.publish.PublisherService;
 import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.incubator.IsisTransactionManagerForJdo;
+import org.apache.isis.runtime.spring.IsisBoot;
 import org.apache.isis.testdomain.jdo.Book;
+import org.apache.isis.testdomain.jdo.JdoTestDomainModule;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
+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;
 
 /**
  * Depends on {@link JdoBootstrappingTest_usingFixtures} to succeed.
  */
+@SpringBootTest(
+		classes = { 
+				IsisBoot.class, 
+				FixtureScriptsDefault.class, 
+				JdoTestDomainModule.class, 
+				IsisTransactionManagerForJdo.class,
+				PublisherServiceTest.PublisherServiceStub.class
+		}, 
+		properties = {
+				"logging.config=log4j2-test.xml",
+				// "isis.reflector.introspector.parallelize=false",
+				// "logging.level.org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract=TRACE"
+	})
+@Transactional
 class PublisherServiceTest {
 
+	@Inject private RepositoryService repository;
+	@Inject private TransactionService transactionService;
 	@Inject private FixtureScripts fixtureScripts;
 
 	@BeforeEach
@@ -60,37 +80,35 @@ class PublisherServiceTest {
 		fixtureScripts.runBuilderScript(JdoTestDomainPersona.InventoryWith1Book.builder());
 	}
 
-	@Test
-	@Disabled("service lookup fails")
+	@Test @Rollback(false)
 	void publisherServiceShouldBeAwareOfInventoryChanges() {
 
-		val serviceRegistry = IsisContext.getServiceRegistry();
-
-		Map<Class<? extends PublisherService>, PublisherService> map = serviceRegistry.select(PublisherService.class)
-				.stream().collect(Collectors.toMap(ps -> ps.getClass(), ps -> ps));
-
-		// TODO any instance type lookup (should be a test on its own)
-		assertTrue(map.containsKey(PublisherServiceStub.class));
+		val publisherServiceAny = IsisContext.getServiceRegistry()
+				.select(PublisherServiceStub.class)
+				.getFirst()
+				.orElse(null);
 
-		// priority based service lookup (could be a test on its own)
-		val publisherService = (PublisherServiceStub) map.get(PublisherServiceStub.class);
+		assertNotNull(publisherServiceAny);
+		assertEquals(PublisherServiceStub.class, publisherServiceAny.getClass());
 
 		// given
-//        val publisherService = (PublisherServiceStub) publisherServiceAny; 
-		val repository = IsisContext.getServiceRegistry().lookupServiceElseFail(RepositoryService.class);
-		val txMan = IsisContext.getPersistenceSession().get().getTransactionManager();
+        val publisherService = (PublisherServiceStub) publisherServiceAny; 
 		val book = repository.allInstances(Book.class).listIterator().next();
 
 		// when
 		publisherService.clearHistory();
 		book.setName("Book #2");
 		repository.persist(book);
-		txMan.endTransaction();
+		
+		// then - before the commit
+		assertEquals("", publisherService.getHistory());
+		
+		transactionService.nextTransaction();
+		
+		// then - after the commit
+		assertEquals("publishedObjects=created=0,deleted=0,loaded=1,updated=1,modified=1,",
+				publisherService.getHistory());
 
-		// then TODO
-//        assertEquals(
-//                "...", 
-//                publisherService.getHistory());
 	}
 
 	// -- HELPER
@@ -112,13 +130,17 @@ class PublisherServiceTest {
 		@Override
 		public void publish(Execution<?, ?> execution) {
 			history.append("execution=").append(execution).append(",");
-			System.out.println("h1: " + history);
 		}
 
 		@Override
 		public void publish(PublishedObjects publishedObjects) {
-			history.append("publishedObjects=").append(publishedObjects).append(",");
-			System.out.println("h2: " + history);
+			history.append("publishedObjects=")
+			.append("created=").append(publishedObjects.getNumberCreated()).append(",")
+			.append("deleted=").append(publishedObjects.getNumberDeleted()).append(",")
+			.append("loaded=").append(publishedObjects.getNumberLoaded()).append(",")
+			.append("updated=").append(publishedObjects.getNumberUpdated()).append(",")
+			.append("modified=").append(publishedObjects.getNumberPropertiesModified()).append(",")
+			;
 		}
 
 	}