Files
coopgo/node_modules/@reduxjs/toolkit/src/tests/actionCreatorInvariantMiddleware.test.ts
sgauthier 6e64e138e2
All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s
planning
2024-10-14 09:15:30 +02:00

65 lines
1.9 KiB
TypeScript

import type { ActionCreatorInvariantMiddlewareOptions } from '@internal/actionCreatorInvariantMiddleware'
import { getMessage } from '@internal/actionCreatorInvariantMiddleware'
import { createActionCreatorInvariantMiddleware } from '@internal/actionCreatorInvariantMiddleware'
import type { Dispatch, MiddlewareAPI } from '@reduxjs/toolkit'
import { createAction } from '@reduxjs/toolkit'
describe('createActionCreatorInvariantMiddleware', () => {
const consoleSpy = jest.spyOn(console, 'warn').mockImplementation(() => {})
afterEach(() => {
consoleSpy.mockClear()
})
afterAll(() => {
consoleSpy.mockRestore()
})
const dummyAction = createAction('aSlice/anAction')
it('sends the action through the middleware chain', () => {
const next: Dispatch = (action) => ({
...action,
returned: true,
})
const dispatch = createActionCreatorInvariantMiddleware()(
{} as MiddlewareAPI
)(next)
expect(dispatch(dummyAction())).toEqual({
...dummyAction(),
returned: true,
})
})
const makeActionTester = (
options?: ActionCreatorInvariantMiddlewareOptions
) =>
createActionCreatorInvariantMiddleware(options)({} as MiddlewareAPI)(
(action) => action
)
it('logs a warning to console if an action creator is mistakenly dispatched', () => {
const testAction = makeActionTester()
testAction(dummyAction())
expect(consoleSpy).not.toHaveBeenCalled()
testAction(dummyAction)
expect(consoleSpy).toHaveBeenLastCalledWith(getMessage(dummyAction.type))
})
it('allows passing a custom predicate', () => {
let predicateCalled = false
const testAction = makeActionTester({
isActionCreator(action): action is Function {
predicateCalled = true
return false
},
})
testAction(dummyAction())
expect(predicateCalled).toBe(true)
})
})