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 2021/07/26 07:52:42 UTC
[isis] branch master updated: ISIS-2573: publishing tests: fail on
missed verification stage
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 37be632 ISIS-2573: publishing tests: fail on missed verification stage
37be632 is described below
commit 37be632a8a4bb8e1203935dc821e8cd11ce7172b
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jul 26 09:52:33 2021 +0200
ISIS-2573: publishing tests: fail on missed verification stage
---
.../publishing/CommandPublishingTestAbstract.java | 8 +-
.../publishing/EntityPublishingTestAbstract.java | 10 ++-
.../ExecutionPublishingTestAbstract.java | 8 +-
.../publishing/PropertyPublishingTestAbstract.java | 11 ++-
.../publishing/PublishingTestFactoryAbstract.java | 95 +++++++++++++---------
5 files changed, 82 insertions(+), 50 deletions(-)
diff --git a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/CommandPublishingTestAbstract.java b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/CommandPublishingTestAbstract.java
index a355f78..47d3308 100644
--- a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/CommandPublishingTestAbstract.java
+++ b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/CommandPublishingTestAbstract.java
@@ -23,6 +23,8 @@ import java.util.UUID;
import javax.inject.Inject;
+import static org.junit.jupiter.api.Assertions.fail;
+
import org.apache.isis.applib.services.command.Command;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.cmd.v2.CommandDto;
@@ -49,7 +51,10 @@ implements HasPersistenceStandard {
case FAILURE_CASE:
assertHasCommandEntries(Can.empty());
break;
+ case PRE_COMMIT:
case POST_INTERACTION:
+ break;
+ case POST_COMMIT:
// Interaction interaction = null;
@@ -73,7 +78,8 @@ implements HasPersistenceStandard {
assertHasCommandEntries(Can.of(command));
break;
default:
- // ignore ... no checks
+ // if hitting this, the caller is requesting a verification stage, we are providing no case for
+ fail(String.format("internal error, stage not verified: %s", verificationStage));
}
}
diff --git a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/EntityPublishingTestAbstract.java b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/EntityPublishingTestAbstract.java
index a4fa00c..346296e 100644
--- a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/EntityPublishingTestAbstract.java
+++ b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/EntityPublishingTestAbstract.java
@@ -21,6 +21,7 @@ package org.apache.isis.testdomain.publishing;
import javax.inject.Inject;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
import org.apache.isis.testdomain.publishing.PublishingTestFactoryAbstract.VerificationStage;
import org.apache.isis.testdomain.util.kv.KVStoreForTesting;
@@ -43,8 +44,6 @@ implements HasPersistenceStandard {
protected void verify(final VerificationStage verificationStage) {
switch(verificationStage) {
- case PRE_COMMIT:
- break;
case FAILURE_CASE:
assertEquals(0, getCreated(kvStore));
assertEquals(0, getDeleted(kvStore));
@@ -52,7 +51,9 @@ implements HasPersistenceStandard {
assertEquals(0, getUpdated(kvStore));
assertEquals(0, getModified(kvStore));
break;
- case POST_COMMIT_WHEN_PROGRAMMATIC:
+ case PRE_COMMIT:
+ case POST_INTERACTION:
+ break;
case POST_COMMIT:
assertEquals(0, getCreated(kvStore));
assertEquals(0, getDeleted(kvStore));
@@ -61,7 +62,8 @@ implements HasPersistenceStandard {
//assertEquals(1, getModified(kvStore)); // not reproducible
break;
default:
- // ignore ... no checks
+ // if hitting this, the caller is requesting a verification stage, we are providing no case for
+ fail(String.format("internal error, stage not verified: %s", verificationStage));
}
}
diff --git a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/ExecutionPublishingTestAbstract.java b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/ExecutionPublishingTestAbstract.java
index 21b4968..ceed131 100644
--- a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/ExecutionPublishingTestAbstract.java
+++ b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/ExecutionPublishingTestAbstract.java
@@ -22,6 +22,8 @@ import java.util.Objects;
import javax.inject.Inject;
+import static org.junit.jupiter.api.Assertions.fail;
+
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.services.iactn.ActionInvocation;
@@ -54,6 +56,9 @@ implements HasPersistenceStandard {
case FAILURE_CASE:
assertHasExecutionEntries(Can.empty());
break;
+ case PRE_COMMIT:
+ case POST_INTERACTION:
+ break;
case POST_COMMIT:
val bookClass = bookClass();
Interaction interaction = null;
@@ -69,7 +74,8 @@ implements HasPersistenceStandard {
));
break;
default:
- // ignore ... no checks
+ // if hitting this, the caller is requesting a verification stage, we are providing no case for
+ fail(String.format("internal error, stage not verified: %s", verificationStage));
}
}
diff --git a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/PropertyPublishingTestAbstract.java b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/PropertyPublishingTestAbstract.java
index 3a9ddaf..65d1189 100644
--- a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/PropertyPublishingTestAbstract.java
+++ b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/publishing/PropertyPublishingTestAbstract.java
@@ -20,6 +20,8 @@ package org.apache.isis.testdomain.publishing;
import javax.inject.Inject;
+import static org.junit.jupiter.api.Assertions.fail;
+
import org.apache.isis.commons.collections.Can;
import org.apache.isis.testdomain.publishing.PublishingTestFactoryAbstract.VerificationStage;
import org.apache.isis.testdomain.publishing.subscriber.EntityPropertyChangeSubscriberForTesting;
@@ -39,18 +41,19 @@ implements HasPersistenceStandard {
protected void verify(final VerificationStage verificationStage) {
switch(verificationStage) {
- case PRE_COMMIT:
- break;
case FAILURE_CASE:
assertHasPropertyChangeEntries(Can.empty());
break;
- case POST_COMMIT_WHEN_PROGRAMMATIC:
+ case PRE_COMMIT:
+ case POST_INTERACTION:
+ break;
case POST_COMMIT:
assertHasPropertyChangeEntries(Can.of(
formatPersistenceStandardSpecificCapitalize("%s Product/name: 'Sample Book' -> 'Book #2'")));
break;
default:
- // ignore ... no checks
+ // if hitting this, the caller is requesting a verification stage, we are providing no case for
+ fail(String.format("internal error, stage not verified: %s", verificationStage));
}
}
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/publishing/PublishingTestFactoryAbstract.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/publishing/PublishingTestFactoryAbstract.java
index 88545bd..b8e9e00 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/publishing/PublishingTestFactoryAbstract.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/publishing/PublishingTestFactoryAbstract.java
@@ -57,10 +57,8 @@ public abstract class PublishingTestFactoryAbstract {
public static enum VerificationStage {
PRE_COMMIT,
POST_COMMIT,
- POST_COMMIT_WHEN_PROGRAMMATIC,
FAILURE_CASE,
POST_INTERACTION,
- POST_INTERACTION_WHEN_PROGRAMMATIC,
}
@Value(staticConstructor = "of")
@@ -80,6 +78,7 @@ public abstract class PublishingTestFactoryAbstract {
}
}
+ private final @NonNull String displayName;
private final @NonNull Runnable given;
private final @NonNull Consumer<VerificationStage> verifier;
private final @NonNull VerificationStage transactionCompletionStage;
@@ -200,24 +199,29 @@ public abstract class PublishingTestFactoryAbstract {
var dynamicTests = Can.<DynamicTest>of(
- publishingTest("Interaction Api",
- PublishingTestContext.of(given, verifier, VerificationStage.POST_COMMIT),
+ publishingTest(
+ PublishingTestContext.of("Interaction Api",
+ given, verifier, VerificationStage.POST_COMMIT),
VerificationStage.POST_INTERACTION,
this::interactionApiExecution),
- publishingTest("Wrapper Sync w/o Rules",
- PublishingTestContext.of(given, verifier, VerificationStage.POST_COMMIT),
+ publishingTest(
+ PublishingTestContext.of("Wrapper Sync w/o Rules",
+ given, verifier, VerificationStage.POST_COMMIT),
VerificationStage.POST_INTERACTION,
this::wrapperSyncExecutionNoRules),
-// publishingTest("Wrapper Async w/o Rules",
-// PublishingTestContext.of(given, verifier, VerificationStage.POST_COMMIT),
+// publishingTest(
+// PublishingTestContext.of("Wrapper Async w/o Rules",
+// given, verifier, VerificationStage.POST_COMMIT),
// VerificationStage.POST_INTERACTION,
// this::wrapperAsyncExecutionNoRules),
- publishingTest("Wrapper Sync w/ Rules (expected to fail w/ DisabledException)",
- PublishingTestContext.of(given, verifier, VerificationStage.FAILURE_CASE),
+ publishingTest(
+ PublishingTestContext.of("Wrapper Sync w/ Rules (expected to fail w/ DisabledException)",
+ given, verifier, VerificationStage.FAILURE_CASE),
VerificationStage.POST_INTERACTION,
this::wrapperSyncExecutionWithFailure),
- publishingTest("Wrapper Async w/ Rules (expected to fail w/ DisabledException)",
- PublishingTestContext.of(given, verifier, VerificationStage.FAILURE_CASE),
+ publishingTest(
+ PublishingTestContext.of("Wrapper Async w/ Rules (expected to fail w/ DisabledException)",
+ given, verifier, VerificationStage.FAILURE_CASE),
VerificationStage.POST_INTERACTION,
this::wrapperAsyncExecutionWithFailure)
);
@@ -225,9 +229,10 @@ public abstract class PublishingTestFactoryAbstract {
if(includeProgrammatic) {
// prepend
dynamicTests = dynamicTests.add(0,
- publishingTest("Programmatic",
- PublishingTestContext.of(given, verifier, VerificationStage.POST_COMMIT_WHEN_PROGRAMMATIC),
- VerificationStage.POST_INTERACTION_WHEN_PROGRAMMATIC,
+ publishingTest(
+ PublishingTestContext.of("Programmatic",
+ given, verifier, VerificationStage.POST_COMMIT),
+ VerificationStage.POST_INTERACTION,
this::programmaticExecution));
}
@@ -269,46 +274,56 @@ public abstract class PublishingTestFactoryAbstract {
// -- HELPER
private final DynamicTest publishingTest(
- final String displayName,
final PublishingTestContext testContext,
final VerificationStage onSuccess,
final PublishingTestRunner testRunner) {
- return dynamicTest(displayName, ()->{
+ return dynamicTest(testContext.getDisplayName(), ()->{
+
+ val traceLog = testContext.getTraceLog();
+ val displayName = testContext.getDisplayName();
xrayAddTest(displayName);
- assertFalse(getInteractionService().isInInteraction());
- assert_no_initial_tx_context();
+ traceLog.log("0. enter test %s", displayName);
+
+ try {
- getInteractionService().runAnonymous(()->{
- val currentInteraction = getInteractionService().currentInteraction();
- xrayEnterInteraction(currentInteraction);
- setupEntity(testContext);
- xrayExitInteraction();
- });
+ assertFalse(getInteractionService().isInInteraction());
+ assert_no_initial_tx_context();
- assertFalse(getInteractionService().isInInteraction());
- assert_no_initial_tx_context();
+ getInteractionService().runAnonymous(()->{
+ val currentInteraction = getInteractionService().currentInteraction();
+ xrayEnterInteraction(currentInteraction);
+ setupEntity(testContext);
+ xrayExitInteraction();
+ });
- final boolean isExpectedToRunSuccesful = getInteractionService().callAnonymous(()->{
- val currentInteraction = getInteractionService().currentInteraction();
- xrayEnterInteraction(currentInteraction);
- val result = testRunner.run(testContext);
- xrayExitInteraction();
- return result;
- });
+ assertFalse(getInteractionService().isInInteraction());
+ assert_no_initial_tx_context();
- getInteractionService().closeInteractionLayers();
+ final boolean isExpectedToRunSuccesful = getInteractionService().callAnonymous(()->{
+ val currentInteraction = getInteractionService().currentInteraction();
+ xrayEnterInteraction(currentInteraction);
+ val result = testRunner.run(testContext);
+ xrayExitInteraction();
+ return result;
+ });
- assertFalse(getInteractionService().isInInteraction());
- assert_no_initial_tx_context();
+ getInteractionService().closeInteractionLayers();
- failWhenContextHasErrors(testContext);
+ assertFalse(getInteractionService().isInInteraction());
+ assert_no_initial_tx_context();
- if(isExpectedToRunSuccesful) {
- testContext.runVerify(onSuccess);
failWhenContextHasErrors(testContext);
+
+ if(isExpectedToRunSuccesful) {
+ testContext.runVerify(onSuccess);
+ failWhenContextHasErrors(testContext);
+ }
+
+ } finally {
+ traceLog.log("5. exit test %s", displayName);
}
});