@@ -2,11 +2,19 @@ import * as React from 'react';
22import { Text , View } from 'react-native' ;
33
44import { act , renderAsync , screen } from '..' ;
5+ import { excludeConsoleMessage } from '../test-utils/console' ;
56
67jest . useFakeTimers ( ) ;
78
89const testGateReact19 = React . version . startsWith ( '19.' ) ? test : test . skip ;
910
11+ // eslint-disable-next-line no-console
12+ const originalConsoleError = console . error ;
13+ afterEach ( ( ) => {
14+ // eslint-disable-next-line no-console
15+ console . error = originalConsoleError ;
16+ } ) ;
17+
1018function Suspending ( { promise, testID } : { promise : Promise < unknown > ; testID : string } ) {
1119 React . use ( promise ) ;
1220 return < View testID = { testID } /> ;
@@ -79,8 +87,14 @@ class ErrorBoundary extends React.Component<
7987}
8088
8189testGateReact19 ( 'handles promise rejection with error boundary' , async ( ) => {
90+ const ERROR_MESSAGE = 'Promise Rejected In Test' ;
91+ // eslint-disable-next-line no-console
92+ console . error = excludeConsoleMessage ( console . error , ERROR_MESSAGE ) ;
93+
8294 let rejectPromise : ( error : Error ) => void ;
83- const promise = new Promise < unknown > ( ( _ , reject ) => { rejectPromise = reject ; } ) ;
95+ const promise = new Promise < unknown > ( ( _resolve , reject ) => {
96+ rejectPromise = reject ;
97+ } ) ;
8498
8599 await renderAsync (
86100 < ErrorBoundary fallback = { < Text > Error occurred</ Text > } >
@@ -94,7 +108,7 @@ testGateReact19('handles promise rejection with error boundary', async () => {
94108 expect ( screen . queryByTestId ( 'content' ) ) . not . toBeOnTheScreen ( ) ;
95109
96110 // eslint-disable-next-line require-await
97- await act ( async ( ) => rejectPromise ( new Error ( 'Test error' ) ) ) ;
111+ await act ( async ( ) => rejectPromise ( new Error ( ERROR_MESSAGE ) ) ) ;
98112
99113 expect ( screen . getByText ( 'Error occurred' ) ) . toBeOnTheScreen ( ) ;
100114 expect ( screen . queryByText ( 'Loading...' ) ) . not . toBeOnTheScreen ( ) ;
@@ -104,17 +118,21 @@ testGateReact19('handles promise rejection with error boundary', async () => {
104118testGateReact19 ( 'handles multiple suspending components' , async ( ) => {
105119 let resolvePromise1 : ( value : unknown ) => void ;
106120 let resolvePromise2 : ( value : unknown ) => void ;
107-
108- const promise1 = new Promise ( ( resolve ) => { resolvePromise1 = resolve ; } ) ;
109- const promise2 = new Promise ( ( resolve ) => { resolvePromise2 = resolve ; } ) ;
121+
122+ const promise1 = new Promise ( ( resolve ) => {
123+ resolvePromise1 = resolve ;
124+ } ) ;
125+ const promise2 = new Promise ( ( resolve ) => {
126+ resolvePromise2 = resolve ;
127+ } ) ;
110128
111129 await renderAsync (
112130 < View >
113131 < React . Suspense fallback = { < Text > Loading...</ Text > } >
114132 < Suspending promise = { promise1 } testID = "content-1" />
115133 < Suspending promise = { promise2 } testID = "content-2" />
116134 </ React . Suspense >
117- </ View >
135+ </ View > ,
118136 ) ;
119137
120138 expect ( screen . getByText ( 'Loading...' ) ) . toBeOnTheScreen ( ) ;
@@ -134,13 +152,16 @@ testGateReact19('handles multiple suspending components', async () => {
134152 expect ( screen . queryByText ( 'Loading...' ) ) . not . toBeOnTheScreen ( ) ;
135153} ) ;
136154
137-
138155testGateReact19 ( 'handles multiple suspense boundaries independently' , async ( ) => {
139156 let resolvePromise1 : ( value : unknown ) => void ;
140157 let resolvePromise2 : ( value : unknown ) => void ;
141-
142- const promise1 = new Promise ( ( resolve ) => { resolvePromise1 = resolve ; } ) ;
143- const promise2 = new Promise ( ( resolve ) => { resolvePromise2 = resolve ; } ) ;
158+
159+ const promise1 = new Promise ( ( resolve ) => {
160+ resolvePromise1 = resolve ;
161+ } ) ;
162+ const promise2 = new Promise ( ( resolve ) => {
163+ resolvePromise2 = resolve ;
164+ } ) ;
144165
145166 await renderAsync (
146167 < View >
@@ -150,7 +171,7 @@ testGateReact19('handles multiple suspense boundaries independently', async () =
150171 < React . Suspense fallback = { < Text > Second Loading...</ Text > } >
151172 < Suspending promise = { promise2 } testID = "content-2" />
152173 </ React . Suspense >
153- </ View >
174+ </ View > ,
154175 ) ;
155176
156177 expect ( screen . getByText ( 'First Loading...' ) ) . toBeOnTheScreen ( ) ;
0 commit comments