test(pdf-viewer): consolidate spec.ts into test.ts — absorb page-counter test, delete spec
Absorbs the three tests from PdfViewer.svelte.spec.ts (nav buttons, zoom controls, page counter) into the loaded-state describe in test.ts, then deletes the now-empty spec file. One spec file per component. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,56 +0,0 @@
|
|||||||
import { vi, describe, it, expect, afterEach } from 'vitest';
|
|
||||||
import { cleanup, render } from 'vitest-browser-svelte';
|
|
||||||
import { page } from 'vitest/browser';
|
|
||||||
import type { LibLoader } from '$lib/document/viewer/usePdfRenderer.svelte';
|
|
||||||
import PdfViewer from './PdfViewer.svelte';
|
|
||||||
|
|
||||||
afterEach(cleanup);
|
|
||||||
|
|
||||||
function makeFakePdfjsLib() {
|
|
||||||
class TextLayerMock {
|
|
||||||
render() {
|
|
||||||
return Promise.resolve();
|
|
||||||
}
|
|
||||||
cancel() {}
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
GlobalWorkerOptions: { workerSrc: '' },
|
|
||||||
getDocument: vi.fn().mockReturnValue({
|
|
||||||
promise: Promise.resolve({
|
|
||||||
numPages: 2,
|
|
||||||
getPage: vi.fn().mockResolvedValue({
|
|
||||||
getViewport: vi.fn().mockReturnValue({ width: 595, height: 842 }),
|
|
||||||
render: vi.fn().mockReturnValue({ promise: Promise.resolve() }),
|
|
||||||
streamTextContent: vi.fn().mockReturnValue(new ReadableStream())
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
TextLayer: TextLayerMock
|
|
||||||
} as unknown as typeof import('pdfjs-dist');
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeFakeLibLoader(): LibLoader {
|
|
||||||
const fakePdfjs = makeFakePdfjsLib();
|
|
||||||
return vi.fn().mockResolvedValue([fakePdfjs, { default: '' }] as const);
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('PdfViewer', () => {
|
|
||||||
it('shows previous and next page navigation buttons', async () => {
|
|
||||||
render(PdfViewer, { url: '/api/documents/test-id/file', libLoader: makeFakeLibLoader() });
|
|
||||||
await expect.element(page.getByRole('button', { name: /zurück/i })).toBeInTheDocument();
|
|
||||||
await expect.element(page.getByRole('button', { name: /weiter/i })).toBeInTheDocument();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('shows zoom controls', async () => {
|
|
||||||
render(PdfViewer, { url: '/api/documents/test-id/file', libLoader: makeFakeLibLoader() });
|
|
||||||
await expect.element(page.getByRole('button', { name: /vergrößern/i })).toBeInTheDocument();
|
|
||||||
await expect.element(page.getByRole('button', { name: /verkleinern/i })).toBeInTheDocument();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('displays the page counter once the PDF has loaded', async () => {
|
|
||||||
render(PdfViewer, { url: '/api/documents/test-id/file', libLoader: makeFakeLibLoader() });
|
|
||||||
// Fake loader resolves synchronously, so "1 / 2" should appear quickly
|
|
||||||
await expect.element(page.getByText(/1\s*\/\s*2/)).toBeInTheDocument();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user