1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-11-24 08:12:24 +02:00
joplin/packages/pdf-viewer/pdfSource.test.ts
2023-03-09 17:50:56 +00:00

71 lines
2.0 KiB
TypeScript

import PdfDocument from './PdfDocument';
import * as pdfjsLib from 'pdfjs-dist';
import { readFile } from 'fs';
import { resolve } from 'path';
pdfjsLib.GlobalWorkerOptions.workerSrc = require('pdfjs-dist/legacy/build/pdf.worker.entry');
const pdfFilePath1 = resolve('config/welcome.pdf');
function loadFile(filePath: string) {
return new Promise<Uint8Array>((resolve, reject) => {
readFile(filePath, (error, data) => {
if (error) {
reject(error);
} else {
resolve(new Uint8Array((data)));
}
});
});
}
describe('pdfData', () => {
test('should have correct page count', async () => {
const file = await loadFile(pdfFilePath1);
const pdf = new PdfDocument(document);
await pdf.loadDoc(file);
expect(pdf.pageCount).toBe(1);
});
// Disable test because it throws warnings in console
// https://github.com/mozilla/pdf.js/issues/12443
// test('Should throw error on invalid file', async () => {
// const pdf = new PdfDocument(document);
// await expect(async () => {
// await pdf.loadDoc('');
// }).rejects.toThrowError();
// });
test('should get correct page size', async () => {
const file = await loadFile(pdfFilePath1);
const pdf = new PdfDocument(document);
await pdf.loadDoc(file);
const size = await pdf.getPageSize();
expect(size.height).toBeCloseTo(841.91998);
expect(size.width).toBeCloseTo(594.95996);
});
test('should calculate scaled size', async () => {
const file = await loadFile(pdfFilePath1);
const pdf = new PdfDocument(document);
await pdf.loadDoc(file);
const scaledSize = await pdf.getScaledSize(null, 200);
expect(scaledSize.scale).toBeCloseTo(0.336157);
});
test('should get correct active page', async () => {
const file = await loadFile(pdfFilePath1);
const pdf = new PdfDocument(document);
await pdf.loadDoc(file);
const scaledSize = await pdf.getScaledSize(null, 200);
const activePage = pdf.getActivePageNo(scaledSize, 3, 0);
expect(activePage).toBe(1);
const activePage2 = pdf.getActivePageNo(scaledSize, 4, 8000);
expect(activePage2).toBe(1);
});
});