|
| 1 | +/*global describe, beforeEach, afterEach, it, assert */ |
| 2 | + |
| 3 | +var React = require('react'); |
| 4 | +var ReactTestUtils = require('react/lib/ReactTestUtils'); |
| 5 | +var Navbar = require('../lib/Navbar'); |
| 6 | +var CollapsableNav = require('../lib/CollapsableNav'); |
| 7 | +var Nav = require('../lib/Nav'); |
| 8 | +var NavItem = require('../lib/NavItem'); |
| 9 | + |
| 10 | +describe('CollapsableNav', function () { |
| 11 | + it('Should create div and add collapse class', function () { |
| 12 | + var instance = ReactTestUtils.renderIntoDocument( |
| 13 | + <Navbar toggleNavKey={1}> |
| 14 | + <CollapsableNav eventKey={1}> |
| 15 | + <Nav> |
| 16 | + <NavItem eventKey={1} ref="item1">Item 1 content</NavItem> |
| 17 | + <NavItem eventKey={2} ref="item2">Item 2 content</NavItem> |
| 18 | + </Nav> |
| 19 | + </CollapsableNav> |
| 20 | + </Navbar> |
| 21 | + ); |
| 22 | + assert.ok(ReactTestUtils.findRenderedDOMComponentWithClass(instance, 'navbar-collapse')); |
| 23 | + }); |
| 24 | + |
| 25 | + it('Should handle multiple Nav elements', function () { |
| 26 | + var instance = ReactTestUtils.renderIntoDocument( |
| 27 | + <Navbar toggleNavKey={1}> |
| 28 | + <CollapsableNav eventKey={1} ref="collapsable_object"> |
| 29 | + <Nav> |
| 30 | + <NavItem eventKey={1} ref="item1">Item 1 content</NavItem> |
| 31 | + <NavItem eventKey={2} ref="item2">Item 2 content</NavItem> |
| 32 | + </Nav> |
| 33 | + <Nav> |
| 34 | + <NavItem eventKey={1} ref="item1">Item 1 content</NavItem> |
| 35 | + <NavItem eventKey={2} ref="item2">Item 2 content</NavItem> |
| 36 | + </Nav> |
| 37 | + </CollapsableNav> |
| 38 | + </Navbar> |
| 39 | + ); |
| 40 | + assert.ok(ReactTestUtils.findRenderedComponentWithType(instance.refs.collapsable_object.refs.collapsable_0, Nav)); |
| 41 | + assert.ok(ReactTestUtils.findRenderedComponentWithType(instance.refs.collapsable_object.refs.collapsable_1, Nav)); |
| 42 | + }); |
| 43 | + |
| 44 | + it('Should just render children and move along if not in <Navbar>', function () { |
| 45 | + var instance = ReactTestUtils.renderIntoDocument( |
| 46 | + <CollapsableNav eventKey={1}> |
| 47 | + <Nav> |
| 48 | + <NavItem eventKey={1} ref="item1">Item 1 content</NavItem> |
| 49 | + <NavItem eventKey={2} ref="item2">Item 2 content</NavItem> |
| 50 | + </Nav> |
| 51 | + </CollapsableNav> |
| 52 | + ); |
| 53 | + assert.notOk(instance.getDOMNode().className.match(/\navbar-collapse\b/)); |
| 54 | + assert.ok(ReactTestUtils.findRenderedComponentWithType(instance.refs.nocollapse_0, Nav)); |
| 55 | + }); |
| 56 | + |
| 57 | + it('Should retain childrens classes set by className', function () { |
| 58 | + var instance = ReactTestUtils.renderIntoDocument( |
| 59 | + <Navbar toggleNavKey={1}> |
| 60 | + <CollapsableNav eventKey={1} ref="collapsable_object"> |
| 61 | + <Nav> |
| 62 | + <NavItem eventKey={1} ref="item1" className="foo bar">Item 1 content</NavItem> |
| 63 | + <NavItem eventKey={2} ref="item2" className="baz">Item 2 content</NavItem> |
| 64 | + </Nav> |
| 65 | + </CollapsableNav> |
| 66 | + </Navbar> |
| 67 | + ); |
| 68 | + assert.ok(ReactTestUtils.findRenderedDOMComponentWithClass(instance.refs.collapsable_object.refs.collapsable_0, 'foo')); |
| 69 | + assert.ok(ReactTestUtils.findRenderedDOMComponentWithClass(instance.refs.collapsable_object.refs.collapsable_0, 'bar')); |
| 70 | + assert.ok(ReactTestUtils.findRenderedDOMComponentWithClass(instance.refs.collapsable_object.refs.collapsable_0, 'baz')); |
| 71 | + }); |
| 72 | + |
| 73 | + it('Should should not duplicate classes', function () { |
| 74 | + var instance = ReactTestUtils.renderIntoDocument( |
| 75 | + <Navbar toggleNavKey={1}> |
| 76 | + <CollapsableNav eventKey={1} ref="collapsable_object" className="foo navbar-collapse"> |
| 77 | + <Nav> |
| 78 | + <NavItem eventKey={1} ref="item1" className="foo bar">Item 1 content</NavItem> |
| 79 | + <NavItem eventKey={2} ref="item2" className="baz">Item 2 content</NavItem> |
| 80 | + </Nav> |
| 81 | + </CollapsableNav> |
| 82 | + </Navbar> |
| 83 | + ); |
| 84 | + var classDOM = ReactTestUtils.findRenderedDOMComponentWithTag(instance.refs.collapsable_object, 'DIV').props.className |
| 85 | + , class_array = classDOM.split(" ") |
| 86 | + , idx = class_array.indexOf('navbar-collapse'); |
| 87 | + assert.equal(class_array.indexOf('navbar-collapse',idx+1), -1); |
| 88 | + }); |
| 89 | +}); |
0 commit comments