@peergrade/react-pdf
Version:
Display PDFs in your React app as easily as if they were images.
87 lines (68 loc) • 1.93 kB
JSX
import React from 'react';
import { shallow } from 'enzyme';
import { pdfjs } from '../../entry.jest';
import { TextLayerItemInternal as TextLayerItem } from '../TextLayerItem';
import { loadPDF } from '../../__tests__/utils';
const pdfFile = loadPDF('./__mocks__/_pdf.pdf');
/* eslint-disable comma-dangle */
describe('TextLayerItem', () => {
// Loaded page
let page;
beforeAll(async () => {
const pdf = await pdfjs.getDocument({ data: pdfFile.arrayBuffer });
page = await pdf.getPage(1);
});
const defaultProps = {
fontName: '',
itemIndex: 0,
str: 'Test',
transform: [],
width: 0,
};
describe('rendering', () => {
it('renders text content properly', () => {
const str = 'Test string';
const component = shallow(
<TextLayerItem
{...defaultProps}
page={page}
str={str}
/>
);
const textItem = component.text();
expect(textItem).toEqual(str);
});
it('calls customTextRenderer with necessary arguments', () => {
const customTextRenderer = jest.fn();
const str = 'Test string';
const itemIndex = 5;
shallow(
<TextLayerItem
{...defaultProps}
customTextRenderer={customTextRenderer}
itemIndex={itemIndex}
page={page}
str={str}
/>
);
expect(customTextRenderer).toBeCalledWith(
expect.objectContaining({
str,
itemIndex,
}),
);
});
it('renders text content properly given customTextRenderer', () => {
const customTextRenderer = () => 'Test value';
const component = shallow(
<TextLayerItem
{...defaultProps}
customTextRenderer={customTextRenderer}
page={page}
/>
);
const textItem = component.text();
expect(textItem).toEqual('Test value');
});
});
});