Skip to content

Commit

Permalink
Simplify the test, use existing ReactiveTestTransactionManager and te…
Browse files Browse the repository at this point in the history
…st suite
  • Loading branch information
simonbasle committed Mar 9, 2023
1 parent ad7c936 commit 8abee3d
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 112 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ class ReactiveTestTransactionManager extends AbstractReactiveTransactionManager

private final boolean canCreateTransaction;

private final boolean forceFailOnCommit;

protected boolean begin = false;

protected boolean commit = false;
Expand All @@ -48,8 +50,13 @@ class ReactiveTestTransactionManager extends AbstractReactiveTransactionManager


ReactiveTestTransactionManager(boolean existingTransaction, boolean canCreateTransaction) {
this(existingTransaction, canCreateTransaction, false);
}

ReactiveTestTransactionManager(boolean existingTransaction, boolean canCreateTransaction, boolean forceFailOnCommit) {
this.existingTransaction = existingTransaction;
this.canCreateTransaction = canCreateTransaction;
this.forceFailOnCommit = forceFailOnCommit;
}


Expand Down Expand Up @@ -79,7 +86,12 @@ protected Mono<Void> doCommit(TransactionSynchronizationManager synchronizationM
if (!TRANSACTION.equals(status.getTransaction())) {
return Mono.error(new IllegalArgumentException("Not the same transaction object"));
}
return Mono.fromRunnable(() -> this.commit = true);
return Mono.fromRunnable(() -> {
this.commit = true;
if (this.forceFailOnCommit) {
throw new IllegalArgumentException("Forced failure on commit");
}
});
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,22 @@ public void transactionTemplateWithException() {
assertHasCleanedUp(tm);
}

//gh-28968
@Test
void errorInCommitDoesInitiateRollbackAfterCommit() {
ReactiveTestTransactionManager tm = new ReactiveTestTransactionManager(false, true, true);
TransactionalOperator rxtx = TransactionalOperator.create(tm);

StepVerifier.create(rxtx.transactional(Mono.just("bar")))
.verifyErrorMessage("Forced failure on commit");

assertHasBegan(tm);
assertHasCommitted(tm);
assertHasRolledBack(tm);
assertHasNotSetRollbackOnly(tm);
assertHasCleanedUp(tm);
}

private void assertHasBegan(ReactiveTestTransactionManager actual) {
assertThat(actual.begin).as("Expected <ReactiveTransactionManager.begin()> but was <begin()> was not invoked").isTrue();
}
Expand Down

0 comments on commit 8abee3d

Please sign in to comment.