diff --git a/packages/ra-core/src/controller/usePrevNextController.spec.tsx b/packages/ra-core/src/controller/usePrevNextController.spec.tsx new file mode 100644 index 00000000000..627c3d8d14d --- /dev/null +++ b/packages/ra-core/src/controller/usePrevNextController.spec.tsx @@ -0,0 +1,55 @@ +import * as React from 'react'; +import { render, waitFor } from '@testing-library/react'; + +import { CoreAdminContext, ResourceContextProvider } from '../core'; +import { testDataProvider } from '../dataProvider'; +import { RecordContextProvider } from './record'; +import { memoryStore } from '../store'; +import { usePrevNextController } from './usePrevNextController'; + +const UsePrevNextController = props => { + usePrevNextController(props); + return null; +}; + +describe('usePrevNextController', () => { + it('should ignore stored list parameters when storeKey is false', async () => { + const dataProvider = testDataProvider({ + getList: jest.fn().mockResolvedValue({ data: [], total: 0 }), + }); + const store = memoryStore({ + 'posts.listParams': { + filter: { published: true }, + order: 'DESC', + sort: 'title', + page: 2, + perPage: 25, + displayedFilters: {}, + }, + }); + + render( + + + + + + + + ); + + await waitFor(() => { + expect(dataProvider.getList).toHaveBeenCalledWith('posts', { + pagination: { page: 1, perPage: 1000 }, + sort: { field: 'id', order: 'ASC' }, + filter: { featured: true }, + meta: undefined, + signal: undefined, + }); + }); + }); +}); diff --git a/packages/ra-core/src/controller/usePrevNextController.ts b/packages/ra-core/src/controller/usePrevNextController.ts index 29149df0d47..2d0d1be8962 100644 --- a/packages/ra-core/src/controller/usePrevNextController.ts +++ b/packages/ra-core/src/controller/usePrevNextController.ts @@ -130,17 +130,19 @@ export const usePrevNextController = ( ); } - const [storedParams] = useStore( + const defaultParams = { + filter: filterDefaultValues, + order: initialSort.order, + sort: initialSort.field, + page: 1, + perPage: 10, + displayedFilters: {}, + }; + const [storeParams] = useStore( storeKey || `${resource}.listParams`, - { - filter: filterDefaultValues, - order: initialSort.order, - sort: initialSort.field, - page: 1, - perPage: 10, - displayedFilters: {}, - } + defaultParams ); + const storedParams = storeKey === false ? defaultParams : storeParams; const dataProvider = useDataProvider(); const queryClient = useQueryClient();