test(viewer): more usePdfRenderer state coverage

Mixed zoomIn/zoomOut return-to-start, zoomOut at floor no-op,
init() resolves and sets pdfjsReady, loadDocument with bogus URL
sets error and flips loading off.

4 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 05:50:10 +02:00
committed by marcel
parent a2d432be49
commit b38d555791

View File

@@ -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);
});
});