UNPKG

rsuite

Version:

A suite of react components

101 lines (87 loc) 3.25 kB
import React from 'react'; import ReactTestUtils from 'react-dom/test-utils'; import { getDOMNode } from '@test/testUtils'; import Sidenav from '../Sidenav'; import Nav from '../../Nav'; import Dropdown from '../../Dropdown'; describe('Sidenav', () => { it('Should render a navigation', () => { const instance = getDOMNode(<Sidenav />); assert.include(instance.className, 'rs-sidenav'); }); it('Should apply appearance', () => { const instance = getDOMNode(<Sidenav appearance="subtle" />); assert.include(instance.className, 'rs-sidenav-subtle'); }); it('Should be expanded', () => { const instance = getDOMNode(<Sidenav expanded />); assert.include(instance.className, 'rs-sidenav-collapse-in'); }); it('Should call onSelect callback', done => { const doneOp = () => { done(); }; const instance = getDOMNode( <Sidenav onSelect={doneOp}> <Nav> <Nav.Item eventKey="1">a</Nav.Item> <Nav.Item eventKey="2">b</Nav.Item> </Nav> </Sidenav> ); ReactTestUtils.Simulate.click(instance.querySelector('.rs-nav-item-content')); }); it('Should call onOpenChange callback', done => { const doneOp = () => { done(); }; const instance = getDOMNode( <Sidenav onOpenChange={doneOp}> <Nav> <Nav.Item eventKey="1">a</Nav.Item> <Nav.Item eventKey="2">b</Nav.Item> <Dropdown eventKey="3" title="3"> <Dropdown.Item eventKey="3-1">3-1</Dropdown.Item> <Dropdown.Item eventKey="3-2">3-2</Dropdown.Item> </Dropdown> </Nav> </Sidenav> ); ReactTestUtils.Simulate.click(instance.querySelector('.rs-dropdown-toggle')); }); it('Should open the default menu', () => { const instance = getDOMNode( <Sidenav defaultOpenKeys={['1', '2']}> <Sidenav.Body> <Nav> <Dropdown eventKey="1" title="1" className="m-1"> <Dropdown.Item eventKey="1-1">Geo</Dropdown.Item> </Dropdown> <Dropdown eventKey="2" title="2" className="m-2"> <Dropdown.Item eventKey="2-1">2-1</Dropdown.Item> <Dropdown.Menu eventKey="2-2" title="2-2" className="m-2-2"> <Dropdown.Item eventKey="2-2-1">2-2-1</Dropdown.Item> </Dropdown.Menu> </Dropdown> </Nav> </Sidenav.Body> </Sidenav> ); assert.ok(instance.querySelector('.m-1 .rs-dropdown-menu-collapse-in')); assert.ok(instance.querySelector('.m-2 .rs-dropdown-menu-collapse-in')); assert.ok(instance.querySelector('.m-2-2 .rs-dropdown-menu-collapse-out')); }); it('Should have a custom className', () => { const instance = getDOMNode(<Sidenav className="custom" />); assert.include(instance.className, 'custom'); }); it('Should have a custom style', () => { const fontSize = '12px'; const instance = getDOMNode(<Sidenav style={{ fontSize }} />); assert.equal(instance.style.fontSize, fontSize); }); it('Should have a custom className prefix', () => { const instance = getDOMNode(<Sidenav classPrefix="custom-prefix" />); assert.ok(instance.className.match(/\bcustom-prefix\b/)); }); });