test(viewer): expand usePdfRenderer state coverage

Adds renderCurrentPage no-op when pdfjsLib uninitialized, prerender
no-op when pdfDoc null, destroy safe without document, setElements
no-throw, isLoaded false initially, accumulating zoomIn calls.

7 new tests covering ~10 branches.

Refs #496.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-05-10 04:30:39 +02:00
parent 0a6c9ade0c
commit 335dead3b5

View File

@@ -66,4 +66,41 @@ describe('createPdfRenderer', () => {
expect(r.error).toBeNull();
expect(r.loading).toBe(false);
});
it('renderCurrentPage is a no-op when pdfjsLib is not initialized', async () => {
const r = createPdfRenderer();
// Should not throw — early-return branch
await expect(r.renderCurrentPage()).resolves.toBeUndefined();
});
it('prerender is a no-op when pdfDoc is null', async () => {
const r = createPdfRenderer();
await expect(r.prerender()).resolves.toBeUndefined();
});
it('destroy is safe to call when no document is loaded', () => {
const r = createPdfRenderer();
expect(() => r.destroy()).not.toThrow();
});
it('setElements stores canvas and text layer refs', () => {
const r = createPdfRenderer();
const canvas = document.createElement('canvas');
const textLayer = document.createElement('div');
expect(() => r.setElements(canvas, textLayer)).not.toThrow();
});
it('isLoaded reflects totalPages > 0', () => {
const r = createPdfRenderer();
// Initial state — totalPages=0 → not loaded
expect(r.isLoaded).toBe(false);
});
it('multiple zoomIn calls accumulate', () => {
const r = createPdfRenderer();
r.zoomIn();
r.zoomIn();
r.zoomIn();
expect(r.scale).toBeCloseTo(2.25);
});
});