All files / app/codeCharta/util loadFilesValidationToErrorDialog.ts

100% Statements 18/18
75% Branches 3/4
100% Functions 11/11
100% Lines 15/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38    105x 11x 11x             12x 11x 11x         12x 11x 1x         11x 11x       1x 1x     105x 12x    
import { CCFileValidationResult } from "./fileValidator"
 
export function loadFilesValidationToErrorDialog(fileValidationResults: CCFileValidationResult[]) {
    const htmlMessages = [...buildErrorMessages(fileValidationResults), ...buildWarningsMessages(fileValidationResults)]
    return {
        title: "Something is wrong with the loaded file(s)",
        message: htmlMessages.join("")
    }
}
 
function buildErrorMessages(fileValidationResults: CCFileValidationResult[]) {
    const filesWithErrors = fileValidationResults.filter(validationResult => validationResult.errors.length > 0)
    return filesWithErrors.length > 0
        ? ["<h2>Errors</h2>", ...filesWithErrors.map(fileWithErrors => buildFileErrorMessage(fileWithErrors))]
        : []
}
 
function buildWarningsMessages(fileValidationResults: CCFileValidationResult[]) {
    const filesWithWarnings = fileValidationResults.filter(validationResult => validationResult.warnings.length > 0)
    return filesWithWarnings.length > 0
        ? ["<h2>Warnings</h2>", ...filesWithWarnings.map(fileWithWarnings => buildFileWarningMessage(fileWithWarnings))]
        : []
}
 
function buildFileErrorMessage(fileValidationResult: CCFileValidationResult) {
    const errorSymbol = '<i class="fa fa-exclamation-circle"></i> '
    return `<p><strong>${fileValidationResult.fileName}:</strong> ${buildHtmlMessage(errorSymbol, fileValidationResult.errors)}</p>`
}
 
function buildFileWarningMessage(fileValidationResult: CCFileValidationResult) {
    const warningSymbol = '<i class="fa fa-exclamation-triangle"></i> '
    return `<p><strong>${fileValidationResult.fileName}:</strong> ${buildHtmlMessage(warningSymbol, fileValidationResult.warnings)}</p>`
}
 
export function buildHtmlMessage(symbol: string, validationResult: string[]) {
    return `<p>${validationResult.map(message => symbol + message).join("<br>")}</p>`
}