All files provider.ts

87.5% Statements 7/8
100% Branches 2/2
83.33% Functions 5/6
100% Lines 7/7

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 39 40 41 42 43 44 45 46                          1x           1x     1x                 1x     1x     1x         1x      
import {
  AnalysisResult,
  createProvider,
  ToolName,
  ScanOptions,
} from '@aiready/core';
import { analyzeTestability } from './analyzer';
import { calculateTestabilityScore } from './scoring';
import { TestabilityOptions, TestabilityReport } from './types';
 
/**
 * Testability Tool Provider
 */
export const TestabilityProvider = createProvider({
  id: ToolName.TestabilityIndex,
  alias: ['testability', 'tests', 'verification'],
  version: '0.2.5',
  defaultWeight: 10,
  async analyzeReport(options: ScanOptions) {
    return analyzeTestability(options as TestabilityOptions);
  },
  getResults(report): AnalysisResult[] {
    return report.issues.map((issue) => ({
      fileName: issue.location.file,
      issues: [issue] as any[],
      metrics: {
        testabilityScore: report.summary.score,
      },
    }));
  },
  getSummary(report) {
    return report.summary;
  },
  getMetadata(report) {
    return { rawData: report.rawData };
  },
  score(output) {
    const report = {
      summary: output.summary,
      rawData: (output.metadata as any).rawData,
      recommendations: (output.summary as any).recommendations || [],
    } as unknown as TestabilityReport;
    return calculateTestabilityScore(report);
  },
});