public void ScriptProviderHelper_SelectJournal_ShouldAddAllTheScripts()
        {
            var scripts = new List <ScriptBatch>()
            {
                new ScriptBatch(ScriptProviderHelper.GetFolder(GetBasePath(), "SubFolder1"), false, false, 0, Constants.Default.Encoding),
                new ScriptBatch(ScriptProviderHelper.GetFolder(GetBasePath(), "SubFolder2"), false, false, 0, Constants.Default.Encoding),
            };

            var upgradeEngineBuilder = DeployChanges.To
                                       .SqlDatabase("testconn")
                                       .OverrideConnectionFactory(testConnectionFactory)
                                       .LogTo(Logger).Some <UpgradeEngineBuilder, Error>()
                                       .SelectScripts(scripts, NamingOptions.Default);

            upgradeEngineBuilder.MatchSome(x =>
            {
                x.Build().PerformUpgrade();
            });

            var excutedScripts = Logger.GetExecutedScripts();

            excutedScripts.Should().HaveCount(3);
            excutedScripts[0].Should().Be("003.sql");
            excutedScripts[1].Should().Be("004.sql");
            excutedScripts[2].Should().Be("005.sql");
        }
        public void ScriptProviderHelper_GetFolder_ShouldReturnCurrentFolder_IfTheFolderIsNullOrWhiteSpace()
        {
            var current = Directory.GetCurrentDirectory();
            var path    = ScriptProviderHelper.GetFolder(current, null);

            path.Should().Be(current);
        }
        public void ScriptProviderHelper_GetFolder_ShouldReturnOriginalFolder_IfTheFolderIsAFullyQualifiedPath()
        {
            var current = Directory.GetCurrentDirectory();
            var path    = ScriptProviderHelper.GetFolder(current, "d:\\upgrades");

            path.Should().Be("d:\\upgrades");
        }
        public void ScriptProviderHelper_GetSqlScriptOptions_ShouldSetGroupOrderToValidValue()
        {
            var batch   = new ScriptBatch("", runAlways: true, false, 5, "");
            var options = ScriptProviderHelper.GetSqlScriptOptions(batch);

            options.RunGroupOrder.Should().Be(5);
        }
        public void ScriptProviderHelper_GetSqlScriptOptions_ShouldSetScriptTypeToRunAlways_IfRunAlwaysIsSetToTrue()
        {
            var batch   = new ScriptBatch("", runAlways: true, false, 1, "");
            var options = ScriptProviderHelper.GetSqlScriptOptions(batch);

            options.ScriptType.Should().Be(Support.ScriptType.RunAlways);
        }
        public void ScriptProviderHelper_GetFolder_ShouldReturnFullyQualifiedFolder_IfTheFolderIsARelativePath()
        {
            var current = Directory.GetCurrentDirectory();
            var path    = ScriptProviderHelper.GetFolder(current, "upgrades");

            path.Should().Be($"{current}\\upgrades");
        }
Example #7
0
        public void ConfigurationHelper_GetSqlScriptOptions_ShouldSetScriptTypeToRunOnce_IfRunAlwaysIsSetToFalse()
        {
            var batch   = new ScriptBatch("", runAlways: false, false, 1, "");
            var options = ScriptProviderHelper.GetSqlScriptOptions(batch);

            options.ScriptType.Should().Be(Support.ScriptType.RunOnce);
        }
        public void ScriptProviderHelper_GetFolder_ShouldThrowAnException_IfTheBaseFolderIsNullOrWhiteSpace()
        {
            Action nullAction       = () => ScriptProviderHelper.GetFolder(null, null);
            Action whitespaceAction = () => ScriptProviderHelper.GetFolder("   ", null);

            nullAction.Should().Throw <ArgumentException>();
            whitespaceAction.Should().Throw <ArgumentException>();
        }
Example #9
0
        public void CreateFilter_GeneralString_ShouldMatchTheSameStringInTheDifferentLetterCase()
        {
            var filter = ScriptProviderHelper.CreateFilter("script.sql");

            var result = filter("Script.SQL");

            result.Should().BeTrue();
        }
Example #10
0
        public void CreateFilter_RegexString_ShouldMatchTheTestedString(string filterString, string testedString)
        {
            var filter = ScriptProviderHelper.CreateFilter(filterString);

            var result = filter(testedString);

            result.Should().BeTrue();
        }
Example #11
0
        public void CreateFilter_WildcardString_ShouldNotMatchTheTestedString(string filterString, string testedString)
        {
            var filter = ScriptProviderHelper.CreateFilter(filterString);

            var result = filter(testedString);

            result.Should().BeFalse();
        }
Example #12
0
        public void CreateFilter_GeneralString_ShouldNotMatchTheSubstring()
        {
            var filter = ScriptProviderHelper.CreateFilter("script.sql");

            var result = filter("script");

            result.Should().BeFalse();
        }
        public void ScriptProviderHelper_GetFileSystemScriptOptions_ShouldSetIncludeSubDirectoriesToFalse_IfSubFoldersIsSetToFalse()
        {
            var batch = new ScriptBatch("", true, subFolders: false, 5, Constants.Default.Encoding);

            ScriptProviderHelper.GetFileSystemScriptOptions(batch, NamingOptions.Default).Match(
                some: options => options.IncludeSubDirectories.Should().BeFalse(),
                none: error => Assert.Fail(error.Message)
                );
        }
Example #14
0
        public void CreateFilter_NullOrWhiteSpaceString_ShouldReturnNull()
        {
            var filter = ScriptProviderHelper.CreateFilter("  ");

            filter.Should().BeNull();

            filter = ScriptProviderHelper.CreateFilter(null);
            filter.Should().BeNull();
        }
Example #15
0
        public void ScriptProviderHelper_WhenOptionIsSpecified_ShouldReturnValid_Prefix_Option()
        {
            var batch = new ScriptBatch("", true, subFolders: true, 5, Constants.Default.Encoding);

            var naminOptions = new NamingOptions(false, false, "customprefix");

            ScriptProviderHelper.GetFileSystemScriptOptions(batch, naminOptions).Match(
                some: options => options.Prefix.Should().Be("customprefix"),
                none: error => Assert.Fail(error.Message)
                );
        }
Example #16
0
        public void ScriptProviderHelper_WhenOptionIsSpecified_ShouldReturnValid_PrefixScriptNameWithBaseFolderName_Option()
        {
            var batch = new ScriptBatch("", true, subFolders: true, 5, Constants.Default.Encoding);

            var naminOptions = new NamingOptions(false, includeBaseFolderName: true, null);

            ScriptProviderHelper.GetFileSystemScriptOptions(batch, naminOptions).Match(
                some: options => options.PrefixScriptNameWithBaseFolderName.Should().BeTrue(),
                none: error => Assert.Fail(error.Message)
                );
        }
Example #17
0
        public void ScriptNamingScheme_With_UseOnlyFileName_Set_ShoudUseValidScriptName()
        {
            var scripts = new List <ScriptBatch>()
            {
                new ScriptBatch(ScriptProviderHelper.GetFolder(GetBasePath(), "Naming"), false, true, 0, Constants.Default.Encoding)
            };

            var namingOptions = new NamingOptions(useOnlyFileName: true, false, null);

            var upgradeEngineBuilder = DeployChanges.To
                                       .SqlDatabase("testconn")
                                       .OverrideConnectionFactory(testConnectionFactory)
                                       .LogTo(Logger).Some <UpgradeEngineBuilder, Error>()
                                       .SelectScripts(scripts, namingOptions);

            upgradeEngineBuilder.MatchSome(x =>
            {
                x.Build().PerformUpgrade();
            });

            var executedScripts = Logger.GetExecutedScripts();

            executedScripts[0].Should().Be("001.sql");
        }