diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/javascript/components/avatar.test.jsx | 12 | ||||
-rw-r--r-- | spec/javascript/components/button.test.jsx | 14 | ||||
-rw-r--r-- | spec/javascript/components/loading_indicator.test.jsx | 11 | ||||
-rw-r--r-- | spec/javascript/setup.js | 22 |
4 files changed, 59 insertions, 0 deletions
diff --git a/spec/javascript/components/avatar.test.jsx b/spec/javascript/components/avatar.test.jsx new file mode 100644 index 000000000..79b7d02f4 --- /dev/null +++ b/spec/javascript/components/avatar.test.jsx @@ -0,0 +1,12 @@ +import { expect } from 'chai'; +import { render } from 'enzyme'; + +import Avatar from '../../../app/assets/javascripts/components/components/avatar' + +describe('<Avatar />', () => { + it('renders an img with the given src', () => { + const src = '/path/to/image.jpg'; + const wrapper = render(<Avatar src={src} size={100} />); + expect(wrapper.find(`img[src="${src}"]`)).to.have.length(1); + }); +}); diff --git a/spec/javascript/components/button.test.jsx b/spec/javascript/components/button.test.jsx new file mode 100644 index 000000000..0f16ebe8e --- /dev/null +++ b/spec/javascript/components/button.test.jsx @@ -0,0 +1,14 @@ +import { expect } from 'chai'; +import { shallow } from 'enzyme'; +import sinon from 'sinon'; + +import Button from '../../../app/assets/javascripts/components/components/button' + +describe('<Button />', () => { + it('simulates click events', () => { + const onClick = sinon.spy(); + const wrapper = shallow(<Button onClick={onClick} />); + wrapper.find('button').simulate('click'); + expect(onClick.calledOnce).to.equal(true); + }); +}); diff --git a/spec/javascript/components/loading_indicator.test.jsx b/spec/javascript/components/loading_indicator.test.jsx new file mode 100644 index 000000000..7039dbfbd --- /dev/null +++ b/spec/javascript/components/loading_indicator.test.jsx @@ -0,0 +1,11 @@ +import { expect } from 'chai'; +import { shallow } from 'enzyme'; + +import LoadingIndicator from '../../../app/assets/javascripts/components/components/loading_indicator' + +describe('<LoadingIndicator />', () => { + it('renders text that indicates loading', () => { + const wrapper = shallow(<LoadingIndicator />); + expect(wrapper.text()).to.match(/loading/i); + }); +}); diff --git a/spec/javascript/setup.js b/spec/javascript/setup.js new file mode 100644 index 000000000..636cdcc7e --- /dev/null +++ b/spec/javascript/setup.js @@ -0,0 +1,22 @@ +/** + * http://airbnb.io/enzyme/docs/guides/jsdom.html + */ +var jsdom = require('jsdom').jsdom; + +var exposedProperties = ['window', 'navigator', 'document']; + +global.document = jsdom(''); +global.window = document.defaultView; +Object.keys(document.defaultView).forEach((property) => { + if (typeof global[property] === 'undefined') { + exposedProperties.push(property); + global[property] = document.defaultView[property]; + } +}); + +global.navigator = { + userAgent: 'node.js' +}; + +var React = window.React = global.React = require('react'); +var ReactDOM = window.ReactDOM = global.ReactDOM = require('react-dom'); |