diff --git a/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts b/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts index 904d5fcb..19861751 100644 --- a/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts +++ b/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts @@ -103,4 +103,38 @@ describe('createPdfRenderer', () => { r.zoomIn(); expect(r.scale).toBeCloseTo(2.25); }); + + it('mixed zoom in then zoom out lands back at start', () => { + const r = createPdfRenderer(); + r.zoomIn(); + r.zoomIn(); + r.zoomOut(); + r.zoomOut(); + expect(r.scale).toBeCloseTo(1.5); + }); + + it('zoomOut at the floor does nothing', () => { + const r = createPdfRenderer(); + // Force scale down to 0.5 + for (let i = 0; i < 20; i++) r.zoomOut(); + const before = r.scale; + r.zoomOut(); + expect(r.scale).toBe(before); + }); + + it('init() is callable and resolves without throwing in browser env', async () => { + const r = createPdfRenderer(); + await expect(r.init()).resolves.toBeUndefined(); + // pdfjsReady is now true + expect(r.pdfjsReady).toBe(true); + }); + + it('after init, loadDocument with a bogus URL sets error', async () => { + const r = createPdfRenderer(); + await r.init(); + + await r.loadDocument('about:invalid-pdf'); + // Either error is set or loading flips back to false — both are acceptable + expect(r.loading).toBe(false); + }); });