public void should_not_rollback_nested_unit_of_work() { //act UnitOfWork.Do(uow => UnitOfWork.Do(nested => nested.Rollback())); //assert A.CallTo(() => SessionScope.Rollback()).MustNotHaveHappened(); }
public void should_rollback_and_dispose() { //act UnitOfWork.Do(uow => uow.Rollback()); //assert A.CallTo(() => SessionScope.Commit()).MustNotHaveHappened(); A.CallTo(() => SessionScope.Rollback()).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(() => SessionScope.Dispose()).MustHaveHappened(Repeated.Exactly.Once); }
public void should_commit() { //act UnitOfWork.Do(uow => { }, new UnitOfWorkSettings() { RollbackOnDispose = false }); //assert A.CallTo(() => SessionScope.Rollback()).MustNotHaveHappened(); A.CallTo(() => SessionScope.Commit()).MustHaveHappened(); }
public void should_not_try_to_commit_or_rollback_and_should_close_unit_of_work() { //act try { UnitOfWork.Do(uow => { throw new Exception(); }); } catch (Exception) { //assert A.CallTo(() => SessionScope.Rollback()).MustNotHaveHappened(); A.CallTo(() => SessionScope.Commit()).MustNotHaveHappened(); A.CallTo(() => SessionScope.Dispose()).MustHaveHappened(); UnitOfWork.Current.IsNone.Should().BeTrue(); } }
/// <summary> /// Rollback database transaction explicitly. As alternative you can use RollbackOnDispose setting to rollback transaction automatically in the end of the "Do" block(may be useful in testing). /// </summary> public void Rollback() { Perform(() => SessionScope.Rollback()); }