Skip to content

Commit

Permalink
Improve TextLayer unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
wojtekmaj committed Nov 17, 2022
1 parent afdc586 commit 7c1c925
Showing 1 changed file with 61 additions and 2 deletions.
63 changes: 61 additions & 2 deletions src/Page/TextLayer.spec.jsx
Expand Up @@ -98,24 +98,83 @@ describe('TextLayer', () => {
expect(textItems).toHaveLength(desiredTextItems.length + 1);
});

it('renders text content properly given customTextRenderer', async () => {
const { func: onRenderTextLayerSuccess, promise: onRenderTextLayerSuccessPromise } =
makeAsyncCallback();

const customTextRenderer = jest.fn();

const { container } = render(
<TextLayer
customTextRenderer={customTextRenderer}
onRenderTextLayerSuccess={onRenderTextLayerSuccess}
page={page}
/>,
);

expect.assertions(1);

await onRenderTextLayerSuccessPromise;

const textItems = [...container.firstChild.children];
expect(textItems).toHaveLength(desiredTextItems.length + 1);
});

it('maps textContent items to actual TextLayer children properly', async () => {
const { func: onRenderTextLayerSuccess, promise: onRenderTextLayerSuccessPromise } =
makeAsyncCallback();

const { container, rerender } = render(
<TextLayer onRenderTextLayerSuccess={onRenderTextLayerSuccess} page={page} />,
);

expect.assertions(1);

await onRenderTextLayerSuccessPromise;

const innerHTML = container.firstChild.innerHTML;

const { func: onRenderTextLayerSuccess2, promise: onRenderTextLayerSuccessPromise2 } =
makeAsyncCallback();

const customTextRenderer = (item) => item.str;

rerender(
<TextLayer
customTextRenderer={customTextRenderer}
onRenderTextLayerSuccess={onRenderTextLayerSuccess2}
page={page}
/>,
);

await onRenderTextLayerSuccessPromise2;

const innerHTML2 = container.firstChild.innerHTML;

expect(innerHTML).toEqual(innerHTML2);
});

it('calls customTextRenderer with necessary arguments', async () => {
const { func: onRenderTextLayerSuccess, promise: onRenderTextLayerSuccessPromise } =
makeAsyncCallback();

const customTextRenderer = jest.fn();

render(
const { container } = render(
<TextLayer
customTextRenderer={customTextRenderer}
onRenderTextLayerSuccess={onRenderTextLayerSuccess}
page={page}
/>,
);

expect.assertions(2);
expect.assertions(3);

await onRenderTextLayerSuccessPromise;

const textItems = [...container.firstChild.children];
expect(textItems).toHaveLength(desiredTextItems.length + 1);

expect(customTextRenderer).toHaveBeenCalledTimes(desiredTextItems.length);
expect(customTextRenderer).toHaveBeenCalledWith(
expect.objectContaining({
Expand Down

0 comments on commit 7c1c925

Please sign in to comment.