import React from 'react'; import {browserHistory} from 'react-router'; import {shallow} from 'enzyme'; import {Client} from 'app/api'; import ErrorRobot from 'app/components/errorRobot'; describe('ErrorRobot', function() { let getIssues; beforeEach(function() { Client.clearMockResponses(); getIssues = Client.addMockResponse({ url: '/projects/org-slug/project-slug/issues/', method: 'GET', body: [], }); }); describe('with a project', function() { let wrapper; beforeEach(function() { wrapper = shallow( ); }); it('Renders a button for creating an event', function() { let button = wrapper.find('Button[priority="link"]'); expect(button).toHaveLength(1); expect(button.props().onClick).toBeDefined(); expect(button.props().disabled).toBeFalsy(); expect(getIssues).toHaveBeenCalled(); }); it('Renders installation instructions', function() { let button = wrapper.find('Button[priority="primary"]'); expect(button).toHaveLength(1); expect(button.props().to).toEqual(expect.stringContaining('getting-started')); }); it('can create a sample event', async function() { Client.addMockResponse({ url: '/projects/org-slug/project-slug/create-sample/', method: 'POST', body: {groupID: 999}, }); wrapper.find('Button[priority="link"]').simulate('click'); await wrapper.update(); expect(browserHistory.push).toHaveBeenCalled(); }); }); describe('without a project', function() { let wrapper; beforeEach(function() { wrapper = shallow(); }); it('Renders a disabled create event button', function() { let button = wrapper.find('Button[priority="link"]'); expect(button).toHaveLength(1); expect(button.props().disabled).toBeTruthy(); expect(getIssues).toHaveBeenCalledTimes(0); }); it('does not display install instructions', function() { let button = wrapper.find('Button[priority="primary"]'); expect(button).toHaveLength(0); }); }); });