public void Drop_DropADb() { var engine = new ToolEngine(Env, Logger); engine.Run("upgrade", "--ensure", GetConfigPath()); var result = engine.Run("drop", GetConfigPath()); result.Should().Be(0); using (var connection = new SqlConnection(Environment.GetEnvironmentVariable("CONNSTR"))) using (var command = new SqlCommand("select count(*) from SchemaVersions where scriptname = '001.sql'", connection)) { Action a = () => connection.Open(); a.Should().Throw <SqlException>("Database DbUp should not exist"); } }
public void UpgradeCommand_ShouldUseConnectionTimeoutForLongrunningQueries() { var engine = new ToolEngine(Env, Logger); var r = engine.Run("upgrade", "--ensure", GetConfigPath("dbup.yml", "Timeout")); r.Should().Be(1); }
public void StatusCommand_ShouldPrintScriptName_IfThereAreTheScriptsToExecute() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { return(File.Exists(x.Arguments[0] as string)); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("status", GetConfigPath("onescript.yml"), "-n"); Logger.InfoMessages.Last().Should().EndWith("c001.sql"); }
public void MarkAsExecutedCommand_WhenCalled_ShouldNotMakeAnyChangesInDb() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { return(File.Exists(x.Arguments[0] as string)); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("mark-as-executed", GetConfigPath("mark-as-executed.yml")); result.Should().Be(0); Logger.Log.Should().NotContain("print 'You should not see this message'"); }
public void StatusCommand_ShouldUseSpecifiedEnvFiles() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { return(File.Exists(x.Arguments[0] as string)); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("status", GetConfigPath("Status/status.yml"), "-n", "--env", GetConfigPath("Status/file1.env"), GetConfigPath("Status/file2.env")); Logger.InfoMessages.Last().Should().EndWith("c001.sql"); }
public void StatusCommand_ShouldPrintGeneralInformation_IfNoScriptsToExecute() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { return(File.Exists(x.Arguments[0] as string)); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("status", GetConfigPath("noscripts.yml")); result.Should().Be(0); Logger.InfoMessages.Last().Should().StartWith("Database is up-to-date"); }
public void InitCommand_ShouldReturn1AndNotCreateConfig_IfItIsPresent() { var saved = false; var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists(@"c:\test\dbup.yml")).Returns(true); A.CallTo(() => env.WriteFile("", "")).WithAnyArguments().ReturnsLazily(x => { saved = true; return(true.Some <bool, Error>()); }); var engine = new ToolEngine(env, A.Fake <IUpgradeLog>()); engine.Run("init").Should().Be(1); saved.Should().BeFalse(); }
public void ToolEngine_ShouldRespectScriptFiltersAndNotMatchFiles(string filename) { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { return(File.Exists(x.Arguments[0] as string)); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("upgrade", GetConfigPath("filter.yml")); result.Should().Be(0); Logger.Log.Should().NotContain(filename); }
public void Ensure_CreateANewDb() { var engine = new ToolEngine(Env, Logger); var result = engine.Run("upgrade", "--ensure", GetConfigPath()); result.Should().Be(0); using (var connection = new SqlConnection(Environment.GetEnvironmentVariable("CONNSTR"))) using (var command = new SqlCommand("select count(*) from SchemaVersions where scriptname = '001.sql'", connection)) { connection.Open(); var count = command.ExecuteScalar(); count.Should().Be(1); } }
public void LoadMigration_ShouldSubstituteVariablesToScript() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists(A <string> .Ignored)).ReturnsLazily(x => File.Exists(x.Arguments[0] as string)); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("upgrade", GetConfigPath("vars.yml")); result.Should().Be(0); Logger.Log.Should().Contain("print 'Var1Value'"); Logger.Log.Should().Contain("print 'Var2Value'"); Logger.Log.Should().Contain("print 'Var3 Value'"); }
public void LoadMigration_ShouldRespectScriptEncoding() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { var res = File.Exists(x.Arguments[0] as string); return(res); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("upgrade", GetConfigPath("encoding.yml")); result.Should().Be(0); Logger.Log.Should().Contain("print 'Превед, медвед'"); }