public void MigrateSqlScript() { MockRepository mocks = new MockRepository(); IAdoMigrationContext context = mocks.CreateMock<IAdoMigrationContext>(); FakeDatabase db = mocks.CreateMock<FakeDatabase>(new object[] { "connString", SqlClientFactory.Instance }); DbTransaction trans = mocks.CreateMock<DbTransaction>(); DbCommand cmd = mocks.CreateMock<DbCommand>(); DatabaseType dbType = mocks.CreateMock<DatabaseType>("sqlserver"); // We have 3 DatabaseType property access on the execution path Expect.Call(context.DatabaseType).Return(dbType).Repeat.Times(3); Expect.Call(context.Database).Return(db); context.Commit(); LastCall.On(context).Repeat.Once(); // CREATE TABLE statement Expect.Call(context.Transaction).Return(trans); Expect.Call(db.ExecuteNonQuery(cmd, trans)).IgnoreArguments().Return(1); // INSERT statement Expect.Call(context.Transaction).Return(trans); Expect.Call(db.ExecuteNonQuery(cmd, trans)).IgnoreArguments().Return(1); mocks.ReplayAll(); using (StreamReader sr = File.OpenText("..\\..\\sql\\oracle\\patch0003_dummy_SQL_file.sql")) { try { SqlScriptMigrationTask task = new SqlScriptMigrationTask("patch0003_dummy_SQL_file", 3, sr); task.Migrate(context); } catch (MigrationException) { Assert.Fail("We should not have got an exception"); } finally { sr.Close(); } } mocks.VerifyAll(); }
public void MigrateSqlString() { String sql = "INSERT INTO order_table_1 (id, value) VALUES (1, 'order_table_1')"; MockRepository mocks = new MockRepository(); IAdoMigrationContext context = mocks.CreateMock<IAdoMigrationContext>(); FakeDatabase db = mocks.CreateMock<FakeDatabase>(new object[] {"connString", SqlClientFactory.Instance}); DbTransaction trans = mocks.CreateMock<DbTransaction>(); DbCommand cmd = mocks.CreateMock<DbCommand>(); DatabaseType dbType = mocks.CreateMock<DatabaseType>("sqlserver"); Expect.Call(context.DatabaseType).Return(dbType); Expect.Call(context.Database).Return(db); context.Commit(); LastCall.On(context).Repeat.Once(); Expect.Call(context.Transaction).Return(trans); Expect.Call(db.ExecuteNonQuery(cmd, trans)).IgnoreArguments().Return(1); mocks.ReplayAll(); SqlScriptMigrationTask task = new SqlScriptMigrationTask("test", 1, sql); try { task.Migrate(context); } catch (MigrationException) { Assert.Fail("We should not have got an exception"); } mocks.VerifyAll(); }
public void MigrateSqlStringWithDbException() { String sql = "INSERT INTO order_table_1 (id, value) VALUES (1, 'order_table_1')"; MockRepository mocks = new MockRepository(); IAdoMigrationContext context = mocks.CreateMock<IAdoMigrationContext>(); FakeDatabase db = mocks.CreateMock<FakeDatabase>(new object[] { "connString", SqlClientFactory.Instance }); DbTransaction trans = mocks.CreateMock<DbTransaction>(); DbCommand cmd = mocks.CreateMock<DbCommand>(); DatabaseType dbType = mocks.CreateMock<DatabaseType>("sqlserver"); Expect.Call(context.DatabaseType).Return(dbType); Expect.Call(context.Database).Return(db); context.Commit(); LastCall.On(context).Repeat.Once(); Expect.Call(context.Transaction).Return(trans); Expect.Call(db.ExecuteNonQuery(cmd, trans)).IgnoreArguments() .Throw(new MigrationException("Something bad happened")); mocks.ReplayAll(); try { SqlScriptMigrationTask task = new SqlScriptMigrationTask("test", 1, sql); task.Migrate(context); } catch (MigrationException me) { Assert.AreEqual("Something bad happened", me.InnerException.Message); mocks.VerifyAll(); throw me; } }