public void Rollback_Calls_RollbackTo_On_Parent_Transaction() { // arrange var parentTransactionMock = TestHelper.SetupMock <ITransaction>(); parentTransactionMock.Setup(s => s.Save(It.IsAny <string>())); parentTransactionMock.Setup(s => s.RollbackTo(It.IsAny <string>())); var nestedTransaction = new NestedTransaction(parentTransactionMock.Object); // act nestedTransaction.Rollback(); // assert parentTransactionMock.VerifyAll(); }
public void Commit_Throws_When_Not_In_Transaction() { // arrange var parentTransactionMock = TestHelper.SetupMock <ITransaction>(); parentTransactionMock.Setup(s => s.Save(It.IsAny <string>())); parentTransactionMock.Setup(s => s.RollbackTo(It.IsAny <string>())); var nestedTransaction = new NestedTransaction(parentTransactionMock.Object); nestedTransaction.Rollback(); // act Assert.Throws <InvalidOperationException>(() => nestedTransaction.Commit()); // assert parentTransactionMock.VerifyAll(); }
public void Rollback_Calls_Event() { // arrange var finished = false; var parentTransactionMock = TestHelper.SetupMock <ITransaction>(); parentTransactionMock.Setup(s => s.Save(It.IsAny <string>())); parentTransactionMock.Setup(s => s.RollbackTo(It.IsAny <string>())); var nestedTransaction = new NestedTransaction(parentTransactionMock.Object); nestedTransaction.Finished += (s, e) => finished = true; // act nestedTransaction.Rollback(); // assert Assert.True(finished); parentTransactionMock.VerifyAll(); }