public void ShouldSetAndGetAmbientTransactionTest() { DataSourceTransaction transaction; Assert.IsNull(DataSourceTransaction.Current); transaction = new DataSourceTransaction(); DataSourceTransaction.FrameTransaction(transaction); Assert.IsNotNull(DataSourceTransaction.Current); }
public void ShouldFailOnConnectionTypeMismatchUnderAmbientDataSourceTransactionTest() { Mockery mockery; AdoNetDataSource dataSource; IConnectionFactory mockConnectionFactory; IDbConnection mockDbConnection; IDbCommand mockDbCommand; IDataParameterCollection mockDataParameterCollection; IDataParameter[] mockDataParameters; IDataParameter mockDataParameter0; IDataParameter mockDataParameter1; IDbTransaction mockDbTransaction; DataSourceTransaction transaction; int recordsAffected; mockery = new Mockery(); mockConnectionFactory = mockery.NewMock<IConnectionFactory>(); mockDbConnection = mockery.NewMock<IDbConnection>(); mockDbCommand = mockery.NewMock<IDbCommand>(); mockDataParameterCollection = mockery.NewMock<IDataParameterCollection>(); mockDataParameter0 = mockery.NewMock<IDataParameter>(); mockDataParameter1 = mockery.NewMock<IDataParameter>(); mockDbTransaction = mockery.NewMock<IDbTransaction>(); mockDataParameters = new IDataParameter[] { mockDataParameter0, mockDataParameter1 }; Expect.Once.On(mockConnectionFactory).Method("GetConnection").Will(Return.Value(mockDbConnection)); Expect.Once.On(mockConnectionFactory).GetProperty("ConnectionType").Will(Return.Value(mockDbConnection.GetType())); //Expect.AtLeastOnce.On(mockDbConnection).GetProperty("State").Will(Return.Value(ConnectionState.Open)); Expect.AtLeastOnce.On(mockDbConnection).Method("Dispose").WithNoArguments(); Expect.AtLeastOnce.On(mockDbConnection).SetProperty("ConnectionString").To("myConnectionString"); Expect.AtLeastOnce.On(mockDbConnection).Method("Open").WithNoArguments(); Expect.AtLeastOnce.On(mockDbConnection).Method("CreateCommand").WithNoArguments().Will(Return.Value(mockDbCommand)); Expect.AtLeastOnce.On(mockDbConnection).Method("BeginTransaction").WithNoArguments().Will(Return.Value(mockDbTransaction)); Expect.AtLeastOnce.On(mockDbCommand).GetProperty("Parameters").Will(Return.Value(mockDataParameterCollection)); Expect.AtLeastOnce.On(mockDataParameterCollection).Method("Clear").WithNoArguments(); Expect.AtLeastOnce.On(mockDbCommand).Method("Dispose").WithNoArguments(); Expect.AtLeastOnce.On(mockDbCommand).SetProperty("Connection").To(mockDbConnection); Expect.AtLeastOnce.On(mockDbCommand).SetProperty("CommandType").To(CommandType.StoredProcedure); Expect.AtLeastOnce.On(mockDbCommand).SetProperty("CommandText").To("blah blah blah"); Expect.AtLeastOnce.On(mockDbCommand).SetProperty("Transaction"); Expect.AtLeastOnce.On(mockDbCommand).Method("ExecuteNonQuery").WithNoArguments().Will(Return.Value(1)); Expect.AtLeastOnce.On(mockDbTransaction).Method("Commit").WithNoArguments(); Expect.AtLeastOnce.On(mockDbTransaction).Method("Dispose").WithNoArguments(); Expect.AtLeastOnce.On(mockDataParameter0).GetProperty("Value").Will(Return.Value(1)); Expect.AtLeastOnce.On(mockDataParameter1).GetProperty("Value").Will(Return.Value(null)); Expect.AtLeastOnce.On(mockDataParameter1).SetProperty("Value").To(DBNull.Value); Expect.AtLeastOnce.On(mockDataParameterCollection).Method("Add").With(mockDataParameter0).Will(Return.Value(0)); Expect.AtLeastOnce.On(mockDataParameterCollection).Method("Add").With(mockDataParameter1).Will(Return.Value(0)); transaction = new DataSourceTransaction(); Assert.IsFalse(transaction.Bound); Assert.IsNull(DataSourceTransaction.Current); DataSourceTransaction.FrameTransaction(transaction); Assert.IsNotNull(DataSourceTransaction.Current); transaction.Bind(MOCK_CONNECTION_STRING, new MockConnection(), mockDbTransaction, null); dataSource = new AdoNetDataSource(MOCK_CONNECTION_STRING, mockConnectionFactory); recordsAffected = dataSource.ExecuteNonQuery(CommandType.StoredProcedure, "blah blah blah", mockDataParameters, null, false); }
public void ShouldRollbackTest() { 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.Dispose(); mockery.VerifyAllExpectationsHaveBeenMet(); }
public void ShouldFailOnNullConnectionStringBindTest() { Mockery mockery; DataSourceTransaction transaction; string mockConnectionString; IDbConnection mockDbConnection; IDbTransaction mockDbTransaction; mockery = new Mockery(); mockConnectionString = null; 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.Bind(mockConnectionString, mockDbConnection, mockDbTransaction, null); }
public void ShouldFailOnAlreadyContextSetBindTest() { Mockery mockery; DataSourceTransaction transaction; IDataSourceTransactionContext mockDataSourceTransactionContext; mockery = new Mockery(); mockDataSourceTransactionContext = mockery.NewMock<IDataSourceTransactionContext>(); 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.Context = mockDataSourceTransactionContext; Assert.IsNotNull(transaction.Context); transaction.Context = null; // ok transaction.Context = mockDataSourceTransactionContext; mockDataSourceTransactionContext = mockery.NewMock<IDataSourceTransactionContext>(); transaction.Context = mockDataSourceTransactionContext; // not ok }
public void ShouldCreateTest() { DataSourceTransaction transaction; 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); Assert.AreEqual(IsolationLevel.Unspecified, transaction.IsolationLevel); transaction.Dispose(); Assert.IsTrue(transaction.Adjudicated); Assert.IsTrue(transaction.Disposed); transaction = new DataSourceTransaction(IsolationLevel.Serializable); Assert.IsNotNull(transaction); Assert.AreEqual(IsolationLevel.Serializable, transaction.IsolationLevel); }
public void ShouldFailOnConnectionTypeMismatchUnderAmbientDataSourceTransactionTest() { Mockery mockery; MockAdoNetAmbientAware ambientAware; IConnectionFactory mockConnectionFactory; IDbConnection mockDbConnection; IDbTransaction mockDbTransaction; DataSourceTransaction transaction; IDbConnection dbConnection; IDbTransaction dbTransaction; mockery = new Mockery(); mockConnectionFactory = mockery.NewMock<IConnectionFactory>(); mockDbConnection = mockery.NewMock<IDbConnection>(); mockDbTransaction = mockery.NewMock<IDbTransaction>(); Expect.Once.On(mockConnectionFactory).Method("GetConnection").Will(Return.Value(mockDbConnection)); Expect.Once.On(mockConnectionFactory).GetProperty("ConnectionType").Will(Return.Value(mockDbConnection.GetType())); //Expect.AtLeastOnce.On(mockDbConnection).GetProperty("State").Will(Return.Value(ConnectionState.Open)); Expect.AtLeastOnce.On(mockDbConnection).Method("Dispose").WithNoArguments(); Expect.AtLeastOnce.On(mockDbConnection).SetProperty("ConnectionString").To("myConnectionString"); Expect.AtLeastOnce.On(mockDbConnection).Method("Open").WithNoArguments(); Expect.AtLeastOnce.On(mockDbConnection).Method("BeginTransaction").WithNoArguments().Will(Return.Value(mockDbTransaction)); Expect.AtLeastOnce.On(mockDbTransaction).Method("Commit").WithNoArguments(); Expect.AtLeastOnce.On(mockDbTransaction).Method("Dispose").WithNoArguments(); transaction = new DataSourceTransaction(); Assert.IsFalse(transaction.Bound); Assert.IsNull(DataSourceTransaction.Current); DataSourceTransaction.FrameTransaction(transaction); Assert.IsNotNull(DataSourceTransaction.Current); transaction.Bind(MOCK_CONNECTION_STRING, new MockConnection(), mockDbTransaction, null); ambientAware = new MockAdoNetAmbientAware(MOCK_CONNECTION_STRING, mockConnectionFactory); ambientAware.BypassGetConnectionAndTransaction(out dbConnection, out dbTransaction); }