react-pdf
Version:
Display PDFs in your React app as easily as if they were images.
83 lines (63 loc) • 1.91 kB
JSX
import React from 'react';
import { shallow, mount } from 'enzyme';
import pdfjs from 'pdfjs-dist';
import {} from '../entry.noworker';
import OutlineItem from '../OutlineItem';
import { loadPDF, makeAsyncCallback } from './utils';
const { PDFJS } = pdfjs;
const { arrayBuffer: fileArrayBuffer } = loadPDF('./__mocks__/_pdf.pdf');
/* eslint-disable comma-dangle */
describe('OutlineItem', () => {
// Loaded PDF file
let pdf;
// Object with basic loaded outline item information
let outlineItem = null;
beforeAll(async () => {
pdf = await PDFJS.getDocument({ data: fileArrayBuffer });
const outlineItems = await pdf.getOutline();
[outlineItem] = outlineItems;
});
describe('rendering', () => {
it('renders an item properly', () => {
const component = shallow(
<OutlineItem item={outlineItem} />,
{
context: {
pdf,
}
}
);
const title = component.find('a').first();
expect(title.text()).toBe(outlineItem.title);
});
it('renders item\'s subitems properly', () => {
const component = mount(
<OutlineItem item={outlineItem} />,
{
context: {
pdf,
}
}
);
const subitems = component.children().find('OutlineItem');
expect(subitems).toHaveLength(outlineItem.items.length);
});
it('calls onClick with proper arguments when clicked a link', () => {
const { func: onClick, promise: onClickPromise } = makeAsyncCallback();
const component = mount(
<OutlineItem item={outlineItem} />,
{
context: {
onClick,
pdf,
}
}
);
const title = component.find('a').first();
title.simulate('click');
return onClickPromise.then(() => {
expect(onClick).toHaveBeenCalled();
});
});
});
});