Assessor_2.0/tests/importers/csv-importer.test.ts

28 lines
1.1 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { detectDelimiter, parseCsv, parseCsvLexically } from '../../src/importers/csv-importer';
describe('CSV importer', () => {
it('parses quoted CSV cells and line breaks', () => {
expect(parseCsv('Name;Text\nA;"eins;zwei"\nB;"mehr\nzeilig"', ';')).toEqual([
['Name', 'Text'],
['A', 'eins;zwei'],
['B', 'mehr\nzeilig']
]);
expect(parseCsvLexically('Name;Text\nA;"mehr\nzeilig"\n\nB;Wert', ';').rowStartLines).toEqual([1, 2, 5]);
});
it('detects a semicolon delimiter', () => {
expect(detectDelimiter('Name;Severity;Weight\nA;High;10\nB;Low;2')).toBe(';');
});
it('ignores empty input and blank rows without creating records', () => {
expect(parseCsv('', ';')).toEqual([]);
expect(parseCsv('\r\n\r\n', ';')).toEqual([]);
expect(parseCsv('Name;Severity\n\nFinding;High\n', ';')).toEqual([
['Name', 'Severity'],
['Finding', 'High']
]);
expect(parseCsvLexically('Name;Text\nA;"mehr\nzeilig"\n\nB;Wert', ';').rowStartLines).toEqual([1, 2, 5]);
});
});