UNPKG

@reduxjs/toolkit

Version:

The official, opinionated, batteries-included toolset for efficient Redux development

80 lines (71 loc) 2.04 kB
import { createSlice } from '@reduxjs/toolkit' import { createApi } from '@reduxjs/toolkit/query' import { setupApiStore } from './helpers' const baseQuery = (args?: any) => ({ data: args }) const api = createApi({ baseQuery, endpoints: (build) => ({ getUser: build.query<unknown, number>({ query(id) { return { url: `user/${id}` } }, }), }), }) const { getUser } = api.endpoints const authSlice = createSlice({ name: 'auth', initialState: { token: '1234', }, reducers: { setToken(state, action) { state.token = action.payload }, }, }) const storeRef = setupApiStore(api, { auth: authSlice.reducer }) it('only resets the api state when resetApiState is dispatched', async () => { storeRef.store.dispatch({ type: 'unrelated' }) // trigger "registered middleware" into place const initialState = storeRef.store.getState() await storeRef.store.dispatch( getUser.initiate(1, { subscriptionOptions: { pollingInterval: 10 } }) ) expect(storeRef.store.getState()).toEqual({ api: { config: { focused: true, keepUnusedDataFor: 60, middlewareRegistered: true, online: true, reducerPath: 'api', refetchOnFocus: false, refetchOnMountOrArgChange: false, refetchOnReconnect: false, }, mutations: {}, provided: {}, queries: { 'getUser(1)': { data: { url: 'user/1', }, endpointName: 'getUser', fulfilledTimeStamp: expect.any(Number), originalArgs: 1, requestId: expect.any(String), startedTimeStamp: expect.any(Number), status: 'fulfilled', }, }, subscriptions: { 'getUser(1)': expect.any(Object), }, }, auth: { token: '1234', }, }) storeRef.store.dispatch(api.util.resetApiState()) expect(storeRef.store.getState()).toEqual(initialState) })