import {mountWithTheme} from 'sentry-test/enzyme';
import ProjectPluginDetailsContainer, {
ProjectPluginDetails,
} from 'sentry/views/settings/projectPlugins/details';
describe('ProjectPluginDetails', function () {
let component;
const organization = TestStubs.Organization();
const project = TestStubs.Project();
const org = organization;
const plugins = TestStubs.Plugins();
const plugin = TestStubs.Plugin();
const pluginId = plugin.id;
beforeAll(function () {
jest.spyOn(console, 'info').mockImplementation(() => {});
});
beforeEach(function () {
MockApiClient.addMockResponse({
url: `/projects/${org.slug}/${project.slug}/plugins/`,
method: 'GET',
body: plugins,
});
MockApiClient.addMockResponse({
url: `/projects/${org.slug}/${project.slug}/plugins/${pluginId}/`,
method: 'DELETE',
});
MockApiClient.addMockResponse({
url: `/projects/${org.slug}/${project.slug}/plugins/${pluginId}/`,
method: 'GET',
body: plugin,
});
MockApiClient.addMockResponse({
url: `/projects/${org.slug}/${project.slug}/plugins/${pluginId}/`,
method: 'POST',
body: {
...plugin,
config: [{value: 'default'}],
},
});
component = mountWithTheme(
);
});
afterAll(function () {
// eslint-disable-next-line no-console
console.info.mockRestore();
});
it('renders', function () {
expect(component).toSnapshot();
});
it('resets plugin', function () {
// Test component instead of container so that we can access state
const wrapper = mountWithTheme(
);
const btn = wrapper.find('button').at(1);
btn.simulate('click');
expect(wrapper.state().pluginDetails.config[0].value).toBe('default');
});
it('enables/disables plugin', async function () {
const btn = component.find('button').first();
expect(btn.text()).toBe('Enable Plugin');
btn.simulate('click');
await tick();
component.update();
expect(btn.text()).toBe('Disable Plugin');
});
});