diff --git a/test/components/connect.spec.js b/test/components/connect.spec.js index 570c69d8d..9e8a3a9c6 100644 --- a/test/components/connect.spec.js +++ b/test/components/connect.spec.js @@ -3110,6 +3110,46 @@ describe('React', () => { expect(rendered.getByTestId('child').dataset.count).toEqual('3') expect(rendered.getByTestId('child').dataset.prop).toEqual('b') }) + + it('should invoke mapState always with latest store state', () => { + const store = createStore((state = 0) => state + 1) + + let reduxCountPassedToMapState + + @connect(reduxCount => { + reduxCountPassedToMapState = reduxCount + return reduxCount < 2 ? { a: 'a' } : { a: 'b' } + }) + class InnerComponent extends Component { + render() { + return + } + } + + class OuterComponent extends Component { + constructor() { + super() + this.state = { count: 0 } + } + + render() { + return + } + } + + let outerComponent + rtl.render( + + (outerComponent = c)} /> + + ) + + store.dispatch({ type: '' }) + store.dispatch({ type: '' }) + outerComponent.setState(({ count }) => ({ count: count + 1 })) + + expect(reduxCountPassedToMapState).toEqual(3) + }) }) it("should enforce top-down updates to ensure a deleted child's mapState doesn't throw errors", () => {