forked from react-bootstrap/react-bootstrap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNavDropdownSpec.js
67 lines (57 loc) · 2.14 KB
/
NavDropdownSpec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import React from 'react';
import ReactTestUtils from 'react/lib/ReactTestUtils';
import ReactDOM from 'react-dom';
import MenuItem from '../src/MenuItem';
import NavDropdown from '../src/NavDropdown';
describe('NavDropdown', () => {
it('Should render li when in nav', () => {
const instance = ReactTestUtils.renderIntoDocument(
<NavDropdown title="Title" className="test-class" id='nav-test'>
<MenuItem eventKey="1">MenuItem 1 content</MenuItem>
<MenuItem eventKey="2">MenuItem 2 content</MenuItem>
</NavDropdown>
);
let li = ReactDOM.findDOMNode(instance);
let button = ReactTestUtils.findRenderedDOMComponentWithClass(instance, 'dropdown-toggle');
assert.equal(li.nodeName, 'LI');
assert.ok(li.className.match(/\bdropdown\b/));
assert.ok(li.className.match(/\btest-class\b/));
assert.equal(button.nodeName, 'A');
assert.equal(button.innerText.trim(), 'Title');
});
it('is open with explicit prop', () => {
class OpenProp extends React.Component {
constructor(props) {
super(props);
this.state = {
open: false
};
}
render() {
return (
<div>
<button className='outer-button'
onClick={() => this.setState({open: !this.state.open})}>
Outer button
</button>
<NavDropdown
open={this.state.open}
onToggle={() => {}}
title='Prop open control'
id='test-id'>
<MenuItem eventKey='1'>Item 1</MenuItem>
</NavDropdown>
</div>
);
}
}
const instance = ReactTestUtils.renderIntoDocument(<OpenProp />);
const outerToggle = ReactTestUtils.findRenderedDOMComponentWithClass(instance, 'outer-button');
const dropdownNode = ReactTestUtils.findRenderedDOMComponentWithClass(instance, 'dropdown');
dropdownNode.className.should.not.match(/\bopen\b/);
ReactTestUtils.Simulate.click(outerToggle);
dropdownNode.className.should.match(/\bopen\b/);
ReactTestUtils.Simulate.click(outerToggle);
dropdownNode.className.should.not.match(/\bopen\b/);
});
});