UNPKG

electron-react-boilerplate

Version:

Electron application boilerplate based on React, React Router, Webpack, React Hot Loader for rapid application development

61 lines (52 loc) 1.65 kB
/* eslint no-unused-expressions: 0 */ import { expect } from 'chai'; import { spy } from 'sinon'; import React from 'react'; import { renderIntoDocument, scryRenderedDOMComponentsWithTag, findRenderedDOMComponentWithClass, Simulate } from 'react-addons-test-utils'; import Counter from '../../app/components/Counter'; function setup() { const actions = { increment: spy(), incrementIfOdd: spy(), incrementAsync: spy(), decrement: spy() }; const component = renderIntoDocument(<Counter counter={1} {...actions} />); return { component, actions, buttons: scryRenderedDOMComponentsWithTag(component, 'button').map(button => button), p: findRenderedDOMComponentWithClass(component, 'counter') }; } describe('Counter component', () => { it('should display count', () => { const { p } = setup(); expect(p.textContent).to.match(/^1$/); }); it('first button should call increment', () => { const { buttons, actions } = setup(); Simulate.click(buttons[0]); expect(actions.increment.called).to.be.true; }); it('second button should call decrement', () => { const { buttons, actions } = setup(); Simulate.click(buttons[1]); expect(actions.decrement.called).to.be.true; }); it('third button should call incrementIfOdd', () => { const { buttons, actions } = setup(); Simulate.click(buttons[2]); expect(actions.incrementIfOdd.called).to.be.true; }); it('fourth button should call incrementAsync', () => { const { buttons, actions } = setup(); Simulate.click(buttons[3]); expect(actions.incrementAsync.called).to.be.true; }); });