mirror of
https://github.com/grafana/grafana.git
synced 2024-11-25 18:30:41 -06:00
4f0fa776be
* Refactor: Adds Redux Toolkit package * Refactor: Uses configureStore from Redux Toolkit * Refactor: Migrates applicationReducer * Refactor: Migrates appNotificationsReducer * Refactor: Migrates locationReducer * Refactor: Migrates navModelReducer * Refactor: Migrates teamsReducer and teamReducer * Refactor: Migrates cleanUpAction * Refactor: Migrates alertRulesReducer * Refactor: Cleans up recursiveCleanState * Refactor: Switched to Angular compatible reducers * Refactor: Migrates folderReducer * Refactor: Migrates dashboardReducer * Migrates panelEditorReducer * Refactor: Migrates dataSourcesReducer * Refactor: Migrates usersReducer * Refactor: Migrates organizationReducer * Refactor: Migrates pluginsReducer * Refactor: Migrates ldapReducer and ldapUserReducer * Refactor: Migrates apiKeysReducer * Refactor: Migrates exploreReducer and itemReducer * Refactor: Removes actionCreatorFactory and reducerFactory * Refactor: Moves mocks to test section * Docs: Removes sections about home grown framework * Update contribute/style-guides/redux.md Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com> * Refactor: Cleans up some code * Refactor: Adds state typings * Refactor: Cleans up typings * Refactor: Adds comment about ImmerJs autoFreeze Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
// @ts-ignore
|
|
import configureMockStore from 'redux-mock-store';
|
|
import thunk from 'redux-thunk';
|
|
import { PayloadAction } from '@reduxjs/toolkit';
|
|
|
|
const mockStore = configureMockStore([thunk]);
|
|
|
|
export interface ThunkGiven {
|
|
givenThunk: (thunkFunction: any) => ThunkWhen;
|
|
}
|
|
|
|
export interface ThunkWhen {
|
|
whenThunkIsDispatched: (...args: any) => Promise<Array<PayloadAction<any>>>;
|
|
}
|
|
|
|
export const thunkTester = (initialState: any, debug?: boolean): ThunkGiven => {
|
|
const store = mockStore(initialState);
|
|
let thunkUnderTest: any = null;
|
|
let dispatchedActions: Array<PayloadAction<any>> = [];
|
|
|
|
const givenThunk = (thunkFunction: any): ThunkWhen => {
|
|
thunkUnderTest = thunkFunction;
|
|
|
|
return instance;
|
|
};
|
|
|
|
const whenThunkIsDispatched = async (...args: any): Promise<Array<PayloadAction<any>>> => {
|
|
await store.dispatch(thunkUnderTest(...args));
|
|
|
|
dispatchedActions = store.getActions();
|
|
if (debug) {
|
|
console.log('resultingActions:', JSON.stringify(dispatchedActions, null, 2));
|
|
}
|
|
|
|
return dispatchedActions;
|
|
};
|
|
|
|
const instance = {
|
|
givenThunk,
|
|
whenThunkIsDispatched,
|
|
};
|
|
|
|
return instance;
|
|
};
|