예제 #1
0
        public void AssertMatchRepeatableFilesWithDBExecuted_ForRunAgainAfterRepetableFilesChanged(string testName, ProjectConfigItem projectConfig, DataTable dbScriptsExecutionHistoryFilesTable)
        {
            string[] arrAllRepeatableScriptFiles = Directory.GetFiles(projectConfig.RepeatableScriptsFolderPath, $"{_repeatableScriptFileType.Prefix}*.sql", SearchOption.AllDirectories);

            foreach (string scriptFile in arrAllRepeatableScriptFiles)
            {
                FileInfo fiScriptFile = new FileInfo(scriptFile);

                List <DataRow> executedScriptRows = dbScriptsExecutionHistoryFilesTable.Rows.Cast <DataRow>().Where(row => Convert.ToString(row["Filename"]) == fiScriptFile.Name).ToList();


                if (fiScriptFile.Name == "rptScript_0001_DataForLookupTable1.sql")
                {
                    Assert.That(executedScriptRows.Count, Is.EqualTo(2), $"{testName} >>> The file '{fiScriptFile.Name}' exsit in the db '{executedScriptRows.Count}' times, should be 2 times.");

                    string  computedFileHash = _fileChecksum.GetHashByFilePath(fiScriptFile.FullName);
                    DataRow firstInstance    = executedScriptRows[0];
                    Assert.That(firstInstance["ComputedFileHash"].ToString() != computedFileHash);

                    DataRow secondInstance = executedScriptRows[1];
                    AssertScriptFileAndDBRowHasSameHash(testName, fiScriptFile, secondInstance);
                }
                else
                {
                    Assert.That(executedScriptRows.Count, Is.EqualTo(1), $"{testName} >>> The file '{fiScriptFile.Name}' exsit in the db '{executedScriptRows.Count}' times, should be 1 time.");

                    DataRow executedScriptRow = executedScriptRows.First();
                    AssertScriptFileAndDBRowHasSameHash(testName, fiScriptFile, executedScriptRow);
                }
            }
        }
예제 #2
0
        protected void LoadScriptFilesList()
        {
            List <RuntimeScriptFile> newScriptFilesList = new List <RuntimeScriptFile>();

            if (Directory.Exists(FolderPath))
            {
                string[] arrAllScriptFiles = Directory.GetFiles(FolderPath, $"{ScriptFileType.Prefix}*.sql", SearchOption.TopDirectoryOnly);

                foreach (string fileFullPath in arrAllScriptFiles)
                {
                    RuntimeScriptFile currScriptFile = new RuntimeScriptFile(ScriptFileType, FolderPath, fileFullPath);

                    string computedFileHash = _fileChecksum.GetHashByFilePath(fileFullPath);
                    currScriptFile.ComputedHash         = computedFileHash;
                    currScriptFile.ComputedHashDateTime = DateTime.Now;

                    newScriptFilesList.Add(currScriptFile);
                }
            }

            ScriptFilesList = newScriptFilesList.OrderBy(e => e.SortKey).ToList();
        }