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_GetFolder_ShouldReturnFullyQualifiedFolder_IfTheFolderIsARelativePath()
        {
            var current = Directory.GetCurrentDirectory();
            var path    = ScriptProviderHelper.GetFolder(current, "upgrades");

            path.Should().Be($"{current}\\upgrades");
        }
        public void ScriptProviderHelper_GetFolder_ShouldReturnCurrentFolder_IfTheFolderIsNullOrWhiteSpace()
        {
            var current = Directory.GetCurrentDirectory();
            var path    = ScriptProviderHelper.GetFolder(current, null);

            path.Should().Be(current);
        }
        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_ShouldThrowAnException_IfTheBaseFolderIsNullOrWhiteSpace()
        {
            Action nullAction       = () => ScriptProviderHelper.GetFolder(null, null);
            Action whitespaceAction = () => ScriptProviderHelper.GetFolder("   ", null);

            nullAction.Should().Throw <ArgumentException>();
            whitespaceAction.Should().Throw <ArgumentException>();
        }
        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");
        }