public void ShouldNeverInsertTestDataWhichIsNoOp()
 {
     var tranection = new TrannectionTraceOnly().BeginCapturing();
     var testSubject = new DatabaseRemote(tranection) {IsTestDatabase = true};
     testSubject.Apply(MigrationWithoutTestData);
     tranection.SqlExecuted.Should().Equal(new[] { MigrationWithoutTestData.Apply });
 }
 public void DatabaseShouldDisposeItsTranection()
 {
     var tracer = new TrannectionTraceOnly();
     var testSubject = new DatabaseRemote(tracer);
     testSubject.Dispose();
     tracer.IsDisposed.Should().BeTrue();
 }
 public void DatabaseShouldCommitItsTranection()
 {
     var tracer = new TrannectionTraceOnly();
     var testSubject = new DatabaseRemote(tracer);
     testSubject.Commit();
     tracer.IsCommitted.Should().BeTrue();
 }
 public void RealDatabaseShouldNoOpToUnapplyMigrationsWhichDoNothingWhenUnapplied()
 {
     var tranection = new TrannectionTraceOnly().BeginCapturing();
     var testSubject = new DatabaseRemote(tranection);
     testSubject.Unapply(MigrationEmpty);
     tranection.SqlExecuted.Should().BeEmpty();
 }
 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 ProductionRemoteDatabaseShouldNotApplyTestData()
 {
     var tranection = new TrannectionTraceOnly().BeginCapturing();
     var testSubject = new DatabaseRemote(tranection);
     testSubject.Apply(Migration2);
     testSubject.Apply(Migration3);
     tranection.SqlExecuted.Should().Equal(new[] { Migration2.Apply, Migration3.Apply });
 }
 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 DatabaseShouldCreateATranection()
 {
     const string connectionString = "some fake connection string;";
     var testSubject = new DatabaseRemote(connectionString);
     testSubject.Tranection.Should().BeOfType<SqlServerTranection>();
     testSubject.Tranection.ShouldHave()
         .Properties(t => t.IsOpen, t => t.ConnectionString)
         .EqualTo(new {IsOpen = false, ConnectionString = ExpectedConnectionString(connectionString)});
 }
 public void DatabaseShouldKnowItsCurrentVersion()
 {
     var tracer = new TrannectionTraceOnly();
     var testSubject = new DatabaseRemote(tracer);
     tracer.ExecuteScalarHandler =
         sql =>
             {
                 sql.Should().Be(RequestVersionSql);
                 return 6;
             };
     testSubject.CurrentVersion.Result.Should().Be(6);
 }
 public void ShouldBeAbleToGoToNewVersion()
 {
     var tracer = new TrannectionTraceOnly();
     var testSubject = new DatabaseRemote(tracer);
     var hasBeenCalled = false;
     tracer.ExecuteNonQueryHandler =
         sql =>
             {
                 sql.Should().Be(UpdateToVersion9Sql);
                 hasBeenCalled = true;
             };
     testSubject.SetCurrentVersionTo(9).Wait();
     hasBeenCalled.Should().BeTrue();
 }
 public void RemoteDatabaseShouldDefaultToBeProductionDatabase()
 {
     var db = new DatabaseRemote(new TrannectionTraceOnly());
     db.IsTestDatabase.Should().BeFalse();
 }