Skip to content

Commit

Permalink
Remove MockProvider and use redux's Provider instead
Browse files Browse the repository at this point in the history
  • Loading branch information
brendonpagano committed Dec 27, 2018
1 parent 5236391 commit 1131d79
Showing 1 changed file with 26 additions and 60 deletions.
86 changes: 26 additions & 60 deletions test/ConnectedRouter.test.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import 'raf/polyfill'
import React, { Children, Component } from 'react'
import PropTypes from 'prop-types'
import React from 'react'
import configureStore from 'redux-mock-store'
import { createStore, combineReducers, applyMiddleware, compose } from 'redux'
import { ActionCreators, instrument } from 'redux-devtools'
import Enzyme from 'enzyme'
import Adapter from 'enzyme-adapter-react-16'
import { createMemoryHistory } from 'history'
import { Route } from 'react-router'
import { ReactReduxContext } from 'react-redux'
import { Provider } from 'react-redux'
import createConnectedRouter from '../src/ConnectedRouter'
import { onLocationChanged } from '../src/actions'
import plainStructure from '../src/structure/plain'
Expand Down Expand Up @@ -69,11 +68,11 @@ describe('ConnectedRouter', () => {

it('calls `props.onLocationChanged()` when location changes.', () => {
mount(
<MockProvider store={store}>
<Provider store={store}>
<ConnectedRouter {...props}>
<Route path="/" render={() => <div>Home</div>} />
</ConnectedRouter>
</MockProvider>
</Provider>
)

expect(onLocationChangedSpy.mock.calls).toHaveLength(1)
Expand All @@ -86,11 +85,11 @@ describe('ConnectedRouter', () => {

it('unlistens the history object when unmounted.', () => {
const wrapper = mount(
<MockProvider store={store}>
<Provider store={store}>
<ConnectedRouter {...props}>
<Route path="/" render={() => <div>Home</div>} />
</ConnectedRouter>
</MockProvider>
</Provider>
)

expect(onLocationChangedSpy.mock.calls).toHaveLength(1)
Expand All @@ -109,11 +108,11 @@ describe('ConnectedRouter', () => {
it('supports custom context', () => {
const context = React.createContext(null)
mount(
<MockProvider store={store} context={context}>
<Provider store={store} context={context}>
<ConnectedRouter {...props} context={context}>
<Route path="/" render={() => <div>Home</div>} />
</ConnectedRouter>
</MockProvider>
</Provider>
)

expect(onLocationChangedSpy.mock.calls).toHaveLength(1)
Expand All @@ -133,11 +132,11 @@ describe('ConnectedRouter', () => {
}

mount(
<MockProvider store={store}>
<Provider store={store}>
<ConnectedRouter {...props}>
<Route path="/" component={RenderCounter} />
</ConnectedRouter>
</MockProvider>
</Provider>
)

expect(renderCount).toBe(1)
Expand Down Expand Up @@ -168,11 +167,11 @@ describe('ConnectedRouter', () => {
}

mount(
<MockProvider store={store}>
<Provider store={store}>
<ConnectedRouter {...props}>
<Route path="/" component={RenderCounter} />
</ConnectedRouter>
</MockProvider>
</Provider>
)

store.dispatch({ type: 'testAction' })
Expand All @@ -190,11 +189,11 @@ describe('ConnectedRouter', () => {

it('calls `props.onLocationChanged()` when location changes.', () => {
mount(
<MockProvider store={store}>
<Provider store={store}>
<ConnectedRouter {...props}>
<Route path="/" render={() => <div>Home</div>} />
</ConnectedRouter>
</MockProvider>
</Provider>
)

expect(onLocationChangedSpy.mock.calls).toHaveLength(1)
Expand All @@ -207,11 +206,11 @@ describe('ConnectedRouter', () => {

it('unlistens the history object when unmounted.', () => {
const wrapper = mount(
<MockProvider store={store}>
<Provider store={store}>
<ConnectedRouter {...props}>
<Route path="/" render={() => <div>Home</div>} />
</ConnectedRouter>
</MockProvider>
</Provider>
)

expect(onLocationChangedSpy.mock.calls).toHaveLength(1)
Expand All @@ -230,11 +229,11 @@ describe('ConnectedRouter', () => {
it('supports custom context', () => {
const context = React.createContext(null)
mount(
<MockProvider store={store} context={context}>
<Provider store={store} context={context}>
<ConnectedRouter {...props} context={context}>
<Route path="/" render={() => <div>Home</div>} />
</ConnectedRouter>
</MockProvider>
</Provider>
)

expect(onLocationChangedSpy.mock.calls).toHaveLength(1)
Expand All @@ -255,11 +254,11 @@ describe('ConnectedRouter', () => {

it('calls `props.onLocationChanged()` when location changes.', () => {
mount(
<MockProvider store={store}>
<Provider store={store}>
<ConnectedRouter {...props}>
<Route path="/" render={() => <div>Home</div>} />
</ConnectedRouter>
</MockProvider>
</Provider>
)

expect(onLocationChangedSpy.mock.calls).toHaveLength(1)
Expand All @@ -272,11 +271,11 @@ describe('ConnectedRouter', () => {

it('unlistens the history object when unmounted.', () => {
const wrapper = mount(
<MockProvider store={store}>
<Provider store={store}>
<ConnectedRouter {...props}>
<Route path="/" render={() => <div>Home</div>} />
</ConnectedRouter>
</MockProvider>
</Provider>
)

expect(onLocationChangedSpy.mock.calls).toHaveLength(1)
Expand Down Expand Up @@ -310,11 +309,11 @@ describe('ConnectedRouter', () => {

it('resets to the initial url', () => {
mount(
<MockProvider store={store}>
<Provider store={store}>
<ConnectedRouter {...props}>
<div>Test</div>
</ConnectedRouter>
</MockProvider>
</Provider>
)

let currentPath
Expand All @@ -332,11 +331,11 @@ describe('ConnectedRouter', () => {

it('handles toggle after history change', () => {
mount(
<MockProvider store={store}>
<Provider store={store}>
<ConnectedRouter {...props}>
<div>Test</div>
</ConnectedRouter>
</MockProvider>
</Provider>
)

let currentPath
Expand All @@ -356,36 +355,3 @@ describe('ConnectedRouter', () => {
})
})
})

// MockProvider mocks react-redux's Provider component
class MockProvider extends Component {
constructor(props) {
super(props)
const { store } = props
this.state = {
storeState: store.getState(),
store,
}
}
render() {
const Context = this.props.context || ReactReduxContext

return (
<Context.Provider value={this.state}>
{Children.only(this.props.children)}
</Context.Provider>
)
}
}

const storeShape = PropTypes.shape({
subscribe: PropTypes.func.isRequired,
dispatch: PropTypes.func.isRequired,
getState: PropTypes.func.isRequired,
})

MockProvider.propTypes = {
context: PropTypes.object,
store: storeShape.isRequired,
children: PropTypes.element.isRequired,
}

0 comments on commit 1131d79

Please sign in to comment.