Commit f5916260 by Giordano Ricci Committed by GitHub

Chore: Allow reducerTester to work with every data type & payload-less actions (#29241)

parent 6838af5c
import { Reducer } from 'redux'; import { Reducer } from 'redux';
import { PayloadAction } from '@reduxjs/toolkit'; import { PayloadAction, Action } from '@reduxjs/toolkit';
import { cloneDeep } from 'lodash';
export interface Given<State> { export interface Given<State> {
givenReducer: ( givenReducer: (
reducer: Reducer<State, PayloadAction<any>>, reducer: Reducer<State, PayloadAction<any> | Action<any>>,
state: State, state: State,
showDebugOutput?: boolean, showDebugOutput?: boolean,
disableDeepFreeze?: boolean disableDeepFreeze?: boolean
...@@ -11,7 +12,7 @@ export interface Given<State> { ...@@ -11,7 +12,7 @@ export interface Given<State> {
} }
export interface When<State> { export interface When<State> {
whenActionIsDispatched: (action: PayloadAction<any>) => Then<State>; whenActionIsDispatched: (action: PayloadAction<any> | Action<any>) => Then<State>;
} }
export interface Then<State> { export interface Then<State> {
...@@ -66,9 +67,9 @@ export const reducerTester = <State>(): Given<State> => { ...@@ -66,9 +67,9 @@ export const reducerTester = <State>(): Given<State> => {
disableDeepFreeze = false disableDeepFreeze = false
): When<State> => { ): When<State> => {
reducerUnderTest = reducer; reducerUnderTest = reducer;
initialState = { ...state }; initialState = cloneDeep(state);
if (!disableDeepFreeze) { if (!disableDeepFreeze && (typeof state === 'object' || typeof state === 'function')) {
initialState = deepFreeze(initialState); deepFreeze(initialState);
} }
showDebugOutput = debug; showDebugOutput = debug;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment