import React from 'react';
import {mount} from 'enzyme';
import ExternalIssueActions from 'app/components/group/externalIssueActions';
describe('ExternalIssueActions', function() {
let group = TestStubs.Group();
describe('with no external issues linked', function() {
let integration = TestStubs.GitHubIntegration({externalIssues: []});
let wrapper = mount(
,
TestStubs.routerContext()
);
it('renders', function() {
expect(wrapper).toMatchSnapshot();
});
it('renders Link GitHub Issue when no issues currently linked', function() {
expect(wrapper.find('IntegrationLink a').text()).toEqual('Link GitHub Issue');
});
describe('opens modal', function() {
MockApiClient.addMockResponse({
url: '/groups/1/integrations/1/?action=create',
body: {createIssueConfig: []},
});
it('opens when clicking text', function() {
wrapper.find('IntegrationLink a').simulate('click');
expect(
wrapper
.find('Modal')
.first()
.prop('show')
).toBe(true);
});
it('opens when clicking +', function() {
wrapper.find('OpenCloseIcon').simulate('click');
expect(
wrapper
.find('Modal')
.first()
.prop('show')
).toBe(true);
});
});
});
describe('with an external issue linked', function() {
let externalIssues = [
{
id: 100,
url: 'https://github.com/MeredithAnya/testing/issues/2',
key: 'getsentry/sentry#2',
},
];
let integration = TestStubs.GitHubIntegration({externalIssues});
let wrapper = mount(
,
TestStubs.routerContext()
);
it('renders', function() {
expect(wrapper.find('IssueSyncElement')).toMatchSnapshot();
});
it('renders Link GitHub Issue when no issues currently linked', function() {
expect(wrapper.find('IntegrationLink a').text()).toEqual('getsentry/sentry#2');
});
describe('deletes linked issue', function() {
MockApiClient.addMockResponse({
url: '/groups/1/integrations/1/?externalIssue=100',
method: 'DELETE',
});
it('deletes when clicking x', function() {
wrapper.find('OpenCloseIcon').simulate('click');
expect(wrapper.find('IntegrationLink a').text()).toEqual('Link GitHub Issue');
});
});
});
});