UNPKG

sc-react-ions

Version:

An open source set of React components that implement Ambassador's Design and UX patterns.

54 lines (43 loc) 2.52 kB
import React from 'react' import { PanelGroup, Panel, PanelHeader, PanelContent } from '../src/components/PanelGroup' describe('PanelGroup', () => { let panelGroup, panel it('should shallow render itself', () => { panelGroup = shallow(<PanelGroup />) expect(panelGroup.find('div')).to.have.length(1) expect(panelGroup.hasClass('panel-group')).to.equal(true) }) it('should render with an optional CSS class', () => { panelGroup = shallow(<PanelGroup optClass='test' />) expect(panelGroup.hasClass('panel-group test')).to.equal(true) }) it('should render with one panel active', () => { panelGroup = shallow(<PanelGroup activePanels={[0]}><Panel><PanelHeader title='Rating' /><PanelContent>Test Content</PanelContent></Panel></PanelGroup>) panel = panelGroup.childAt(0) expect(panel.props().panelIndex).to.equal(0) expect(panel.props().active).to.equal(true) expect(typeof panel.props().onPanelClick).to.equal('function') }) it('should render with two panels active', () => { panelGroup = shallow(<PanelGroup activePanels={[0, 1]}><Panel><PanelHeader title='Rating' /><PanelContent>Test Content</PanelContent></Panel><Panel><PanelHeader title='Rating' /><PanelContent>Test Content</PanelContent></Panel></PanelGroup>) panel = panelGroup.childAt(1) expect(panel.props().panelIndex).to.equal(1) expect(panel.props().active).to.equal(true) }) it('should render with no active panels', () => { panelGroup = shallow(<PanelGroup><Panel><PanelHeader title='Rating' /><PanelContent>Test Content</PanelContent></Panel></PanelGroup>) panel = panelGroup.childAt(0) expect(panel.props().active).to.equal(false) }) it('should trigger a panel toggle callback when a panel header is clicked', () => { const onPanelToggleStub = sinon.stub() panelGroup = shallow(<PanelGroup onPanelToggle={onPanelToggleStub}><Panel><PanelHeader title='Rating' /><PanelContent>Test Content</PanelContent></Panel><Panel><PanelHeader title='Rating' /><PanelContent>Test Content</PanelContent></Panel></PanelGroup>) panelGroup.instance().onPanelToggle() expect(onPanelToggleStub.calledOnce).to.be.true expect(onPanelToggleStub.calledWithExactly([])).to.be.true }) it('should return a PanelHeader', () => { panelGroup = shallow(<PanelGroup activePanels={[0]}><Panel><PanelHeader title='Rating' /><PanelContent>Test Content</PanelContent></Panel></PanelGroup>) expect(panelGroup.find(PanelHeader)).to.be.length(1) }) })