react-router
Version:
A complete routing library for React.js
65 lines (54 loc) • 1.93 kB
JavaScript
var assert = require('assert');
var expect = require('expect');
var React = require('react/addons');
var ReactTestUtils = React.addons.TestUtils;
var DefaultRoute = require('../DefaultRoute');
var Routes = require('../Routes');
var Route = require('../Route');
var Link = require('../Link');
describe('A Link', function () {
describe('with params and a query', function () {
var HomeHandler = React.createClass({
render: function () {
return Link({ ref: 'link', to: 'home', params: { username: 'mjackson' }, query: { awesome: true } });
}
});
var component;
beforeEach(function () {
component = ReactTestUtils.renderIntoDocument(
Routes({ location: 'history', initialPath: '/mjackson/home' },
Route({ name: 'home', path: '/:username/home', handler: HomeHandler })
)
);
});
afterEach(function () {
React.unmountComponentAtNode(component.getDOMNode());
});
it('knows how to make its href', function () {
var linkComponent = component.getActiveComponent().refs.link;
expect(linkComponent.getHref()).toEqual('/mjackson/home?awesome=true');
});
});
describe('when its route is active', function () {
var HomeHandler = React.createClass({
render: function () {
return Link({ ref: 'link', to: 'home', className: 'a-link', activeClassName: 'highlight' });
}
});
var component;
beforeEach(function () {
component = ReactTestUtils.renderIntoDocument(
Routes(null,
DefaultRoute({ name: 'home', handler: HomeHandler })
)
);
});
afterEach(function () {
React.unmountComponentAtNode(component.getDOMNode());
});
it('has its active class name', function () {
var linkComponent = component.getActiveComponent().refs.link;
expect(linkComponent.getClassName()).toEqual('a-link highlight');
});
});
});