UNPKG

react-bootstrap

Version:

Bootstrap 3 components build with React

130 lines (107 loc) 4.68 kB
/** @jsx React.DOM */ /*global describe, beforeEach, afterEach, it, assert */ var React = require('react'); var ReactTestUtils = require('react/lib/ReactTestUtils'); var TabbedArea = require('../cjs/TabbedArea'); var TabPane = require('../cjs/TabPane'); describe('TabbedArea', function () { it('Should show the correct tab', function () { var instance = ReactTestUtils.renderIntoDocument( <TabbedArea activeKey={1}> <TabPane tab="Tab 1" key={1} ref="pane1">Tab 1 content</TabPane> <TabPane tab="Tab 2" key={2} ref="pane2">Tab 2 content</TabPane> </TabbedArea> ); assert.equal(instance.refs.pane1.props.active, true); assert.equal(instance.refs.pane2.props.active, false); assert.equal(instance.refs.tabs.props.activeKey, 1); }); it('Should only show the tabs with `TabPane.props.tab` set', function () { var instance = ReactTestUtils.renderIntoDocument( <TabbedArea activeKey={3}> <TabPane tab="Tab 1" key={1}>Tab 1 content</TabPane> <TabPane key={2}>Tab 2 content</TabPane> <TabPane tab="Tab 2" key={3}>Tab 3 content</TabPane> </TabbedArea> ); assert.equal(instance.refs.tabs.props.children.length, 2); assert.equal(instance.refs.tabs.props.activeKey, 3); }); it('Should allow tab to have React components', function () { var tabTitle = ( <strong className="special-tab">Tab 2</strong> ); var instance = ReactTestUtils.renderIntoDocument( <TabbedArea activeKey={2}> <TabPane tab="Tab 1" key={1}>Tab 1 content</TabPane> <TabPane tab={tabTitle} key={2}>Tab 2 content</TabPane> </TabbedArea> ); assert.ok(ReactTestUtils.findRenderedDOMComponentWithClass(instance.refs.tabs, 'special-tab')); }); it('Should call onSelect when tab is selected', function (done) { function onSelect(key) { assert.equal(key, 2); done(); } var tab2 = <span>Tab2</span>; var instance = ReactTestUtils.renderIntoDocument( <TabbedArea onSelect={onSelect} activeKey={1}> <TabPane tab="Tab 1" key={1}>Tab 1 content</TabPane> <TabPane tab={tab2} key={2}>Tab 2 content</TabPane> </TabbedArea> ); ReactTestUtils.Simulate.click(tab2.getDOMNode()); }); it('Should have children with the correct DOM properties', function () { var instance = ReactTestUtils.renderIntoDocument( <TabbedArea activeKey={1}> <TabPane tab="Tab 1" className="custom" id="pane0id" key={1} ref="pane1">Tab 1 content</TabPane> <TabPane tab="Tab 2" key={2}>Tab 2 content</TabPane> </TabbedArea> ); assert.ok(instance.refs.pane1.getDOMNode().className.match(/\bcustom\b/)); assert.equal(instance.refs.pane1.getDOMNode().id, 'pane0id'); }); it('Should show the correct initial pane', function () { var instance = ReactTestUtils.renderIntoDocument( <TabbedArea initialActiveKey={2}> <TabPane tab="Tab 1" key={1} ref="pane1">Tab 1 content</TabPane> <TabPane tab="Tab 2" key={2} ref="pane2">Tab 2 content</TabPane> </TabbedArea> ); assert.equal(instance.refs.pane1.props.active, false); assert.equal(instance.refs.pane2.props.active, true); assert.equal(instance.refs.tabs.props.activeKey, 2); }); it('Should show the correct first tab with no active key value', function () { var instance = ReactTestUtils.renderIntoDocument( <TabbedArea> <TabPane tab="Tab 1" key={1} ref="pane1">Tab 1 content</TabPane> <TabPane tab="Tab 2" key={2} ref="pane2">Tab 2 content</TabPane> </TabbedArea> ); assert.equal(instance.refs.pane1.props.active, true); assert.equal(instance.refs.pane2.props.active, false); assert.equal(instance.refs.tabs.props.activeKey, 1); }); it('Should show the correct tab when selected', function (done) { var tab1 = <span>Tab 1</span>; var instance = ReactTestUtils.renderIntoDocument( <TabbedArea initalActiveKey={2}> <TabPane tab={tab1} key={1} ref="pane1">Tab 1 content</TabPane> <TabPane tab="Tab 2" key={2} ref="pane2">Tab 2 content</TabPane> </TabbedArea> ); // Override `componentDidUpdate` for now, but this should be replaced // with `ReactTestUtils#nextUpdate()` when it is merged. // @see https://github.com/facebook/react/pull/948 instance.componentDidUpdate = function () { assert.equal(instance.refs.pane1.props.active, true); assert.equal(instance.refs.pane2.props.active, false); assert.equal(instance.refs.tabs.props.activeKey, 1); done(); }; ReactTestUtils.Simulate.click(tab1.getDOMNode()); }); });