22
33import { Suspense } from 'react'
44
5- import { queryByText , render , waitForElementToBeRemoved } from '@testing-library/react'
5+ import { act , render } from '@testing-library/react'
66import { useCodeMirror } from './useCodeMirror'
77import { studioTheme , ThemeProvider } from '@sanity/ui'
88
@@ -11,7 +11,13 @@ describe('useCodeMirror - client', () => {
1111 jest
1212 . spyOn ( window , 'requestAnimationFrame' )
1313 . mockImplementation ( ( callback : FrameRequestCallback ) : number => {
14- callback ( 0 )
14+ try {
15+ // eslint-disable-next-line callback-return
16+ callback ( 0 )
17+ } catch ( e ) {
18+ // CodeMirror does some mesurement shenanigance that json dont support
19+ // we just let it crash silently
20+ }
1521 return 0
1622 } )
1723 } )
@@ -21,12 +27,10 @@ describe('useCodeMirror - client', () => {
2127 } )
2228
2329 it ( 'should render suspended ace editor' , async ( ) => {
24- const fallbackString = 'loading'
25-
2630 const TestComponent = ( ) => {
2731 const CodeMirror = useCodeMirror ( )
2832 return (
29- < Suspense fallback = { fallbackString } >
33+ < Suspense fallback = { 'loading' } >
3034 { CodeMirror && (
3135 < ThemeProvider theme = { studioTheme } >
3236 < CodeMirror languageMode = { 'tsx' } />
@@ -35,12 +39,11 @@ describe('useCodeMirror - client', () => {
3539 </ Suspense >
3640 )
3741 }
38- const { container} = render ( < TestComponent /> )
39-
40- expect ( container . innerHTML ) . toEqual ( fallbackString )
41-
42- await waitForElementToBeRemoved ( ( ) => queryByText ( container , fallbackString ) )
43-
42+ let container : any
43+ await act ( async ( ) => {
44+ const result = render ( < TestComponent /> )
45+ container = result . container
46+ } )
4447 expect ( container . querySelector ( '.cm-theme' ) ) . toBeTruthy ( )
4548 } )
4649} )
0 commit comments