@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
JavaScript
;
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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