public void happy_path_is_happ() { if(Context.GetTable<SysObjects>().Any(x => x.Name == "Bar")) using(var cmd = new SqlCommand("drop table Bar", Connection)) cmd.ExecuteNonQuery(); var migration = new DataBossMigrationInfo { Id = Migrations.Max(x => (long?)x.Id).GetValueOrDefault() + 1, Name = "Great Success!", }; Apply(migration, migrator => { migrator.Execute("create table Bar(Id int not null)"); }); Check.That(() => SysObjects.Any(x => x.Name == "Bar")); }
public void rollbacks_failed_migration() { Assume.That(() => !SysObjects.Any(x => x.Name == "Foo")); var failingMigration = new DataBossMigrationInfo { Id = Migrations.Max(x => (long?)x.Id).GetValueOrDefault() + 1, Name = "Failing Migration", }; Apply(failingMigration, migrator => { migrator.Execute("create table Foo(Id int not null)");//should work migrator.Execute("select syntax error");//should error migrator.Execute("create table Foo(Id int not null)");//should be ignored }); Check.That( () => !Migrations.Any(x => x.Id == failingMigration.Id), () => !SysObjects.Any(x => x.Name == "Foo")); }
void Apply(DataBossMigrationInfo info, Action<IDataBossMigrationScope> scope) { var migrator = new DataBossSqlMigrationScope(Connection); migrator.Begin(info); scope(migrator); migrator.Done(); }
public void Begin(DataBossMigrationInfo info) {}