/* eslint-env jest */ import {browserHistory} from 'react-router'; import React from 'react'; import {mount, shallow} from 'enzyme'; import GroupSimilarView from 'app/views/groupSimilar/groupSimilarView'; import issues from '../../mocks/issues'; jest.mock('app/mixins/projectState', () => { return { getFeatures: () => new Set([]), getProjectFeatures: () => new Set(['similarity-view']), }; }); const scores = [ {'exception:stacktrace:pairs': 0.375}, {'exception:stacktrace:pairs': 0.01264}, {'exception:stacktrace:pairs': 0.875}, { 'exception:stacktrace:application-chunks': 0.000235, 'exception:stacktrace:pairs': 0.001488, }, ]; const mockData = { similar: issues.map((issue, i) => [issue, scores[i]]), }; describe('Issues Similar View', function() { let mock; beforeEach(function() { mock = MockApiClient.addMockResponse({ url: '/issues/group-id/similar/?limit=50', body: mockData.similar, }); }); it('renders initially with loading component', function() { let component = shallow( ); expect(component).toMatchSnapshot(); }); it('renders with mocked data', async function() { let wrapper = mount( , TestStubs.routerContext() ); await tick(); await tick(); wrapper.update(); expect(mock).toHaveBeenCalled(); expect(wrapper.find('GroupGroupingView')).toMatchSnapshot(); }); it('can merge and redirect to new parent', async function() { let wrapper = mount( , TestStubs.routerContext() ); let merge = MockApiClient.addMockResponse({ method: 'PUT', url: '/projects/org-slug/project-slug/issues/', body: { merge: {children: ['123'], parent: '321'}, }, }); await tick(); await tick(); wrapper.update(); wrapper .find('[data-test-id="similar-item-row"]') .first() .simulate('click'); await tick(); wrapper.update(); wrapper.find('[data-test-id="merge"] a').simulate('click'); wrapper.find('Button[data-test-id="confirm-modal"]').simulate('click'); await tick(); wrapper.update(); expect(merge).toHaveBeenCalledWith( '/projects/org-slug/project-slug/issues/', expect.objectContaining({ data: {merge: 1}, }) ); expect(browserHistory.push).toHaveBeenCalledWith( '/org-slug/project-slug/issues/321/similar/' ); }); });