import {DocIntegrationFixture} from 'sentry-fixture/docIntegration'; import { BitbucketIntegrationConfigFixture, OrgOwnedAppsFixture, PluginListConfigFixture, ProviderListFixture, PublishedAppsFixture, SentryAppInstallsFixture, } from 'sentry-fixture/integrationListDirectory'; import {initializeOrg} from 'sentry-test/initializeOrg'; import {render, screen} from 'sentry-test/reactTestingLibrary'; import IntegrationListDirectory from 'sentry/views/settings/organizationIntegrations/integrationListDirectory'; const mockResponse = mocks => { mocks.forEach(([url, body]) => MockApiClient.addMockResponse({url, body})); }; describe('IntegrationListDirectory', function () { beforeEach(function () { MockApiClient.clearMockResponses(); }); const {organization: org, routerContext, routerProps} = initializeOrg(); describe('Renders view', function () { beforeEach(() => { mockResponse([ [`/organizations/${org.slug}/config/integrations/`, ProviderListFixture()], [ `/organizations/${org.slug}/integrations/`, [BitbucketIntegrationConfigFixture()], ], [`/organizations/${org.slug}/sentry-apps/`, OrgOwnedAppsFixture()], ['/sentry-apps/', PublishedAppsFixture()], ['/doc-integrations/', [DocIntegrationFixture()]], [ `/organizations/${org.slug}/sentry-app-installations/`, SentryAppInstallsFixture(), ], [`/organizations/${org.slug}/plugins/configs/`, PluginListConfigFixture()], [`/organizations/${org.slug}/repos/?status=unmigratable`, []], ]); }); it('shows installed integrations at the top in order of weight', async function () { render( , { context: routerContext, } ); expect(await screen.findByRole('textbox', {name: 'Filter'})).toBeInTheDocument(); [ 'bitbucket', 'pagerduty', 'my-headband-washer-289499', 'sample-doc', 'clickup', 'amazon-sqs', 'la-croix-monitor', ].map(testId => expect(screen.getByTestId(testId)).toBeInTheDocument()); }); it('does not show legacy plugin that has a First Party Integration if not installed', async function () { render( , {context: routerContext} ); expect(await screen.findByRole('textbox', {name: 'Filter'})).toBeInTheDocument(); expect(screen.queryByText('GitHub (Legacy)')).not.toBeInTheDocument(); }); it('shows legacy plugin that has a First Party Integration if installed', async function () { render( , {context: routerContext} ); expect(await screen.findByText('PagerDuty (Legacy)')).toBeInTheDocument(); }); }); });