@@ -1271,4 +1271,90 @@ describe('queryObserver', () => {
12711271
12721272 unsubscribe ( )
12731273 } )
1274+
1275+ test ( 'shouldFetchOnWindowFocus should respect refetchOnWindowFocus option' , ( ) => {
1276+ const key = queryKey ( )
1277+
1278+ const observer1 = new QueryObserver ( queryClient , {
1279+ queryKey : key ,
1280+ queryFn : ( ) => 'data' ,
1281+ refetchOnWindowFocus : true ,
1282+ } )
1283+ expect ( observer1 . shouldFetchOnWindowFocus ( ) ) . toBe ( true )
1284+
1285+ const observer2 = new QueryObserver ( queryClient , {
1286+ queryKey : key ,
1287+ queryFn : ( ) => 'data' ,
1288+ refetchOnWindowFocus : false ,
1289+ } )
1290+ expect ( observer2 . shouldFetchOnWindowFocus ( ) ) . toBe ( false )
1291+ } )
1292+
1293+ test ( 'fetchOptimistic should fetch and return optimistic result' , async ( ) => {
1294+ const key = queryKey ( )
1295+ const observer = new QueryObserver ( queryClient , {
1296+ queryKey : key ,
1297+ queryFn : ( ) => 'data' ,
1298+ } )
1299+
1300+ const result = await observer . fetchOptimistic ( {
1301+ queryKey : key ,
1302+ queryFn : ( ) => 'data' ,
1303+ } )
1304+
1305+ expect ( result . status ) . toBe ( 'success' )
1306+ expect ( result . data ) . toBe ( 'data' )
1307+ } )
1308+
1309+ test ( 'should track error prop when throwOnError is true' , async ( ) => {
1310+ const key = queryKey ( )
1311+ const results : Array < QueryObserverResult > = [ ]
1312+ const observer = new QueryObserver ( queryClient , {
1313+ queryKey : key ,
1314+ queryFn : ( ) => Promise . reject ( 'error' ) ,
1315+ retry : false ,
1316+ throwOnError : true ,
1317+ } )
1318+
1319+ const trackedResult = observer . trackResult (
1320+ observer . getCurrentResult ( ) ,
1321+ ( prop ) => {
1322+ if ( prop === 'data' || prop === 'status' ) {
1323+ observer . trackProp ( prop )
1324+ }
1325+ } ,
1326+ )
1327+
1328+ trackedResult . data
1329+ trackedResult . status
1330+
1331+ const unsubscribe = observer . subscribe ( ( result ) => {
1332+ results . push ( result )
1333+ } )
1334+
1335+ await vi . waitFor ( ( ) => {
1336+ const lastResult = results [ results . length - 1 ]
1337+ expect ( lastResult ?. status ) . toBe ( 'error' )
1338+ } )
1339+
1340+ expect ( results . length ) . toBe ( 1 )
1341+ expect ( results [ 0 ] ) . toMatchObject ( {
1342+ status : 'error' ,
1343+ error : 'error' ,
1344+ } )
1345+
1346+ unsubscribe ( )
1347+ } )
1348+
1349+ test ( 'should set fetchStatus to idle when _optimisticResults is isRestoring' , ( ) => {
1350+ const key = queryKey ( )
1351+ const observer = new QueryObserver ( queryClient , {
1352+ queryKey : key ,
1353+ queryFn : ( ) => 'data' ,
1354+ _optimisticResults : 'isRestoring' ,
1355+ } )
1356+
1357+ const result = observer . getCurrentResult ( )
1358+ expect ( result . fetchStatus ) . toBe ( 'idle' )
1359+ } )
12741360} )
0 commit comments