diff --git a/public/app/features/admin/state/reducers.test.ts b/public/app/features/admin/state/reducers.test.ts index 6056194185c..ea8a804ef2a 100644 --- a/public/app/features/admin/state/reducers.test.ts +++ b/public/app/features/admin/state/reducers.test.ts @@ -12,6 +12,7 @@ import { userSessionsLoadedAction, userListAdminReducer, queryChanged, + filterChanged, } from './reducers'; import { LdapState, LdapUser, UserAdminState, UserDTO, UserListAdminState } from 'app/types'; @@ -287,4 +288,22 @@ describe('User List Admin reducer', () => { }); }); }); + + describe('When filter changed', () => { + it('should reset page to 0', () => { + const initialState = { + ...makeInitialUserListAdminState(), + page: 3, + }; + + reducerTester() + .givenReducer(userListAdminReducer, initialState) + .whenActionIsDispatched(filterChanged({ test: true })) + .thenStateShouldEqual({ + ...makeInitialUserListAdminState(), + page: 0, + filters: expect.arrayContaining([{ test: true }]), + }); + }); + }); }); diff --git a/public/app/features/admin/state/reducers.ts b/public/app/features/admin/state/reducers.ts index 63000d85166..7c3d6ffd2e7 100644 --- a/public/app/features/admin/state/reducers.ts +++ b/public/app/features/admin/state/reducers.ts @@ -178,11 +178,13 @@ export const userListAdminSlice = createSlice({ if (state.filters.some((filter) => filter.name === name)) { return { ...state, + page: 0, filters: state.filters.map((filter) => (filter.name === name ? { ...filter, value } : filter)), }; } return { ...state, + page: 0, filters: [...state.filters, action.payload], }; },