- Add document preview caching logic with in-memory and persisted storage. - Implement S3 blobstore functions for managing document previews. - Create rendering functions for PDF and EPUB cover images to JPEG format. - Introduce database schema and functions for managing document preview metadata. - Add unit tests for rendering PDF and EPUB previews.
29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import path from 'path';
|
|
import { readFile } from 'fs/promises';
|
|
import {
|
|
renderEpubCoverToJpeg,
|
|
renderPdfFirstPageToJpeg,
|
|
} from '../../src/lib/server/document-previews-render';
|
|
|
|
test.describe('document-previews-render', () => {
|
|
test('renders first PDF page to JPEG preview', async () => {
|
|
const pdfPath = path.join(process.cwd(), 'tests/files/sample.pdf');
|
|
const bytes = await readFile(pdfPath);
|
|
const rendered = await renderPdfFirstPageToJpeg(bytes, 240);
|
|
|
|
expect(rendered.bytes.byteLength).toBeGreaterThan(1024);
|
|
expect(rendered.width).toBe(240);
|
|
expect(rendered.height).toBeGreaterThan(0);
|
|
});
|
|
|
|
test('extracts EPUB cover and renders to JPEG preview', async () => {
|
|
const epubPath = path.join(process.cwd(), 'tests/files/sample.epub');
|
|
const bytes = await readFile(epubPath);
|
|
const rendered = await renderEpubCoverToJpeg(bytes, 240);
|
|
|
|
expect(rendered.bytes.byteLength).toBeGreaterThan(1024);
|
|
expect(rendered.width).toBe(240);
|
|
expect(rendered.height).toBeGreaterThan(0);
|
|
});
|
|
});
|