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(); }