Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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;
            }
        }