From 8f98f8a0fb030a857f477101846fe2f844f745da Mon Sep 17 00:00:00 2001 From: "Jules Sam. Randolph" Date: Wed, 3 Nov 2021 13:18:06 -0300 Subject: [PATCH] test: add regression test against #533 --- .../render-html/src/__mocks__/react-native.js | 38 ++++++++++--------- .../__tests__/component.render-html.test.tsx | 5 +++ 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/packages/render-html/src/__mocks__/react-native.js b/packages/render-html/src/__mocks__/react-native.js index c9cad60dc..10514a3f3 100644 --- a/packages/render-html/src/__mocks__/react-native.js +++ b/packages/render-html/src/__mocks__/react-native.js @@ -2,6 +2,25 @@ import { Image as RNImage } from 'react-native'; export * from 'react-native'; +function getSizeWithHeaders(uri, headers, success, failure) { + setTimeout(() => { + let dimensions = [0, 0]; + if (typeof uri === 'string') { + if (uri === 'error') { + failure?.apply(null, new Error('Could not fetch image dimensions')); + return; + } + const match = /(\d+)x(\d+)/gi.exec(uri); + if (!match) { + dimensions = [640, 360]; + } else { + dimensions = [parseInt(match[1], 10), parseInt(match[2], 10)]; + } + } + success.apply(null, dimensions); + }, 50); +} + export class Image extends RNImage { /** * This mock function will parse the uri to find a dimension pattern @@ -13,26 +32,11 @@ export class Image extends RNImage { * be extracted, it will use 640x360. */ static getSizeWithHeaders(uri, headers, success, failure) { - setTimeout(() => { - let dimensions = [0, 0]; - if (typeof uri === 'string') { - if (uri === 'error') { - failure?.apply(null, new Error('Could not fetch image dimensions')); - return; - } - const match = /(\d+)x(\d+)/gi.exec(uri); - if (!match) { - dimensions = [640, 360]; - } else { - dimensions = [parseInt(match[1], 10), parseInt(match[2], 10)]; - } - } - success.apply(null, dimensions); - }, 50); + getSizeWithHeaders(uri, headers, callback, failure); } static getSize(uri, callback, failure) { - Image.getSizeWithHeaders(uri, undefined, callback, failure); + getSizeWithHeaders(uri, undefined, callback, failure); } } diff --git a/packages/render-html/src/__tests__/component.render-html.test.tsx b/packages/render-html/src/__tests__/component.render-html.test.tsx index 590e37d7b..fb858231a 100644 --- a/packages/render-html/src/__tests__/component.render-html.test.tsx +++ b/packages/render-html/src/__tests__/component.render-html.test.tsx @@ -836,6 +836,7 @@ describe('RenderHTML', () => { const headers = { Authorization: 'Bearer XXX' }; + const getSizeWithHeaders = jest.spyOn(Image, 'getSizeWithHeaders'); function provideEmbeddedHeaders(uri: string, tag: string) { expect(tag).toBe('img'); return headers; @@ -853,6 +854,10 @@ describe('RenderHTML', () => { await findByTestId('image-success'); const image = UNSAFE_getByType(Image); expect(image.props.source.headers).toBe(headers); + expect(getSizeWithHeaders).toHaveBeenCalledWith( + 'https://custom.domain/', + headers + ); }); }); describe('regarding enableExperimentalBRCollapsing', () => {