import { describe, expect, it } from 'vitest' import { diffSummary, wordDiff } from '@/lib/diff' describe('Wortdiff', () => { it('setzt den ursprünglichen Text verlustfrei wieder zusammen', () => { const vorher = 'Der Zeuge sagte am Montag aus.' const nachher = 'Der Zeuge sagte am Dienstag erneut aus.' const teile = wordDiff(vorher, nachher) const rekonstruiertVorher = teile .filter((t) => t.kind !== 'neu') .map((t) => t.text) .join('') const rekonstruiertNachher = teile .filter((t) => t.kind !== 'entfernt') .map((t) => t.text) .join('') expect(rekonstruiertVorher).toBe(vorher) expect(rekonstruiertNachher).toBe(nachher) }) it('markiert nur die geänderten Wörter', () => { const teile = wordDiff('a b c', 'a x c') expect(teile.find((t) => t.kind === 'entfernt')?.text.trim()).toBe('b') expect(teile.find((t) => t.kind === 'neu')?.text.trim()).toBe('x') }) it('kommt mit leeren Fassungen zurecht', () => { expect(wordDiff('', 'neu').every((t) => t.kind === 'neu')).toBe(true) expect(wordDiff('weg', '').every((t) => t.kind === 'entfernt')).toBe(true) expect(wordDiff('', '')).toEqual([]) }) it('meldet bei unverändertem Text keine Änderung', () => { expect(diffSummary('gleich', 'gleich')).toEqual({ entfernt: 0, neu: 0 }) }) })