public void RealDatabaseShouldUnapplyMigrationsByExecutingSql()
 {
     var tranection = new TrannectionTraceOnly().BeginCapturing();
     var testSubject = new DatabaseRemote(tranection);
     testSubject.Unapply(Migration3);
     testSubject.Unapply(Migration2);
     tranection.SqlExecuted.Should().Equal(new[] { Migration3.Unapply, Migration2.Unapply });
 }
 public void NonProductionRemoteDatabaseShouldRemoveTestData()
 {
     var tranection = new TrannectionTraceOnly().BeginCapturing();
     var testSubject = new DatabaseRemote(tranection) {IsTestDatabase = true};
     testSubject.Unapply(Migration3);
     testSubject.Unapply(Migration2);
     tranection.SqlExecuted.Should().Equal(new[] { Migration3.DeleteTestData, Migration3.Unapply, Migration2.DeleteTestData, Migration2.Unapply });
 }
 public void RealDatabaseShouldNoOpToUnapplyMigrationsWhichDoNothingWhenUnapplied()
 {
     var tranection = new TrannectionTraceOnly().BeginCapturing();
     var testSubject = new DatabaseRemote(tranection);
     testSubject.Unapply(MigrationEmpty);
     tranection.SqlExecuted.Should().BeEmpty();
 }
 public void ShouldNeverDeleteTestDataWhichIsNoOp()
 {
     var tranection = new TrannectionTraceOnly().BeginCapturing();
     var testSubject = new DatabaseRemote(tranection) {IsTestDatabase = true};
     testSubject.Unapply(MigrationWithoutTestData);
     tranection.SqlExecuted.Should().Equal(new[] { MigrationWithoutTestData.Unapply });
 }