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(",")
+ ;
}
}