Skip to content

Commit

Permalink
Fix: Use isSerializable when checking state
Browse files Browse the repository at this point in the history
SerializableStateInvariantMiddleware: Actually use the supplied
`isSerializable` function when searching for non-serialisable values
in the state.
  • Loading branch information
Ali Rantakari committed May 8, 2019
1 parent 3c40c56 commit cb52831
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
39 changes: 39 additions & 0 deletions src/serializableStateInvariantMiddleware.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,4 +158,43 @@ describe('serializableStateInvariantMiddleware', () => {
expect(value).toBe(badValue)
expect(actionType).toBe(ACTION_TYPE)
})

it('Should use the supplied isSerializable function to determine serializability', () => {
const ACTION_TYPE = 'TEST_ACTION'

const initialState = {
a: 0
}

const badValue = new Map()

const reducer: Reducer = (state = initialState, action) => {
switch (action.type) {
case ACTION_TYPE: {
return {
a: badValue
}
}
default:
return state
}
}

const serializableStateInvariantMiddleware = createSerializableStateInvariantMiddleware({
isSerializable: (value: any) => true
})

const store = configureStore({
reducer: {
testSlice: reducer
},
middleware: [serializableStateInvariantMiddleware]
})

store.dispatch({ type: ACTION_TYPE })

// Supplied 'isSerializable' considers all values serializable, hence
// no error logging is expected:
expect(console.error).not.toHaveBeenCalled()
})
})
6 changes: 5 additions & 1 deletion src/serializableStateInvariantMiddleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,11 @@ export function createSerializableStateInvariantMiddleware(

const state = storeAPI.getState()

const foundStateNonSerializableValue = findNonSerializableValue(state)
const foundStateNonSerializableValue = findNonSerializableValue(
state,
[],
isSerializable
)

if (foundStateNonSerializableValue) {
const { keyPath, value } = foundStateNonSerializableValue
Expand Down

0 comments on commit cb52831

Please sign in to comment.