public void ShouldFailOnAlreadyAdjudicatedBindTest()
        {
            Mockery mockery;
            DataSourceTransaction transaction;
            string mockConnectionString;
            IDbConnection mockDbConnection;
            IDbTransaction mockDbTransaction;

            mockery = new Mockery();
            mockConnectionString = "db=local";
            mockDbConnection = mockery.NewMock<IDbConnection>();
            mockDbTransaction = mockery.NewMock<IDbTransaction>();

            transaction = new DataSourceTransaction();

            Assert.IsNotNull(transaction);

            Assert.IsNull(transaction.ConnectionString);
            Assert.IsNull(transaction.Connection);
            Assert.IsNull(transaction.Transaction);
            Assert.IsFalse(transaction.Bound);
            Assert.IsNull(transaction.Context);

            transaction.Commit();
            transaction.Bind(mockConnectionString, mockDbConnection, mockDbTransaction, null);
        }
        public void ShouldFailOnAlreadyAdjudicatedTest()
        {
            Mockery mockery;
            DataSourceTransaction transaction;
            string mockConnectionString;
            IDbConnection mockDbConnection;
            IDbTransaction mockDbTransaction;

            mockery = new Mockery();
            mockConnectionString = "db=local";
            mockDbConnection = mockery.NewMock<IDbConnection>();
            mockDbTransaction = mockery.NewMock<IDbTransaction>();

            Expect.AtLeastOnce.On(mockDbConnection).Method("Dispose").WithNoArguments();
            Expect.AtLeastOnce.On(mockDbTransaction).Method("Rollback").WithNoArguments();
            Expect.AtLeastOnce.On(mockDbTransaction).Method("Dispose").WithNoArguments();

            transaction = new DataSourceTransaction();

            Assert.IsNotNull(transaction);

            Assert.IsNull(transaction.ConnectionString);
            Assert.IsNull(transaction.Connection);
            Assert.IsNull(transaction.Transaction);
            Assert.IsFalse(transaction.Bound);
            Assert.IsNull(transaction.Context);

            transaction.Bind(mockConnectionString, mockDbConnection, mockDbTransaction, null);

            Assert.IsNotNull(transaction.ConnectionString);
            Assert.IsNotNull(transaction.Connection);
            Assert.IsNotNull(transaction.Transaction);
            Assert.IsTrue(transaction.Bound);
            Assert.IsNull(transaction.Context);

            transaction.Rollback();
            transaction.Commit();
            transaction.Dispose();
        }
        public void ShouldCommitTest()
        {
            Mockery mockery;
            DataSourceTransaction transaction;
            string mockConnectionString;
            IDbConnection mockDbConnection;
            IDbTransaction mockDbTransaction;
            IDataSourceTransactionContext mockDataSourceTransactionContext;

            mockery = new Mockery();
            mockConnectionString = "db=local";
            mockDbConnection = mockery.NewMock<IDbConnection>();
            mockDbTransaction = mockery.NewMock<IDbTransaction>();
            mockDataSourceTransactionContext = mockery.NewMock<IDataSourceTransactionContext>();

            Expect.AtLeastOnce.On(mockDbConnection).Method("Dispose").WithNoArguments();
            Expect.AtLeastOnce.On(mockDbTransaction).Method("Commit").WithNoArguments();
            Expect.AtLeastOnce.On(mockDbTransaction).Method("Dispose").WithNoArguments();
            Expect.AtLeastOnce.On(mockDataSourceTransactionContext).Method("Dispose").WithNoArguments();

            transaction = new DataSourceTransaction();

            Assert.IsNotNull(transaction);

            Assert.IsNull(transaction.ConnectionString);
            Assert.IsNull(transaction.Connection);
            Assert.IsNull(transaction.Transaction);
            Assert.IsFalse(transaction.Bound);
            Assert.IsNull(transaction.Context);

            transaction.Bind(mockConnectionString, mockDbConnection, mockDbTransaction, mockDataSourceTransactionContext);

            Assert.IsNotNull(transaction.ConnectionString);
            Assert.IsNotNull(transaction.Connection);
            Assert.IsNotNull(transaction.Transaction);
            Assert.IsTrue(transaction.Bound);
            Assert.IsNotNull(transaction.Context);

            transaction.Commit();
            transaction.Dispose();

            mockery.VerifyAllExpectationsHaveBeenMet();
        }