From 9abdc0ab9960d031e59cd9e71d4b842cc29dceca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?chencheng=20=28=E4=BA=91=E8=B0=A6=29?= Date: Fri, 8 Mar 2019 16:03:24 +0800 Subject: [PATCH] feat: expost history methods (#2023) --- packages/dva/src/index.js | 7 ++++- packages/dva/test/index.e2e.js | 53 +++++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/packages/dva/src/index.js b/packages/dva/src/index.js index b575ea40..e6049301 100644 --- a/packages/dva/src/index.js +++ b/packages/dva/src/index.js @@ -1,6 +1,10 @@ import React from 'react'; import invariant from 'invariant'; -import { createHashHistory } from 'history'; +import { + createBrowserHistory, + createMemoryHistory, + createHashHistory, +} from 'history'; import document from 'global/document'; import { Provider, connect, connectAdvanced } from 'react-redux'; import { utils, create, saga } from 'dva-core'; @@ -118,3 +122,4 @@ export { connect, connectAdvanced }; export { router }; export { saga }; export { routerRedux }; +export { createBrowserHistory, createMemoryHistory, createHashHistory }; diff --git a/packages/dva/test/index.e2e.js b/packages/dva/test/index.e2e.js index 6687ded8..20a897da 100644 --- a/packages/dva/test/index.e2e.js +++ b/packages/dva/test/index.e2e.js @@ -1,6 +1,13 @@ import React from 'react'; import { render, fireEvent } from 'react-testing-library'; -import dva, { connect } from '../dist/index'; +import dva, { + connect, + createMemoryHistory, + router, + routerRedux, +} from '../dist/index'; + +const { Link, Switch, Route, Router } = router; test('normal', () => { const app = dva(); @@ -56,3 +63,47 @@ test('connect', () => { fireEvent.click(getByText('add')); expect(getByTestId('count').innerHTML).toEqual('1'); }); + +test('navigate', async () => { + const history = createMemoryHistory({ + initialEntries: ['/'], + }); + const app = dva({ + history, + }); + + function Home() { + return

You are on Home

; + } + function Users() { + return

You are on Users

; + } + app.router(({ history }) => { + return ( + + <> + Home + Users + + + + + + + + ); + }); + + const { getByTestId, getByText } = render(React.createElement(app.start())); + expect(getByTestId('title').innerHTML).toEqual('You are on Home'); + fireEvent.click(getByText('Users')); + expect(getByTestId('title').innerHTML).toEqual('You are on Users'); + fireEvent.click(getByText('RouterRedux to Home')); + expect(getByTestId('title').innerHTML).toEqual('You are on Home'); +});