@@ -1342,6 +1342,76 @@ describe('useRequest', () => {
13421342 }
13431343 } ) ;
13441344
1345+ test ( 'queryKey should work with root level `cancel`, `mutate`, `refresh`' , async ( ) => {
1346+ const users = [
1347+ { id : '1' , username : 'A' } ,
1348+ { id : '2' , username : 'B' } ,
1349+ { id : '3' , username : 'C' } ,
1350+ ] ;
1351+
1352+ const wrapper = shallowMount (
1353+ defineComponent ( {
1354+ setup ( ) {
1355+ const { run, queries, mutate, refresh, cancel } = useRequest (
1356+ request ,
1357+ {
1358+ manual : true ,
1359+ refreshOnWindowFocus : true ,
1360+ queryKey : id => id ,
1361+ } ,
1362+ ) ;
1363+
1364+ return ( ) => (
1365+ < div >
1366+ < div id = "mutate" onClick = { ( ) => mutate ( 'new data' ) } />
1367+ < div id = "refresh" onClick = { ( ) => refresh ( ) } />
1368+ < div id = "cancel" onClick = { ( ) => cancel ( ) } />
1369+ < ul >
1370+ { users . map ( item => (
1371+ < li
1372+ key = { item . id }
1373+ id = { item . username }
1374+ onClick = { ( ) => run ( item . id ) }
1375+ >
1376+ { queries [ item . id ] ?. loading
1377+ ? 'loading'
1378+ : queries [ item . id ] ?. data }
1379+ </ li >
1380+ ) ) }
1381+ </ ul >
1382+ </ div >
1383+ ) ;
1384+ } ,
1385+ } ) ,
1386+ ) ;
1387+
1388+ const mutate = ( ) => wrapper . find ( '#mutate' ) . trigger ( 'click' ) ;
1389+ const refresh = ( ) => wrapper . find ( '#refresh' ) . trigger ( 'click' ) ;
1390+ const cancel = ( ) => wrapper . find ( '#cancel' ) . trigger ( 'click' ) ;
1391+
1392+ for ( let i = 0 ; i < users . length ; i ++ ) {
1393+ const userName = users [ i ] . username ;
1394+ const currentId = users [ i ] . id ;
1395+ const userElement = wrapper . find ( `#${ userName } ` ) ;
1396+ await userElement . trigger ( 'click' ) ;
1397+ expect ( userElement . text ( ) ) . toBe ( 'loading' ) ;
1398+ await waitForTime ( 1000 ) ;
1399+ expect ( userElement . text ( ) ) . toBe ( currentId ) ;
1400+
1401+ await mutate ( ) ;
1402+ expect ( userElement . text ( ) ) . toBe ( 'new data' ) ;
1403+
1404+ await userElement . trigger ( 'click' ) ;
1405+ expect ( userElement . text ( ) ) . toBe ( 'loading' ) ;
1406+ await waitForTime ( 100 ) ;
1407+ await cancel ( ) ;
1408+ expect ( userElement . text ( ) ) . toBe ( 'new data' ) ;
1409+
1410+ await refresh ( ) ;
1411+ expect ( userElement . text ( ) ) . toBe ( 'loading' ) ;
1412+ }
1413+ } ) ;
1414+
13451415 test ( 'errorRetry should work. case 1' , async ( ) => {
13461416 const wrapper = shallowMount (
13471417 defineComponent ( {
0 commit comments