Files
paperlessmanager/paperless-backend/src/paperless/vergleich-kennzahlen.util.spec.ts
T

49 lines
1.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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,
});
});
});