source: node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/react.test.tsx@ a762898

Last change on this file since a762898 was a762898, checked in by istevanoska <ilinastevanoska@…>, 5 months ago

Added visualizations

  • Property mode set to 100644
File size: 3.1 KB
Line 
1import * as React from 'react'
2import { createDynamicMiddleware } from '../react'
3import { configureStore } from '../../configureStore'
4import { makeProbeableMiddleware, probeMiddleware } from './index.test'
5import { render } from '@testing-library/react'
6import type { Dispatch } from 'redux'
7import type { ReactReduxContextValue } from 'react-redux'
8import { Provider } from 'react-redux'
9
10const staticMiddleware = makeProbeableMiddleware(1)
11
12describe('createReactDynamicMiddleware', () => {
13 describe('createDispatchWithMiddlewareHook', () => {
14 it('injects middleware upon creation', () => {
15 const dynamicInstance = createDynamicMiddleware()
16 const store = configureStore({
17 reducer: () => 0,
18 middleware: (gDM) =>
19 gDM().prepend(dynamicInstance.middleware).concat(staticMiddleware),
20 })
21 // normal, pre-inject
22 expect(store.dispatch(probeMiddleware(2))).toEqual(probeMiddleware(2))
23 // static
24 expect(store.dispatch(probeMiddleware(1))).toBe(1)
25
26 const useDispatch = dynamicInstance.createDispatchWithMiddlewareHook(
27 makeProbeableMiddleware(2),
28 )
29
30 // injected
31 expect(store.dispatch(probeMiddleware(2))).toBe(2)
32 })
33
34 it('returns dispatch', () => {
35 const dynamicInstance = createDynamicMiddleware()
36 const store = configureStore({
37 reducer: () => 0,
38 middleware: (gDM) =>
39 gDM().prepend(dynamicInstance.middleware).concat(staticMiddleware),
40 })
41
42 const useDispatch = dynamicInstance.createDispatchWithMiddlewareHook(
43 makeProbeableMiddleware(2),
44 )
45
46 let dispatch: Dispatch | undefined
47 function Component() {
48 dispatch = useDispatch()
49
50 return null
51 }
52 render(<Component />, {
53 wrapper: ({ children }) => (
54 <Provider store={store}>{children}</Provider>
55 ),
56 })
57 expect(dispatch).toBe(store.dispatch)
58 })
59 })
60 describe('createDispatchWithMiddlewareHookFactory', () => {
61 it('returns the correct store dispatch', () => {
62 const dynamicInstance = createDynamicMiddleware()
63 const store = configureStore({
64 reducer: () => 0,
65 middleware: (gDM) =>
66 gDM().prepend(dynamicInstance.middleware).concat(staticMiddleware),
67 })
68 const store2 = configureStore({
69 reducer: () => '',
70 middleware: (gDM) =>
71 gDM().prepend(dynamicInstance.middleware).concat(staticMiddleware),
72 })
73
74 const context = React.createContext<ReactReduxContextValue | null>(null)
75
76 const createDispatchWithMiddlewareHook =
77 dynamicInstance.createDispatchWithMiddlewareHookFactory(context)
78
79 const useDispatch = createDispatchWithMiddlewareHook(
80 makeProbeableMiddleware(2),
81 )
82
83 let dispatch: Dispatch | undefined
84 function Component() {
85 dispatch = useDispatch()
86
87 return null
88 }
89 render(<Component />, {
90 wrapper: ({ children }) => (
91 <Provider store={store}>
92 <Provider context={context} store={store2}>
93 {children}
94 </Provider>
95 </Provider>
96 ),
97 })
98 expect(dispatch).toBe(store2.dispatch)
99 })
100 })
101})
Note: See TracBrowser for help on using the repository browser.