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); } } }
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(); }