Skip to content

tangzhen/amylase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

amylase

npm version build status

This package is used help you upgrade the react-router old version(0.13.x) to newer version(3.x).

Use plain json configuration to config the routes(data schema use v4.0 react-router-config)

import {createRoute, render} from 'amylase';

const routeConfig = {
  name: 'appName',
  path: '/',
  component: component
};
const routes = createRoute(routeConfig);

// Render
// ReactDom.render(<Router routes={routes} />, app);
render(ReactDom.render, routes, app, callback); // callback is 0.13 router change callback

Use HOC withRouter to replace the Navigation mixin.

const {push, replace, goBack} = require('amylase');

const ReactComponent = React.createClass({
  propTypes: {
    router: React.PropTypes.func // The router constructor function
  },
  
  divTap() {
    push(this.props.router, '/air/booking/shopping');
  },

  render() {
    return (<div onClick={this.divTap}>{'Component'}</div>)
  }
});

Use routerStub help us do assertion in you unit test, because we use the HOC, so we can pass router props to origin component instead of mount component with router context.

import {push, replace, goBack} from 'amylase';

describe('Unit test', () => {
  const RouterStub = require('amylase').routerStub(sinon);
  
  it('should push path', () => {
    // mount component with router props
    mount(<Component router={RouterStub} />);
    // click element
    
    // assert history change
    expect(RouterStub.pushStub).to.have.been.calledWith('path');
    expect(RouterStub.replaceStub).to.have.been.calledWith('path');
    expect(RouterStub.goBack).to.have.been.called;
  });
});

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published