@salesforce/plugin-apex
Version:
101 lines • 4.53 kB
JavaScript
export class JsonReporter {
format(result, includeCategory = false) {
const returnObject = {
summary: {
// result.summary contains more information than we want to return, so we'll specify each key we want to return instead of using ...
failRate: result.summary.failRate,
failing: result.summary.failing,
hostname: result.summary.hostname,
orgId: result.summary.orgId,
outcome: result.summary.outcome,
passRate: result.summary.passRate,
passing: result.summary.passing,
skipped: result.summary.skipped,
testRunId: result.summary.testRunId,
testStartTime: result.summary.testStartTime,
testsRan: result.summary.testsRan,
userId: result.summary.userId,
username: result.summary.username,
commandTime: `${result.summary.commandTimeInMs} ms`,
testExecutionTime: `${result.summary.testExecutionTimeInMs} ms`,
testTotalTime: `${result.summary.testTotalTimeInMs} ms`,
},
tests: result.tests.map((test) => ({
Id: test.id,
QueueItemId: test.queueItemId,
StackTrace: test.stackTrace,
Message: test.message,
AsyncApexJobId: test.asyncApexJobId,
MethodName: test.methodName,
Outcome: test.outcome,
ApexClass: {
Id: test.apexClass.id,
Name: test.apexClass.name,
NamespacePrefix: test.apexClass.namespacePrefix,
},
RunTime: test.runTime,
FullName: test.fullName,
...(includeCategory ? { Category: test.category } : {}),
})),
...(result.codecoverage
? {
coverage: this.formatCoverage(result),
}
: {}),
};
if (result.summary.orgWideCoverage) {
returnObject.summary.orgWideCoverage = result.summary.orgWideCoverage;
}
if (result.summary.testRunCoverage) {
returnObject.summary.testRunCoverage = result.summary.testRunCoverage;
}
return returnObject;
}
// eslint-disable-next-line class-methods-use-this
formatCoverage(testResult) {
const formattedCov = {
coverage: [],
records: [],
summary: {
totalLines: testResult.summary.totalLines,
coveredLines: testResult.summary.coveredLines,
orgWideCoverage: testResult.summary.orgWideCoverage,
testRunCoverage: testResult.summary.testRunCoverage,
},
};
if (testResult.codecoverage) {
formattedCov.coverage = testResult.codecoverage.map((cov) => {
const lines = {};
cov.coveredLines.forEach((covLine) => (lines[covLine] = 1));
cov.uncoveredLines.forEach((uncovLine) => (lines[uncovLine] = 0));
return {
id: cov.apexId,
name: cov.name,
totalLines: cov.numLinesCovered + cov.numLinesUncovered,
lines,
totalCovered: cov.numLinesCovered,
coveredPercent: parseInt(cov.percentage, 10),
};
});
testResult.tests.forEach((test) => {
if (test.perClassCoverage) {
test.perClassCoverage.forEach((perClassCov) => {
formattedCov.records.push({
ApexTestClass: { Id: test.id, Name: test.apexClass.name },
...(perClassCov.coverage ? { Coverage: perClassCov.coverage } : {}),
TestMethodName: test.methodName,
NumLinesCovered: perClassCov.numLinesCovered,
ApexClassOrTrigger: {
Id: perClassCov.apexClassOrTriggerId,
Name: perClassCov.apexClassOrTriggerName,
},
NumLinesUncovered: perClassCov.numLinesUncovered,
});
});
}
});
}
return formattedCov;
}
}
//# sourceMappingURL=jsonReporter.js.map