Assessor_2.0/tests/recognition/source-recognition.test.ts

41 lines
1.7 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { parseCsvDocument } from '../../src/importers/csv-importer';
import { recognizeImportDocument } from '../../src/recognition/recognition-engine';
import { sourceMetadata } from '../importers/import-source-fixtures';
describe('source recognition', () => {
it('recognizes Purple Knight from independent filename, schema and value signals', () => {
const text = [
'Name;Short Name;SI Version;Severity;Weight;Category;Result',
'Synthetic indicator;SYN-001;1;High;10;Identity;IOEs found'
].join('\n');
const document = parseCsvDocument(sourceMetadata('PurpleKnight-results.csv', text.length), text);
const recognition = recognizeImportDocument(document);
expect(recognition.source.selected).toMatchObject({
toolId: 'purple-knight',
toolName: 'PurpleKnight',
confidence: { level: 'high' }
});
expect(recognition.source.selected.evidence.length).toBeGreaterThanOrEqual(3);
expect(recognition.source.selected.confidence.reasons).toEqual(
expect.arrayContaining([expect.stringContaining('Dateiname')])
);
});
it('uses the unknown fallback when no tool signal reaches the minimum confidence', () => {
const text = 'Alpha;Beta\none;two';
const document = parseCsvDocument(sourceMetadata('table.csv', text.length), text);
const recognition = recognizeImportDocument(document);
expect(recognition.source).toMatchObject({
decisionSource: 'fallback',
requiresConfirmation: false,
selected: { toolId: 'unknown', confidence: { level: 'unknown', score: 0 } }
});
expect(recognition.fields.every(field => field.appliedRole === 'additional')).toBe(true);
});
});