public void Update_Database_Runs_New_Everytime_Script() { //arrange string scriptsDirectory = Path.Combine("Scripts", GetType().Name.Replace("Tester", "")); string scriptFileMd5 = ChangeScriptExecutor.GetFileMD5Hash(Path.Combine(scriptsDirectory, "Everytime", "TestScript.sql")); var settings = new ConnectionSettings(".\\sqlexpress", "aliasqltest", true, null, null); new ConsoleAliaSQL().UpdateDatabase(settings, scriptsDirectory, RequestedDatabaseAction.Drop); //act bool success = new ConsoleAliaSQL().UpdateDatabase(settings, scriptsDirectory, RequestedDatabaseAction.Update); //assert int records = 0; DatabaseIntegrationHelpers.AssertUsdAppliedDatabaseScriptTable(settings, reader => { while (reader.Read()) { records++; reader["ScriptFile"].ShouldEqual("TestScript.sql"); reader["hash"].ShouldEqual(scriptFileMd5); } }); success.ShouldEqual(true); records.ShouldEqual(1); }
public void CorrectlyExecutesScriptIfItHasntAlreadyBeenExecuted() { ConnectionSettings settings = getConnectionSettings(); string scriptFile = @"c:\scripts\Update\01_Test.sql"; string fileContents = "file contents..."; MockRepository mocks = new MockRepository(); IScriptExecutionTracker executionTracker = mocks.CreateMock <IScriptExecutionTracker>(); IFileSystem fileSystem = mocks.CreateMock <IFileSystem>(); IQueryExecutor queryExecutor = mocks.CreateMock <IQueryExecutor>(); ITaskObserver taskObserver = mocks.CreateMock <ITaskObserver>(); Expect.Call(executionTracker.ScriptAlreadyExecuted(settings, "01_Test.sql")).Return(false); taskObserver.Log("Executing: 01_Test.sql"); Expect.Call(fileSystem.ReadTextFile(scriptFile)).Return(fileContents); queryExecutor.ExecuteNonQuery(settings, fileContents, true); executionTracker.MarkScriptAsExecuted(settings, "01_Test.sql", taskObserver); mocks.ReplayAll(); IChangeScriptExecutor executor = new ChangeScriptExecutor(executionTracker, queryExecutor, fileSystem); executor.Execute(scriptFile, settings, taskObserver); mocks.VerifyAll(); }
public void RunsScriptsWithTransactionalStopWordsNonTransactional() { ConnectionSettings settings = getConnectionSettings(); string scriptFile = @"c:\scripts\Update\01_Test.sql"; string fileContents = "CREATE DATABASE ..."; MockRepository mocks = new MockRepository(); IScriptExecutionTracker executionTracker = mocks.StrictMock <IScriptExecutionTracker>(); IFileSystem fileSystem = mocks.StrictMock <IFileSystem>(); IQueryExecutor queryExecutor = mocks.StrictMock <IQueryExecutor>(); ITaskObserver taskObserver = mocks.StrictMock <ITaskObserver>(); Expect.Call(executionTracker.ScriptAlreadyExecuted(settings, "01_Test.sql")).Return(false); taskObserver.Log("Executing: 01_Test.sql"); Expect.Call(fileSystem.ReadTextFile(scriptFile)).Return(fileContents); Expect.Call(queryExecutor.ScriptSupportsTransactions(fileContents)).Return(false); queryExecutor.ExecuteNonQuery(settings, fileContents, true); executionTracker.MarkScriptAsExecuted(settings, "01_Test.sql", taskObserver); mocks.ReplayAll(); IChangeScriptExecutor executor = new ChangeScriptExecutor(executionTracker, queryExecutor, fileSystem); executor.Execute(scriptFile, settings, taskObserver); mocks.VerifyAll(); }
public void CorrectlyLogsWarningWhenScriptHasAlreadyBeenExecuted() { ConnectionSettings settings = getConnectionSettings(); string scriptFile = @"c:\scripts\Update\01_Test.sql"; MockRepository mocks = new MockRepository(); IScriptExecutionTracker executionTracker = mocks.CreateMock <IScriptExecutionTracker>(); ITaskObserver taskObserver = mocks.CreateMock <ITaskObserver>(); Expect.Call(executionTracker.ScriptAlreadyExecuted(settings, "01_Test.sql")).Return(true); taskObserver.Log("Skipping (already executed): 01_Test.sql"); mocks.ReplayAll(); IChangeScriptExecutor executor = new ChangeScriptExecutor(executionTracker, null, null); executor.Execute(scriptFile, settings, taskObserver); mocks.VerifyAll(); }
public void DoesNotExecuteScriptsInBaseLineMode() { ConnectionSettings settings = getConnectionSettings(); string scriptFile = @"c:\scripts\Update\01_Test.sql"; MockRepository mocks = new MockRepository(); IScriptExecutionTracker executionTracker = mocks.StrictMock <IScriptExecutionTracker>(); ITaskObserver taskObserver = mocks.StrictMock <ITaskObserver>(); DoNotExpect.Call(executionTracker.ScriptAlreadyExecuted(settings, "01_Test.sql")); taskObserver.Log("Skipping (already executed): 01_Test.sql"); mocks.ReplayAll(); IChangeScriptExecutor executor = new ChangeScriptExecutor(executionTracker, null, null); executor.Execute(scriptFile, settings, taskObserver); mocks.VerifyAll(); }