49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import { PDFDocument, StandardFonts } from 'pdf-lib';
|
||
import { kennzahlenAusPdf, zaehleWoerter } from './vergleich-kennzahlen.util';
|
||
|
||
describe('zaehleWoerter', () => {
|
||
it('zählt nur Wörter mit Buchstaben oder Ziffern', () => {
|
||
// „–“ und „€“ zählen nicht
|
||
expect(zaehleWoerter('Rechnung Nr. 123 – Betrag 4,50 €')).toBe(5);
|
||
});
|
||
|
||
it('ignoriert Seitenmarker von pdf-parse', () => {
|
||
expect(zaehleWoerter('-- 1 of 2 --')).toBeNull();
|
||
});
|
||
|
||
it('liefert null für leeren oder fehlenden Text', () => {
|
||
expect(zaehleWoerter('')).toBeNull();
|
||
expect(zaehleWoerter(null)).toBeNull();
|
||
});
|
||
});
|
||
|
||
describe('kennzahlenAusPdf', () => {
|
||
it('ermittelt Seiten und Wörter eines PDFs mit Textebene', async () => {
|
||
const pdf = await PDFDocument.create();
|
||
const font = await pdf.embedFont(StandardFonts.Helvetica);
|
||
pdf.addPage().drawText('Hallo Welt', { x: 50, y: 700, font, size: 14 });
|
||
pdf.addPage();
|
||
const buffer = Buffer.from(await pdf.save());
|
||
|
||
expect(await kennzahlenAusPdf(buffer)).toEqual({ seiten: 2, woerter: 2 });
|
||
});
|
||
|
||
it('meldet bei PDFs ohne Text die Wortzahl als nicht ermittelbar', async () => {
|
||
const pdf = await PDFDocument.create();
|
||
pdf.addPage();
|
||
const buffer = Buffer.from(await pdf.save());
|
||
|
||
expect(await kennzahlenAusPdf(buffer)).toEqual({
|
||
seiten: 1,
|
||
woerter: null,
|
||
});
|
||
});
|
||
|
||
it('liefert für unlesbare Dateien keine Kennzahlen', async () => {
|
||
expect(await kennzahlenAusPdf(Buffer.from('kaputt'))).toEqual({
|
||
seiten: null,
|
||
woerter: null,
|
||
});
|
||
});
|
||
});
|