/*global global*/
import React from 'react';
import {Client} from 'app/api';
import {mount} from 'enzyme';
import OrganizationDeveloperSettings from 'app/views/settings/organizationDeveloperSettings/index';
describe('Organization Developer Settings', function() {
let org = TestStubs.Organization();
let sentryApp = TestStubs.SentryApp();
let routerContext = TestStubs.routerContext();
beforeEach(() => {
Client.clearMockResponses();
});
describe('when no Apps exist', () => {
Client.addMockResponse({
url: `/organizations/${org.slug}/sentry-apps/`,
body: [],
});
const wrapper = mount(
,
routerContext
);
it('displays empty state', () => {
expect(wrapper).toMatchSnapshot();
expect(wrapper.exists('EmptyMessage')).toBe(true);
});
});
describe('with unpublished apps', () => {
Client.addMockResponse({
url: `/organizations/${org.slug}/sentry-apps/`,
body: [sentryApp],
});
let wrapper = mount(
,
routerContext
);
it('displays all Apps owned by the Org', () => {
expect(wrapper).toMatchSnapshot();
expect(wrapper.find('SentryApplicationRow').prop('app').name).toBe('Sample App');
// shows correct published status
});
it('allows for deletion', async () => {
Client.addMockResponse({
url: `/sentry-apps/${sentryApp.slug}/`,
method: 'DELETE',
body: [],
});
expect(wrapper.find('[icon="icon-trash"]').prop('disabled')).toEqual(false);
wrapper.find('[icon="icon-trash"]').simulate('click');
// confirm deletion by entering in app slug
wrapper.find('input').simulate('change', {target: {value: 'sample-app'}});
wrapper
.find('ConfirmDelete Button')
.last()
.simulate('click');
await tick();
wrapper.update();
expect(wrapper.state('applications')).toEqual([]);
});
});
describe('with published apps', () => {
const publishedSentryApp = TestStubs.SentryApp({status: 'published'});
Client.addMockResponse({
url: `/organizations/${org.slug}/sentry-apps/`,
body: [publishedSentryApp],
});
let wrapper = mount(
,
routerContext
);
it('trash button is disabled', () => {
expect(wrapper).toMatchSnapshot();
expect(wrapper.find('[icon="icon-trash"]').prop('disabled')).toEqual(true);
});
});
});