Exemplo n.º 1
0
        public void FileSystemScriptProvider_SuccessfullyStoresDowngradeScripts()
        {
            var upgradeScriptProvider = new FileSystemScriptProvider("FileSystemScripts\\Up", new FileSystemScriptOptions()
            {
                IncludeSubDirectories = true
            });
            var downgradeScriptProvider = new FileSystemScriptProvider("FileSystemScripts\\Down", new FileSystemScriptOptions()
            {
                IncludeSubDirectories = true
            });

            var upgradeEngineBuilder = DeployChanges.To
                                       .SqlDatabase(connectionString)
                                       .WithScripts(upgradeScriptProvider)
                                       .WithDowngradeTableProvider <SqlDowngradeEnabledTableJournal>(downgradeScriptProvider, new DefaultDowngradeScriptFinder())
                                       .LogToNowhere();

            var result = upgradeEngineBuilder.BuildWithDowngrade(true).PerformUpgrade();

            //Assert
            Assert.AreEqual(true, result.Successful);

            Dictionary <string, string> executedScriptsAndDowngradeScripts = GetExecutedScriptsFromDatabase(connectionString);
            var upgradeScripts   = upgradeScriptProvider.GetScripts(null);
            var downgradeScripts = downgradeScriptProvider.GetScripts(null);

            Assert.AreEqual(executedScriptsAndDowngradeScripts.Count, upgradeScripts.Count());

            foreach (var storedDowngradeScript in executedScriptsAndDowngradeScripts.Values.Where(v => !string.IsNullOrEmpty(v)))
            {
                Assert.IsTrue(downgradeScripts.Any(script => script.Contents.Equals(storedDowngradeScript)));
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// </summary>
        /// <param name="directoryPath">Path to SQL upgrade scripts</param>
        /// <param name="options">Different options for the file system script provider</param>
        /// <param name="sqlScriptOptions">The sql script options</param>
        public CustomFileSystemScriptProvider(string directoryPath, CustomFileSystemScriptOptions options, SqlScriptOptions sqlScriptOptions)
        {
            this.options = options ?? throw new ArgumentNullException(nameof(options));
            if (sqlScriptOptions == null)
            {
                throw new ArgumentNullException(nameof(sqlScriptOptions));
            }
            this.directoryPath = directoryPath ?? throw new ArgumentNullException(nameof(directoryPath));

            scriptProvider = new FileSystemScriptProvider(directoryPath, options, sqlScriptOptions);
        }