From 7c1c925d6b914c3114ab94ca6682dbf10ece557a Mon Sep 17 00:00:00 2001 From: Wojciech Maj Date: Thu, 17 Nov 2022 12:21:10 +0100 Subject: [PATCH] Improve TextLayer unit tests --- src/Page/TextLayer.spec.jsx | 63 +++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/src/Page/TextLayer.spec.jsx b/src/Page/TextLayer.spec.jsx index cd79f5802..b68e02ffb 100644 --- a/src/Page/TextLayer.spec.jsx +++ b/src/Page/TextLayer.spec.jsx @@ -98,13 +98,69 @@ 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( + , + ); + + 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( + , + ); + + expect.assertions(1); + + await onRenderTextLayerSuccessPromise; + + const innerHTML = container.firstChild.innerHTML; + + const { func: onRenderTextLayerSuccess2, promise: onRenderTextLayerSuccessPromise2 } = + makeAsyncCallback(); + + const customTextRenderer = (item) => item.str; + + rerender( + , + ); + + 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( { />, ); - 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({