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

danhaywood pushed a commit to branch jpa-SNAPSHOT
in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git

commit ee2559760a9a6a5aca7dd4bd0aba91377ad7305d
Author: Dan Haywood <[email protected]>
AuthorDate: Sun Jul 31 13:47:47 2022 +0100

    ISIS-2965: fixes integ test for M8
    
    ... changes handling (more precise) for failing transactions
---
 README.adoc                                        |  2 +-
 .../integtests/tests/SimpleObjects_IntegTest.java  | 42 ++++++++++++++++------
 .../domainapp/modules/simple/SimpleModule.java     |  5 +--
 .../main/java/domainapp/webapp/AppManifest.java    |  5 +++
 .../src/main/resources/static/css/application.css  |  3 ++
 5 files changed, 44 insertions(+), 13 deletions(-)

diff --git a/README.adoc b/README.adoc
index d578146..dd032fe 100644
--- a/README.adoc
+++ b/README.adoc
@@ -18,7 +18,7 @@ toc::[]
 
 * install prereqs:
 
-** Java 8 LTS (eg link:https://adoptopenjdk.net/[Adopt OpenJDK] distribution)
+** Java 11 LTS (eg link:https://adoptopenjdk.net/[Adopt OpenJDK] distribution)
 ** Maven 3.6 or later (http://maven.apache.org/download.cgi[download])
 * download and unzip
 +
diff --git 
a/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
 
b/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
index fdd26c2..bad136d 100644
--- 
a/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
+++ 
b/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
@@ -1,20 +1,32 @@
 package domainapp.modules.simple.integtests.tests;
 
 import java.util.List;
+import java.util.Optional;
 
 import javax.inject.Inject;
+import javax.persistence.RollbackException;
 
+import org.assertj.core.api.Assertions;
 import org.hamcrest.MatcherAssert;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.springframework.dao.DuplicateKeyException;
+import org.springframework.transaction.TransactionDefinition;
+import org.springframework.transaction.TransactionSystemException;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import static org.assertj.core.api.Assertions.*;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
+import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.isis.commons.functional.Try;
 import 
org.apache.isis.testing.unittestsupport.applib.matchers.ThrowableMatchers;
 
+import lombok.val;
+
 import domainapp.modules.simple.dom.so.SimpleObject;
 import domainapp.modules.simple.dom.so.SimpleObjects;
 import domainapp.modules.simple.fixture.SimpleObject_persona;
@@ -72,24 +84,34 @@ public class SimpleObjects_IntegTest extends 
SimpleModuleIntegTestAbstract {
 
             // given
             fixtureScripts.runPersona(SimpleObject_persona.FIZZ);
-            transactionService.flushTransaction();
+            interactionService.nextInteraction();
 
-            // expect
-            Throwable cause = assertThrows(Throwable.class, ()->{
+            // we execute this in its own transaction so that it can be 
discarded
+            Try<Void> attempt = 
transactionService.runTransactional(Propagation.REQUIRES_NEW, () -> {
 
-                // when
-                wrap(menu).create("Fizz");
-                transactionService.flushTransaction();
+                // expect
+                Throwable cause = assertThrows(Throwable.class, () -> {
+                    // when
+                    wrap(menu).create("Fizz");
+                    transactionService.flushTransaction();
+                });
 
+                // also expect
+                MatcherAssert.assertThat(cause,
+                        
ThrowableMatchers.causedBy(DuplicateKeyException.class));
             });
 
-            // also expect
-            MatcherAssert.assertThat(cause,
-                    ThrowableMatchers.causedBy(DuplicateKeyException.class));
+
+            // then
+            assertThat(attempt.isFailure()).isTrue();
+            val failureIfAny = attempt.getFailure();
+            assertThat(failureIfAny).isPresent();
+            
assertThat(failureIfAny.get()).isInstanceOf(TransactionSystemException.class);
+            
assertThat(failureIfAny.get().getCause()).isInstanceOf(RollbackException.class);
 
         }
 
     }
 
-
+    @Inject protected InteractionService interactionService;
 }
diff --git 
a/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java 
b/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
index e547259..4585b2c 100644
--- a/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
+++ b/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
@@ -7,6 +7,7 @@ import 
org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixtures;
+import 
org.apache.isis.testing.fixtures.applib.teardown.jpa.TeardownFixtureJpaAbstract;
 
 import domainapp.modules.simple.dom.so.SimpleObject;
 
@@ -18,10 +19,10 @@ public class SimpleModule implements ModuleWithFixtures {
 
     @Override
     public FixtureScript getTeardownFixture() {
-        return new FixtureScript() {
+        return new TeardownFixtureJpaAbstract() {
             @Override
             protected void execute(ExecutionContext executionContext) {
-                repositoryService.removeAll(SimpleObject.class);
+                deleteFrom(SimpleObject.class);
             }
         };
     }
diff --git a/webapp/src/main/java/domainapp/webapp/AppManifest.java 
b/webapp/src/main/java/domainapp/webapp/AppManifest.java
index 9dca47c..cfbfcda 100644
--- a/webapp/src/main/java/domainapp/webapp/AppManifest.java
+++ b/webapp/src/main/java/domainapp/webapp/AppManifest.java
@@ -5,6 +5,8 @@ import org.springframework.context.annotation.Import;
 import org.springframework.context.annotation.PropertySource;
 import org.springframework.context.annotation.PropertySources;
 
+import org.apache.isis.applib.IsisModuleApplibChangeAndExecutionLoggers;
+import org.apache.isis.applib.IsisModuleApplibMixins;
 import org.apache.isis.core.config.presets.IsisPresets;
 import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
 import org.apache.isis.extensions.flyway.impl.IsisModuleExtFlywayImpl;
@@ -22,6 +24,9 @@ import domainapp.webapp.quartz.QuartzModule;
 
 @Configuration
 @Import({
+        IsisModuleApplibMixins.class,
+        IsisModuleApplibChangeAndExecutionLoggers.class,
+
         IsisModuleCoreRuntimeServices.class,
         IsisModuleSecurityShiro.class,
         IsisModulePersistenceJpaEclipselink.class,
diff --git a/webapp/src/main/resources/static/css/application.css 
b/webapp/src/main/resources/static/css/application.css
index e69de29..888fac0 100644
--- a/webapp/src/main/resources/static/css/application.css
+++ b/webapp/src/main/resources/static/css/application.css
@@ -0,0 +1,3 @@
+body > nav > div > a > img {
+    height: 32px;
+}

Reply via email to