UNPKG

@flxbl-io/sfp

Version:

sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model

123 lines 11.3 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TestReportDisplayer = void 0; const TestOptions_1 = require("./TestOptions"); const sfp_logger_1 = __importStar(require("@flxbl-io/sfp-logger")); const TableConstants_1 = require("../display/TableConstants"); const Table = require('cli-table'); class TestReportDisplayer { constructor(apexTestReport, testOptions, fileLogger) { this.apexTestReport = apexTestReport; this.testOptions = testOptions; this.fileLogger = fileLogger; } printTestSummary(packageCoverage) { let apexTestReport = { ...this.apexTestReport }; sfp_logger_1.default.log('\n\n\n=== Test Summary', sfp_logger_1.LoggerLevel.INFO, this.fileLogger); let table = new Table({ head: ['Name', 'Value'], chars: TableConstants_1.ZERO_BORDER_TABLE }); if (this.testOptions instanceof TestOptions_1.RunAllTestsInPackageOptions || this.testOptions instanceof TestOptions_1.RunApexTestSuitesOption || this.testOptions instanceof TestOptions_1.RunAllTestsInPackageOptions) { delete apexTestReport.summary.testRunCoverage; delete apexTestReport.summary.orgWideCoverage; if (this.testOptions instanceof TestOptions_1.RunAllTestsInPackageOptions) apexTestReport.summary.packageCoverage = packageCoverage; } Object.entries(apexTestReport.summary).forEach((keyValuePair) => { keyValuePair[1] = keyValuePair[1] || ''; table.push(keyValuePair); }); sfp_logger_1.default.log(table.toString(), sfp_logger_1.LoggerLevel.INFO, this.fileLogger); return table.toString(); } printTestResults() { sfp_logger_1.default.log('=== Test Results', sfp_logger_1.LoggerLevel.INFO, this.fileLogger); let table = new Table({ head: ['Test Name', 'Outcome', 'Message', 'Runtime (ms)'], chars: TableConstants_1.ZERO_BORDER_TABLE }); this.apexTestReport.tests.forEach((test) => { if (test.Outcome === 'Pass') { table.push([ (0, sfp_logger_1.COLOR_SUCCESS)(test.FullName || ''), (0, sfp_logger_1.COLOR_SUCCESS)(test.Outcome), (0, sfp_logger_1.COLOR_SUCCESS)(test.Message || ''), (0, sfp_logger_1.COLOR_SUCCESS)(test.RunTime || ''), ]); } else { table.push([ (0, sfp_logger_1.COLOR_ERROR)(test.FullName || ''), (0, sfp_logger_1.COLOR_ERROR)(test.Outcome || ''), (0, sfp_logger_1.COLOR_ERROR)(test.Message || ''), (0, sfp_logger_1.COLOR_ERROR)(test.RunTime || ''), ]); } }); sfp_logger_1.default.log(table.toString(), sfp_logger_1.LoggerLevel.INFO, this.fileLogger); return table.toString(); } printCoverageReport(coverageThreshold, classesCovered, classesWithInvalidCoverage) { sfp_logger_1.default.log('\n\n=== Test Coverage', sfp_logger_1.LoggerLevel.INFO, this.fileLogger); let classesCoveredTable; if (classesCovered) { classesCoveredTable = this.printIndividualClassCoverage(classesCovered); } if (classesWithInvalidCoverage) { let classInvalidCoverageTable = this.printClassesWithInvalidCoverage(classesWithInvalidCoverage, coverageThreshold); return { classesCoveredTable, classInvalidCoverageTable }; } else return { classesCoveredTable }; } printClassesWithInvalidCoverage(classesWithInvalidCoverage, coverageThreshold) { sfp_logger_1.default.log(`The following classes do not satisfy the ${coverageThreshold}% code coverage requirement:`, sfp_logger_1.LoggerLevel.INFO, this.fileLogger); return this.printIndividualClassCoverage(classesWithInvalidCoverage); } printIndividualClassCoverage(individualClassCoverage) { let table = new Table({ head: ['Class', 'Coverage Percent'], chars: TableConstants_1.ZERO_BORDER_TABLE }); individualClassCoverage.forEach((cls) => { if (cls.coveredPercent !== null && cls.coveredPercent < 75) { table.push([(0, sfp_logger_1.COLOR_ERROR)(cls.name || ''), (0, sfp_logger_1.COLOR_ERROR)(cls.coveredPercent)]); } else if (cls.coveredPercent !== null && cls.coveredPercent >= 75) { table.push([(0, sfp_logger_1.COLOR_SUCCESS)(cls.name || ''), (0, sfp_logger_1.COLOR_SUCCESS)(cls.coveredPercent)]); } else table.push([cls.name || '', 'N/A']); }); sfp_logger_1.default.log(table.toString(), sfp_logger_1.LoggerLevel.INFO, this.fileLogger); return table.toString(); } } exports.TestReportDisplayer = TestReportDisplayer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVzdFJlcG9ydERpc3BsYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2FwZXh0ZXN0L1Rlc3RSZXBvcnREaXNwbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBa0c7QUFDbEcsbUVBQTBGO0FBQzFGLDhEQUE4RDtBQUU5RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFbkMsTUFBYSxtQkFBbUI7SUFDNUIsWUFBb0IsY0FBbUIsRUFBVSxXQUF3QixFQUFVLFVBQWdCO1FBQS9FLG1CQUFjLEdBQWQsY0FBYyxDQUFLO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFNO0lBQUcsQ0FBQztJQUVoRyxnQkFBZ0IsQ0FBQyxlQUF3QjtRQUM1QyxJQUFJLGNBQWMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hELG9CQUFTLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLHdCQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRSxJQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQztZQUNsQixJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO1lBQ3ZCLEtBQUssRUFBRSxrQ0FBaUI7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsSUFDSSxJQUFJLENBQUMsV0FBVyxZQUFZLHlDQUEyQjtZQUN2RCxJQUFJLENBQUMsV0FBVyxZQUFZLHFDQUF1QjtZQUNuRCxJQUFJLENBQUMsV0FBVyxZQUFZLHlDQUEyQixFQUN6RCxDQUFDO1lBQ0MsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUM5QyxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBRTlDLElBQUksSUFBSSxDQUFD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