11import React , { act } from 'react' ;
22import HTML , { RenderHTMLProps } from '@native-html/render' ;
33import renderer from 'react-test-renderer' ;
4+ import Ersatz from '@formidable-webview/ersatz' ;
45import IframeRenderer , { iframeModel } from '../IframeRenderer' ;
5- import { View } from 'react-native' ;
66
77describe ( 'iframe renderer' , ( ) => {
8+ let rendered : renderer . ReactTestRenderer | null = null ;
9+
10+ afterEach ( async ( ) => {
11+ if ( rendered ) {
12+ await act ( async ( ) => {
13+ rendered ! . unmount ( ) ;
14+ } ) ;
15+ rendered = null ;
16+ }
17+ } ) ;
18+
819 const defaultConfig : Partial < RenderHTMLProps > = {
9- WebView : View ,
20+ WebView : Ersatz ,
1021 renderers : {
1122 iframe : IframeRenderer
1223 } ,
@@ -17,7 +28,7 @@ describe('iframe renderer', () => {
1728 } ;
1829 it ( 'should render without errors' , async ( ) => {
1930 await act ( async ( ) => {
20- renderer . create (
31+ rendered = renderer . create (
2132 < HTML
2233 { ...defaultConfig }
2334 source = { {
@@ -33,17 +44,21 @@ describe('iframe renderer', () => {
3344 html : '<iframe width="300" height="300" src="https://google.com/" />'
3445 } ,
3546 provideEmbeddedHeaders : ( uri , tagName ) => {
36- // @ts -expect-error tagName can be 'iframe' at runtime
3747 if ( tagName === 'iframe' ) {
3848 return {
3949 'X-Frame-Options' : 'ALLOW-FROM https://google.com'
4050 } ;
4151 }
4252 }
4353 } ;
44- let rendered : renderer . ReactTestRenderer ;
4554 await act ( async ( ) => {
4655 rendered = renderer . create ( < HTML { ...defaultConfig } { ...props } /> ) ;
4756 } ) ;
57+
58+ expect ( rendered ! . root . findByType ( Ersatz ) . props . source ) . toMatchObject ( {
59+ headers : {
60+ 'X-Frame-Options' : 'ALLOW-FROM https://google.com'
61+ }
62+ } ) ;
4863 } ) ;
4964} ) ;
0 commit comments