public void creates_a_new_journal_table_when_not_exist() { // Given var dbConnection = Substitute.For <IDbConnection>(); var connectionManager = new TestConnectionManager(dbConnection, true); var command = Substitute.For <IDbCommand>(); var param1 = Substitute.For <IDbDataParameter>(); var param2 = Substitute.For <IDbDataParameter>(); var param3 = Substitute.For <IDbDataParameter>(); dbConnection.CreateCommand().Returns(command); command.CreateParameter().Returns(param1, param2, param3); command.ExecuteScalar().Returns(x => 0); var consoleUpgradeLog = new ConsoleUpgradeLog(); var journal = new SQLiteTableJournal(() => connectionManager, () => consoleUpgradeLog, () => new Sha256Hasher(), "SchemaVersions"); // When journal.StoreExecutedScript(new SqlScript("test", "select 1"), () => command); // Expect command.Received(3).CreateParameter(); param1.ParameterName.ShouldBe("scriptName"); param3.ParameterName.ShouldBe("hash"); param2.ParameterName.ShouldBe("applied"); command.Received().ExecuteNonQuery(); }
public Log4NetAndConsoleUpgradeLog(ILog log) { if (log == null) { throw new ArgumentNullException("log"); } this.log = log; console = new ConsoleUpgradeLog(); }
private void ExecuteHashedDatabaseActions(string scriptPrefix, string connectionString, Func <UpgradeEngineBuilder, UpgradeEngineBuilder> customBuilderTransform) { var sqlConnectionManager = new SqlConnectionManager(connectionString); var log = new ConsoleUpgradeLog(); var journal = new HashedSqlTableJournal(() => sqlConnectionManager, () => log, _versionTableSchema, _versionTableName); var builder = DeployChanges.To .HashedSqlDatabase(sqlConnectionManager, _versionTableSchema, _versionTableName) .WithExecutionTimeout(TimeSpan.FromSeconds(2147483647)) .WithHashedScriptsEmbeddedInAssembly(_migrationAssembly, name => name.StartsWith(scriptPrefix), journal) .WithVariables(ScriptVariables) .LogToConsole(); PerformUpgrade(customBuilderTransform, builder); }
public void dbversion_is_zero_when_journal_table_not_exist() { // Given var dbConnection = Substitute.For <IDbConnection>(); var command = Substitute.For <IDbCommand>(); dbConnection.CreateCommand().Returns(command); var connectionManager = Substitute.For <IConnectionManager>(); command.ExecuteScalar().Returns(x => { throw new SqliteException("table not found", 400); }); var consoleUpgradeLog = new ConsoleUpgradeLog(); var journal = new SQLiteTableJournal(() => connectionManager, () => consoleUpgradeLog, "SchemaVersions"); // When var scripts = journal.GetExecutedScripts(); // Expect command.DidNotReceive().ExecuteReader(); scripts.ShouldBeEmpty(); }
public void creates_a_new_journal_table_when_not_exist() { // Given var dbConnection = Substitute.For <IDbConnection>(); var connectionManager = new TestConnectionManager(dbConnection, true); var command = Substitute.For <IDbCommand>(); var param = Substitute.For <IDbDataParameter>(); dbConnection.CreateCommand().Returns(command); command.CreateParameter().Returns(param); command.ExecuteScalar().Returns(x => { throw new SQLiteException("table not found"); }); var consoleUpgradeLog = new ConsoleUpgradeLog(); var journal = new SQLiteTableJournal(() => connectionManager, () => consoleUpgradeLog, "SchemaVersions"); // When journal.StoreExecutedScript(new SqlScript("test", "select 1")); // Expect command.Received().CreateParameter(); Assert.AreEqual("scriptName", param.ParameterName); command.Received().ExecuteNonQuery(); }