Author: sclassen
Date: Mon Jun 2 15:01:16 2014
New Revision: 1599234
URL: http://svn.apache.org/r1599234
Log:
onami-persist: code cleanup of NestedTransactionTest
Modified:
onami/trunk/persist/src/test/java/org/apache/onami/persist/test/transaction/NestedTransactionTest.java
Modified:
onami/trunk/persist/src/test/java/org/apache/onami/persist/test/transaction/NestedTransactionTest.java
URL:
http://svn.apache.org/viewvc/onami/trunk/persist/src/test/java/org/apache/onami/persist/test/transaction/NestedTransactionTest.java?rev=1599234&r1=1599233&r2=1599234&view=diff
==============================================================================
---
onami/trunk/persist/src/test/java/org/apache/onami/persist/test/transaction/NestedTransactionTest.java
(original)
+++
onami/trunk/persist/src/test/java/org/apache/onami/persist/test/transaction/NestedTransactionTest.java
Mon Jun 2 15:01:16 2014
@@ -39,12 +39,20 @@ import org.apache.onami.persist.test.tra
import
org.apache.onami.persist.test.transaction.testframework.tasks.TaskRollingBackOnTestExceptionThrowingTestException;
import org.junit.Test;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
/**
* Tests running nested transactions.
- * The test make us of the testframework.
- * Since the test is running a loop only the injector is created directly in
the test to ensure
+ * The test makes use of the test framework.
+ * Since the test is running a loop the injector is created directly in the
test to ensure
* that for every {@link TestVector} a new injector instance is used.
*/
public class NestedTransactionTest
@@ -54,294 +62,189 @@ public class NestedTransactionTest
* All possible combination of {@link
org.apache.onami.persist.test.transaction.testframework.TransactionalTask}s
* and if they should have been rolled back.
*/
- private static final TestVector[] TEST_VECTORS =
- { new TestVector( TaskRollingBackOnAnyThrowingNone.class,
TaskRollingBackOnAnyThrowingNone.class, false ),
- new TestVector( TaskRollingBackOnAnyThrowingNone.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnAnyThrowingNone.class,
TaskRollingBackOnAnyThrowingTestException.class,
- true ),
- new TestVector( TaskRollingBackOnAnyThrowingNone.class,
TaskRollingBackOnNoneThrowingNone.class, false ),
- new TestVector( TaskRollingBackOnAnyThrowingNone.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnAnyThrowingNone.class,
TaskRollingBackOnNoneThrowingTestException.class,
- true ), new TestVector(
TaskRollingBackOnAnyThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, false ),
- new TestVector( TaskRollingBackOnAnyThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnAnyThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, true ),
- new TestVector( TaskRollingBackOnAnyThrowingNone.class,
TaskRollingBackOnTestExceptionThrowingNone.class,
- false ), new TestVector(
TaskRollingBackOnAnyThrowingNone.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
- true ), new TestVector(
TaskRollingBackOnAnyThrowingNone.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class,
-
true ),
-
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
- TaskRollingBackOnAnyThrowingNone.class, true ),
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
- TaskRollingBackOnAnyThrowingTestException.class,
true ),
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
- TaskRollingBackOnNoneThrowingNone.class, true ),
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
- TaskRollingBackOnNoneThrowingTestException.class,
true ),
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, true ),
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, true ),
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
- TaskRollingBackOnTestExceptionThrowingNone.class,
true ),
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnAnyThrowingRuntimeTestException.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class, true ),
-
- new TestVector( TaskRollingBackOnAnyThrowingTestException.class,
TaskRollingBackOnAnyThrowingNone.class,
- true ), new TestVector(
TaskRollingBackOnAnyThrowingTestException.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnAnyThrowingTestException.class,
- TaskRollingBackOnAnyThrowingTestException.class,
true ),
- new TestVector( TaskRollingBackOnAnyThrowingTestException.class,
TaskRollingBackOnNoneThrowingNone.class,
- true ), new TestVector(
TaskRollingBackOnAnyThrowingTestException.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnAnyThrowingTestException.class,
- TaskRollingBackOnNoneThrowingTestException.class,
true ),
- new TestVector( TaskRollingBackOnAnyThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, true ),
- new TestVector( TaskRollingBackOnAnyThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnAnyThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, true ),
- new TestVector( TaskRollingBackOnAnyThrowingTestException.class,
- TaskRollingBackOnTestExceptionThrowingNone.class,
true ),
- new TestVector( TaskRollingBackOnAnyThrowingTestException.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnAnyThrowingTestException.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class, true ),
-
- new TestVector( TaskRollingBackOnNoneThrowingNone.class,
TaskRollingBackOnAnyThrowingNone.class, false ),
- new TestVector( TaskRollingBackOnNoneThrowingNone.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnNoneThrowingNone.class,
TaskRollingBackOnAnyThrowingTestException.class,
- true ),
- new TestVector( TaskRollingBackOnNoneThrowingNone.class,
TaskRollingBackOnNoneThrowingNone.class, false ),
- new TestVector( TaskRollingBackOnNoneThrowingNone.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, false ),
- new TestVector( TaskRollingBackOnNoneThrowingNone.class,
TaskRollingBackOnNoneThrowingTestException.class,
- false ), new TestVector(
TaskRollingBackOnNoneThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, false ),
- new TestVector( TaskRollingBackOnNoneThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnNoneThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, false ),
- new TestVector( TaskRollingBackOnNoneThrowingNone.class,
TaskRollingBackOnTestExceptionThrowingNone.class,
- false ), new TestVector(
TaskRollingBackOnNoneThrowingNone.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
- false ), new TestVector(
TaskRollingBackOnNoneThrowingNone.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class,
-
true ),
-
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
- TaskRollingBackOnAnyThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
- TaskRollingBackOnAnyThrowingTestException.class,
true ),
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
- TaskRollingBackOnNoneThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, false ),
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
- TaskRollingBackOnNoneThrowingTestException.class,
false ),
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, false ),
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
- TaskRollingBackOnTestExceptionThrowingNone.class,
false ),
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class, false ),
- new TestVector(
TaskRollingBackOnNoneThrowingRuntimeTestException.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class, true ),
-
- new TestVector( TaskRollingBackOnNoneThrowingTestException.class,
TaskRollingBackOnAnyThrowingNone.class,
- false ), new TestVector(
TaskRollingBackOnNoneThrowingTestException.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnNoneThrowingTestException.class,
- TaskRollingBackOnAnyThrowingTestException.class,
true ),
- new TestVector( TaskRollingBackOnNoneThrowingTestException.class,
TaskRollingBackOnNoneThrowingNone.class,
- false ), new TestVector(
TaskRollingBackOnNoneThrowingTestException.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, false ),
- new TestVector( TaskRollingBackOnNoneThrowingTestException.class,
- TaskRollingBackOnNoneThrowingTestException.class,
false ),
- new TestVector( TaskRollingBackOnNoneThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, false ),
- new TestVector( TaskRollingBackOnNoneThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnNoneThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, false ),
- new TestVector( TaskRollingBackOnNoneThrowingTestException.class,
- TaskRollingBackOnTestExceptionThrowingNone.class,
false ),
- new TestVector( TaskRollingBackOnNoneThrowingTestException.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class, false ),
- new TestVector( TaskRollingBackOnNoneThrowingTestException.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class, true ),
-
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
- TaskRollingBackOnAnyThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
- TaskRollingBackOnAnyThrowingTestException.class,
true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
- TaskRollingBackOnNoneThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
- TaskRollingBackOnNoneThrowingTestException.class,
false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
- TaskRollingBackOnTestExceptionThrowingNone.class,
false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class, true ),
-
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
- TaskRollingBackOnAnyThrowingNone.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
- TaskRollingBackOnAnyThrowingTestException.class,
true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
- TaskRollingBackOnNoneThrowingNone.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
- TaskRollingBackOnNoneThrowingTestException.class,
false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
- TaskRollingBackOnTestExceptionThrowingNone.class,
true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class, true ),
-
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
- TaskRollingBackOnAnyThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
- TaskRollingBackOnAnyThrowingTestException.class,
true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
- TaskRollingBackOnNoneThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
- TaskRollingBackOnNoneThrowingTestException.class,
false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
- TaskRollingBackOnTestExceptionThrowingNone.class,
false ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class, true ),
-
- new TestVector( TaskRollingBackOnTestExceptionThrowingNone.class,
TaskRollingBackOnAnyThrowingNone.class,
- false ), new TestVector(
TaskRollingBackOnTestExceptionThrowingNone.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnTestExceptionThrowingNone.class,
- TaskRollingBackOnAnyThrowingTestException.class,
true ),
- new TestVector( TaskRollingBackOnTestExceptionThrowingNone.class,
TaskRollingBackOnNoneThrowingNone.class,
- false ), new TestVector(
TaskRollingBackOnTestExceptionThrowingNone.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, false ),
- new TestVector( TaskRollingBackOnTestExceptionThrowingNone.class,
- TaskRollingBackOnNoneThrowingTestException.class,
true ),
- new TestVector( TaskRollingBackOnTestExceptionThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, false ),
- new TestVector( TaskRollingBackOnTestExceptionThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector( TaskRollingBackOnTestExceptionThrowingNone.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, true ),
- new TestVector( TaskRollingBackOnTestExceptionThrowingNone.class,
- TaskRollingBackOnTestExceptionThrowingNone.class,
false ),
- new TestVector( TaskRollingBackOnTestExceptionThrowingNone.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class, false ),
- new TestVector( TaskRollingBackOnTestExceptionThrowingNone.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class, true ),
-
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
- TaskRollingBackOnAnyThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
- TaskRollingBackOnAnyThrowingTestException.class,
true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
- TaskRollingBackOnNoneThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, false ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
- TaskRollingBackOnNoneThrowingTestException.class,
true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, false ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
- TaskRollingBackOnTestExceptionThrowingNone.class,
false ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class, false ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class, true ),
-
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
- TaskRollingBackOnAnyThrowingNone.class, true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
-
TaskRollingBackOnAnyThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
- TaskRollingBackOnAnyThrowingTestException.class,
true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
- TaskRollingBackOnNoneThrowingNone.class, true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
-
TaskRollingBackOnNoneThrowingRuntimeTestException.class, false ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
- TaskRollingBackOnNoneThrowingTestException.class,
true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class, true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class, true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
-
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class, true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
- TaskRollingBackOnTestExceptionThrowingNone.class,
true ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
-
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class, false ),
- new TestVector(
TaskRollingBackOnTestExceptionThrowingTestException.class,
-
TaskRollingBackOnTestExceptionThrowingTestException.class, true ), };
+ private static final Collection<TestVector> TEST_VECTORS =
buildTestVectors(
+ whenFirstTaskIs( TaskRollingBackOnAnyThrowingNone.class ) //
//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ), //
+
+ whenFirstTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
//
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ), //
+
+ whenFirstTaskIs( TaskRollingBackOnAnyThrowingTestException.class ) //
//
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ), //
+
+ whenFirstTaskIs( TaskRollingBackOnNoneThrowingNone.class ) //
//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ), //
+
+ whenFirstTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ), //
+
+ whenFirstTaskIs( TaskRollingBackOnNoneThrowingTestException.class ) //
//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ), //
+
+ whenFirstTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ), //
+
+ whenFirstTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class ) //
//
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ), //
+
+ whenFirstTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ), //
+
+ whenFirstTaskIs( TaskRollingBackOnTestExceptionThrowingNone.class ) //
//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ), //
+
+ whenFirstTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
//
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ), //
+
+ whenFirstTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ) //
//
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnAnyThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnNoneThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingNone.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingRuntimeTestException.class )//
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnRuntimeTestExceptionThrowingTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingNone.class ) //
+ .expectCommitWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingRuntimeTestException.class ) //
+ .expectRollbackWhenSecondTaskIs(
TaskRollingBackOnTestExceptionThrowingTestException.class ) //
+ );
+
+
+ /**
+ * Test which ensures that all combinations of tasks are present.
+ */
+ @Test
+ public void testVectorShouldContainAllCombinations()
+ {
+ Set<TestVector> s = new HashSet<TestVector>();
+
+ s.addAll( TEST_VECTORS );
+
+ assertThat( s.size(), is( 12 * 12 ) );
+ }
/**
* Test which iterates over ALL possible combinations of inner and outer
tasks.
@@ -376,23 +279,7 @@ public class NestedTransactionTest
persistService.start();
try
{
- // given
- final TransactionalWorker worker = injector.getInstance(
TransactionalWorker.class );
- worker.scheduleTask( testVector.getOuterTask() );
- worker.scheduleTask( testVector.getInnerTask() );
-
- // when
- worker.doTasks();
-
- // then
- if ( testVector.shouldRollBack() )
- {
- worker.assertNoEntityHasBeenPersisted();
- }
- else
- {
- worker.assertAllEntitiesHaveBeenPersisted();
- }
+ doTestNestedTransaction( testVector, injector.getInstance(
TransactionalWorker.class ) );
}
finally
{
@@ -413,36 +300,139 @@ public class NestedTransactionTest
};
}
- private static class TestVector
+ private void doTestNestedTransaction( TestVector testVector,
TransactionalWorker worker )
+ {
+ // given
+ testVector.scheduleOuterTaskOn( worker );
+ testVector.scheduleInnerTaskOn( worker );
+
+ // when
+ worker.doTasks();
+
+ // then
+ testVector.assertExpectedOutcomeFor( worker );
+ }
+
+
+ private static Collection<TestVector> buildTestVectors(
TestVectorsBuilder... factories )
+ {
+ final List<TestVector> result = new ArrayList<TestVector>();
+ for ( TestVectorsBuilder factory : factories )
+ {
+ result.addAll( factory.buildTestVectors() );
+ }
+ return result;
+ }
+
+ private static TestVectorsBuilder whenFirstTaskIs( Class<? extends
TransactionalTask> firstTask )
+ {
+ return new TestVectorsBuilder( firstTask );
+ }
+
+ private abstract static class TestVector
{
private final Class<? extends TransactionalTask> outerTask;
private final Class<? extends TransactionalTask> innerTask;
- private final boolean shouldRollBack;
-
- public TestVector( Class<? extends TransactionalTask> outerTask,
Class<? extends TransactionalTask> innerTask,
- boolean shouldRollBack )
+ public TestVector( Class<? extends TransactionalTask> outerTask,
Class<? extends TransactionalTask> innerTask )
{
this.outerTask = outerTask;
this.innerTask = innerTask;
- this.shouldRollBack = shouldRollBack;
}
- public Class<? extends TransactionalTask> getOuterTask()
+ public void scheduleOuterTaskOn( TransactionalWorker worker )
+ {
+ worker.scheduleTask( outerTask );
+ }
+
+ public void scheduleInnerTaskOn( TransactionalWorker worker )
+ {
+ worker.scheduleTask( innerTask );
+ }
+
+ public abstract void assertExpectedOutcomeFor( TransactionalWorker
worker );
+
+ @Override
+ public boolean equals( Object obj )
+ {
+ return obj instanceof TestVector && equalsTestVector( (TestVector)
obj );
+ }
+
+ private boolean equalsTestVector( TestVector other )
+ {
+ return innerTask.equals( other.innerTask ) && outerTask.equals(
other.outerTask );
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return 31 * outerTask.hashCode() + innerTask.hashCode();
+ }
+ }
+
+ private static class RollingBackTestVector
+ extends TestVector
+ {
+
+ public RollingBackTestVector( Class<? extends TransactionalTask>
outerTask,
+ Class<? extends TransactionalTask>
innerTask )
{
- return outerTask;
+ super( outerTask, innerTask );
}
- public Class<? extends TransactionalTask> getInnerTask()
+ @Override
+ public void assertExpectedOutcomeFor( TransactionalWorker worker )
+ {
+ worker.assertNoEntityHasBeenPersisted();
+ }
+ }
+
+ private static class CommittingTestVector
+ extends TestVector
+ {
+
+ public CommittingTestVector( Class<? extends TransactionalTask>
outerTask,
+ Class<? extends TransactionalTask>
innerTask )
{
- return innerTask;
+ super( outerTask, innerTask );
}
- public boolean shouldRollBack()
+ @Override
+ public void assertExpectedOutcomeFor( TransactionalWorker worker )
{
- return shouldRollBack;
+ worker.assertAllEntitiesHaveBeenPersisted();
}
}
+ private static class TestVectorsBuilder
+ {
+
+ private final Class<? extends TransactionalTask> firstTask;
+
+ private final List<TestVector> result;
+
+ public TestVectorsBuilder( Class<? extends TransactionalTask>
firstTask )
+ {
+ this.firstTask = firstTask;
+ this.result = new ArrayList<TestVector>();
+ }
+
+ public TestVectorsBuilder expectCommitWhenSecondTaskIs( Class<?
extends TransactionalTask> secondTask )
+ {
+ result.add( new CommittingTestVector( firstTask, secondTask ) );
+ return this;
+ }
+
+ public TestVectorsBuilder expectRollbackWhenSecondTaskIs( Class<?
extends TransactionalTask> secondTask )
+ {
+ result.add( new RollingBackTestVector( firstTask, secondTask ) );
+ return this;
+ }
+
+ public Collection<TestVector> buildTestVectors()
+ {
+ return result;
+ }
+ }
}