diff --git a/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts b/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts index cfcd496c..b9ada1c5 100644 --- a/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts +++ b/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest'; +import { describe, it, expect, vi } from 'vitest'; import { createPdfRenderer } from './usePdfRenderer.svelte'; // Note: init() and loadDocument() require pdfjsLib (browser module). @@ -173,4 +173,17 @@ describe('createPdfRenderer', () => { r.goToPage(1); expect(r.currentPage).toBe(1); }); + + it('calls injected libLoader during init and sets pdfjsReady', async () => { + const fakePdfjs = { + GlobalWorkerOptions: { workerSrc: '' }, + getDocument: vi.fn(), + TextLayer: class {} + } as unknown as typeof import('pdfjs-dist'); + const fakeLoader = vi.fn().mockResolvedValue([fakePdfjs, { default: '' }] as const); + const r = createPdfRenderer(fakeLoader); + await r.init(); + expect(fakeLoader).toHaveBeenCalledOnce(); + expect(r.pdfjsReady).toBe(true); + }); }); diff --git a/frontend/src/lib/document/viewer/usePdfRenderer.svelte.ts b/frontend/src/lib/document/viewer/usePdfRenderer.svelte.ts index e7242a0c..c8e7d853 100644 --- a/frontend/src/lib/document/viewer/usePdfRenderer.svelte.ts +++ b/frontend/src/lib/document/viewer/usePdfRenderer.svelte.ts @@ -1,6 +1,11 @@ import type { PDFDocumentProxy, RenderTask } from 'pdfjs-dist'; -export function createPdfRenderer() { +type LibLoader = () => Promise; + +const defaultLibLoader: LibLoader = () => + Promise.all([import('pdfjs-dist'), import('pdfjs-dist/build/pdf.worker.min.mjs?url')]); + +export function createPdfRenderer(libLoader: LibLoader = defaultLibLoader) { // Reactive state — exposed via getters let currentPage = $state(1); let totalPages = $state(0); @@ -18,10 +23,7 @@ export function createPdfRenderer() { let pdfjsLib: typeof import('pdfjs-dist') | null = null; async function init(): Promise { - const [lib, { default: workerUrl }] = await Promise.all([ - import('pdfjs-dist'), - import('pdfjs-dist/build/pdf.worker.min.mjs?url') - ]); + const [lib, { default: workerUrl }] = await libLoader(); lib.GlobalWorkerOptions.workerSrc = workerUrl; pdfjsLib = lib; pdfjsReady = true;