@@ -1271,4 +1271,90 @@ describe('queryObserver', () => {
1271
1271
1272
1272
unsubscribe ( )
1273
1273
} )
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
+ } )
1274
1360
} )
0 commit comments