public void Should_Start_A_Transaction() { var innerBehavior = Substitute.For<IActionBehavior>(); var unitOfWork = Substitute.For<IUnitOfWork>(); var transactionScopeBehavior = new TransactionScopeBehavior(innerBehavior, unitOfWork); transactionScopeBehavior.Invoke(); unitOfWork.Received().BeginTransaction(); }
public void Should_Commit_A_Transaction_When_There_Are_No_Exceptions() { var innerBehavior = Substitute.For<IActionBehavior>(); var unitOfWork = Substitute.For<IUnitOfWork>(); var transaction = Substitute.For<ITransaction>(); unitOfWork.BeginTransaction().Returns(transaction); var transactionScopeBehavior = new TransactionScopeBehavior(innerBehavior, unitOfWork); transactionScopeBehavior.Invoke(); transaction.Received().Commit(); transaction.DidNotReceive().Rollback(); }
public void Should_Rollback_A_Transaction_When_There_Is_An_Exception() { var innerBehavior = Substitute.For<IActionBehavior>(); var unitOfWork = Substitute.For<IUnitOfWork>(); var transaction = Substitute.For<ITransaction>(); innerBehavior.When(x => x.Invoke()).Do(x => { throw new Exception("bad things happning"); }); unitOfWork.BeginTransaction().Returns(transaction); var transactionScopeBehavior = new TransactionScopeBehavior(innerBehavior, unitOfWork); Assert.Throws<Exception>(transactionScopeBehavior.Invoke); transaction.DidNotReceive().Commit(); transaction.Received().Rollback(); }