diff --git a/src/redux/drugs/drugs.reducers.test.ts b/src/redux/drugs/drugs.reducers.test.ts index 7305315907309ab71e2548b769e838cb94c73da8..d62b3a1e2e3019562204b330d238eb838d2be63a 100644 --- a/src/redux/drugs/drugs.reducers.test.ts +++ b/src/redux/drugs/drugs.reducers.test.ts @@ -1,9 +1,11 @@ -import { AnyAction, ThunkMiddleware } from '@reduxjs/toolkit'; -import { ToolkitStore, configureStore } from '@reduxjs/toolkit/dist/configureStore'; import { PROJECT_ID } from '@/constants/mapId'; import { drugsFixture } from '@/models/fixtures/drugFixtures'; import { HTTP_NOT_FOUND, HTTP_OK } from '@/constants/httpResponses'; import { mockNetworkResponse } from '@/utils/mockNetworkResponse'; +import { + ToolkitStoreWithSingleSlice, + createStoreInstanceUsingSliceReducer, +} from '@/utils/createStoreInstanceUsingSliceReducer'; import { getDrugs } from './drugs.thunks'; import drugsReducer from './drugs.slice'; import { DrugsState } from './drugs.types'; @@ -17,33 +19,10 @@ const INITIAL_STATE: DrugsState = { error: { name: '', message: '' }, }; -type SliceReducerType = ToolkitStore< - { - drugs: DrugsState; - }, - AnyAction, - [ - ThunkMiddleware< - { - drugs: DrugsState; - }, - AnyAction - >, - ] ->; - -const createStoreInstanceUsingSliceReducer = (): SliceReducerType => - configureStore({ - reducer: { - drugs: drugsReducer, - }, - }); - describe('drugs reducer', () => { - let store = {} as SliceReducerType; - + let store = {} as ToolkitStoreWithSingleSlice<DrugsState>; beforeEach(() => { - store = createStoreInstanceUsingSliceReducer(); + store = createStoreInstanceUsingSliceReducer('drugs', drugsReducer); }); it('should match initial state', () => { @@ -79,7 +58,22 @@ describe('drugs reducer', () => { expect(data).toEqual([]); }); - it.skip('should update store on loading getDrugs query', () => { - // TODO + it('should update store on loading getDrugs query', async () => { + mockedAxiosClient + .onGet(`projects/${PROJECT_ID}/drugs:search?query=${SEARCH_QUERY}`) + .reply(HTTP_OK, drugsFixture); + + const drugsPromise = store.dispatch(getDrugs(SEARCH_QUERY)); + + const { data, loading } = store.getState().drugs; + expect(data).toEqual([]); + expect(loading).toEqual('pending'); + + drugsPromise.then(() => { + const { data: dataPromiseFulfilled, loading: promiseFulfilled } = store.getState().drugs; + + expect(dataPromiseFulfilled).toEqual(drugsFixture); + expect(promiseFulfilled).toEqual('succeeded'); + }); }); });