import {OrganizationFixture} from 'sentry-fixture/organization'; import {PluginFixture} from 'sentry-fixture/plugin'; import {PluginsFixture} from 'sentry-fixture/plugins'; import {ProjectFixture} from 'sentry-fixture/project'; import {RouteComponentPropsFixture} from 'sentry-fixture/routeComponentPropsFixture'; import {render, screen, userEvent, waitFor} from 'sentry-test/reactTestingLibrary'; import * as indicators from 'sentry/actionCreators/indicator'; import ProjectPluginDetailsContainer, { ProjectPluginDetails, } from 'sentry/views/settings/projectPlugins/details'; describe('ProjectPluginDetails', function () { const organization = OrganizationFixture(); const project = ProjectFixture(); const plugins = PluginsFixture(); const plugin = PluginFixture(); const routerProps = RouteComponentPropsFixture(); beforeAll(function () { jest.spyOn(console, 'info').mockImplementation(() => {}); }); beforeEach(function () { MockApiClient.addMockResponse({ url: `/projects/${organization.slug}/${project.slug}/plugins/`, method: 'GET', body: plugins, }); MockApiClient.addMockResponse({ url: `/projects/${organization.slug}/${project.slug}/plugins/${plugin.id}/`, method: 'DELETE', }); MockApiClient.addMockResponse({ url: `/projects/${organization.slug}/${project.slug}/plugins/${plugin.id}/`, method: 'GET', body: plugin, }); MockApiClient.addMockResponse({ url: `/projects/${organization.slug}/${project.slug}/plugins/${plugin.id}/`, method: 'POST', body: { ...plugin, config: [{value: 'default'}], }, }); }); it('renders', async function () { render( ); expect(await screen.findByRole('heading', {name: 'Amazon SQS'})).toBeInTheDocument(); }); it('resets plugin', async function () { jest.spyOn(indicators, 'addSuccessMessage'); render( ); await userEvent.click(screen.getByRole('button', {name: 'Reset Configuration'})); await waitFor(() => expect(indicators.addSuccessMessage).toHaveBeenCalledWith('Plugin was reset') ); }); it('enables/disables plugin', async function () { jest.spyOn(indicators, 'addSuccessMessage'); render( ); await userEvent.click(screen.getByRole('button', {name: 'Enable Plugin'})); await waitFor(() => expect(indicators.addSuccessMessage).toHaveBeenCalledWith('Plugin was enabled') ); }); });