Esempio n. 1
0
        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");
                }
        }
Esempio n. 2
0
        public void UpgradeCommand_ShouldUseConnectionTimeoutForLongrunningQueries()
        {
            var engine = new ToolEngine(Env, Logger);

            var r = engine.Run("upgrade", "--ensure", GetConfigPath("dbup.yml", "Timeout"));

            r.Should().Be(1);
        }
Esempio n. 3
0
        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");
        }
Esempio n. 4
0
        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'");
        }
Esempio n. 5
0
        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");
        }
Esempio n. 6
0
        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");
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
                }
        }
Esempio n. 10
0
        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'");
        }
Esempio n. 11
0
        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 'Превед, медвед'");
        }