UNPKG

@salesforce/plugin-apex

Version:
101 lines 4.53 kB
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