41 lines
1.6 KiB
TypeScript
41 lines
1.6 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
import {
|
|
ENCRYPTED_PDF_MESSAGE,
|
|
TextOverlayError,
|
|
classifyPdfError,
|
|
pdfLoadErrorMessage,
|
|
pdfProcessingErrorMessage
|
|
} from '../../src/lib/pdf-errors';
|
|
|
|
const encryptedError = () =>
|
|
new Error(
|
|
'Input document to `PDFDocument.load` is encrypted. You can use `PDFDocument.load(..., { ignoreEncryption: true })`'
|
|
);
|
|
|
|
test('overlay failures keep their own copy', () => {
|
|
const error = new TextOverlayError('Der Text ist zu lang.');
|
|
|
|
expect(classifyPdfError(error)).toBe('text-overlay');
|
|
expect(pdfProcessingErrorMessage(error, 'Fallback')).toBe('Der Text ist zu lang.');
|
|
expect(pdfLoadErrorMessage(error)).toBe('Der Text ist zu lang.');
|
|
});
|
|
|
|
test('encrypted PDFs map to the shared password hint', () => {
|
|
expect(classifyPdfError(encryptedError())).toBe('encrypted');
|
|
expect(pdfProcessingErrorMessage(encryptedError(), 'Fallback')).toBe(ENCRYPTED_PDF_MESSAGE);
|
|
expect(pdfLoadErrorMessage(encryptedError())).toBe(ENCRYPTED_PDF_MESSAGE);
|
|
});
|
|
|
|
test('unknown failures fall back to the caller copy', () => {
|
|
const error = new Error('Invalid PDF structure');
|
|
|
|
expect(classifyPdfError(error)).toBe('unknown');
|
|
expect(pdfProcessingErrorMessage(error, 'Fehler beim Drehen der Seiten.')).toBe(
|
|
'Fehler beim Drehen der Seiten.'
|
|
);
|
|
expect(pdfLoadErrorMessage(error, 'Eigene Meldung.')).toBe('Eigene Meldung.');
|
|
expect(pdfLoadErrorMessage(error)).toContain('PDF konnte nicht geladen werden');
|
|
// Tool-specific copy must never be overridden by the classification.
|
|
expect(pdfProcessingErrorMessage('boom', 'Eigene Meldung.')).toBe('Eigene Meldung.');
|
|
});
|