UNPKG

@appearhere/bloom

Version:

Appear Here's pattern library and styleguide

107 lines (91 loc) 2.5 kB
import React, { Component } from 'react'; import ReactDOM from 'react-dom'; import IndicatorGroup from './IndicatorGroup'; // Test component *must* be a class so refs work /* eslint-disable react/prefer-stateless-function */ /* eslint-disable class-methods-use-this */ class TestComp extends Component { render() { return ( <div /> ); } } /* eslint-enable class-methods-use-this */ /* eslint-enable react/prefer-stateless-function */ it('renders without crashing', () => { const div = document.createElement('div'); ReactDOM.render( <IndicatorGroup> { indicator => indicator({ i: 0 }) } </IndicatorGroup>, div ); }); it('outputs children of the correct type', () => { let renderedComponent = null; const div = document.createElement('div'); ReactDOM.render( <IndicatorGroup Component={TestComp}> { indicator => indicator({ i: 0, ref: (c) => { renderedComponent = c; }, }) } </IndicatorGroup>, div ); expect(renderedComponent instanceof TestComp).toBe(true); }); it('passes an active prop to it’s children', () => { let renderedComponent = null; const div = document.createElement('div'); ReactDOM.render( <IndicatorGroup Component={TestComp}> { indicator => indicator({ i: 0, ref: (c) => { renderedComponent = c; }, }) } </IndicatorGroup>, div ); expect('active' in renderedComponent.props).toBe(true); }); it('passes the active prop to the correct child', () => { let regularComponent = null; let activeComponent = null; const div = document.createElement('div'); ReactDOM.render( <IndicatorGroup Component={TestComp} activeIndicator={1}> { indicator => ( <span> { indicator({ i: 0, ref: (c) => { regularComponent = c; }, }) } { indicator({ i: 1, ref: (c) => { activeComponent = c; }, }) } </span> ) } </IndicatorGroup>, div ); expect(regularComponent.props.active).toBe(false); expect(activeComponent.props.active).toBe(true); }); it('throws when it’s children aren’t given indices', () => { const div = document.createElement('div'); let hasThrown = false; try { ReactDOM.render( <IndicatorGroup Component={TestComp}> { indicator => indicator() } </IndicatorGroup>, div ); } catch (e) { hasThrown = true; } expect(hasThrown).toBe(true); });