import {OrganizationIntegrationsFixture} from 'sentry-fixture/organizationIntegrations'; import {render, screen} from 'sentry-test/reactTestingLibrary'; import selectEvent from 'sentry-test/selectEvent'; import type {IssueAlertNotificationProps} from 'sentry/views/projectInstall/issueAlertNotificationOptions'; import MessagingIntegrationAlertRule from 'sentry/views/projectInstall/messagingIntegrationAlertRule'; describe('MessagingIntegrationAlertRule', function () { const slackIntegrations = [ OrganizationIntegrationsFixture({ name: "Moo Deng's Workspace", }), OrganizationIntegrationsFixture({ name: "Moo Waan's Workspace", }), ]; const discordIntegrations = [ OrganizationIntegrationsFixture({ name: "Moo Deng's Server", }), ]; const msteamsIntegrations = [ OrganizationIntegrationsFixture({ name: "Moo Deng's Team", }), ]; const providersToIntegrations = { slack: slackIntegrations, discord: discordIntegrations, msteams: msteamsIntegrations, }; const mockSetChannel = jest.fn(); const mockSetIntegration = jest.fn(); const mockSetProvider = jest.fn(); const notificationProps: IssueAlertNotificationProps = { actions: [], channel: 'channel', integration: slackIntegrations[0], provider: 'slack', providersToIntegrations: providersToIntegrations, querySuccess: true, shouldRenderSetupButton: false, setActions: jest.fn(), setChannel: mockSetChannel, setIntegration: mockSetIntegration, setProvider: mockSetProvider, }; const getComponent = () => ; it('renders', function () { render(getComponent()); expect(screen.getAllByRole('textbox')).toHaveLength(3); }); it('calls setter when new integration is selected', async function () { render(getComponent()); await selectEvent.select( screen.getByText("Moo Deng's Workspace"), "Moo Waan's Workspace" ); expect(mockSetIntegration).toHaveBeenCalled(); }); it('calls setters when new provider is selected', async function () { render(getComponent()); await selectEvent.select(screen.getByText('Slack'), 'Discord'); expect(mockSetProvider).toHaveBeenCalled(); expect(mockSetIntegration).toHaveBeenCalled(); expect(mockSetChannel).toHaveBeenCalled(); }); it('disables provider select when there is only one provider option', function () { render( ); expect(screen.getByLabelText('provider')).toBeDisabled(); }); it('disables integration select when there is only one integration option', function () { render( ); expect(screen.getByLabelText('integration')).toBeDisabled(); }); });