ADOUtils.Tests.DatabaseTest.TransactionManagement.Should_throw_exception_and_save_nothing_when_commit_outer_transaction_and_at_least_one_inner_transaction_has_been_rollback C# (CSharp) Метод

Should_throw_exception_and_save_nothing_when_commit_outer_transaction_and_at_least_one_inner_transaction_has_been_rollback() приватный Метод

        public void Should_throw_exception_and_save_nothing_when_commit_outer_transaction_and_at_least_one_inner_transaction_has_been_rollback()
        {
            using (var outer = _target.BeginTransaction())
            {
                _target.Exec("INSERT INTO Tbl(IntValue) VALUES(1)");

                using (var inner = _target.BeginTransaction())
                {
                    _target.Exec("INSERT INTO Tbl(IntValue) VALUES(2)");
                    inner.Rollback();
                }

                _target.Exec("INSERT INTO Tbl(IntValue) VALUES(3)");

                Executing.This(() => outer.Commit()).Should().Throw<DataException>()
                    .And.Exception.Message.Should().Be.EqualTo("Cannot commit transaction when one of the nested transaction has been rolled back");
            }

            _target.FieldValue<IDbTransaction>("_tr").Should().Be.Null();
            _target.Scalar<int>("SELECT COUNT(*) FROM Tbl").Should().Be.EqualTo(0);
        }