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]); }); });