import {MemberFixture} from 'sentry-fixture/member'; import {TeamFixture} from 'sentry-fixture/team'; import {UptimeRuleFixture} from 'sentry-fixture/uptimeRule'; import {initializeOrg} from 'sentry-test/initializeOrg'; import { render, renderGlobalModal, screen, userEvent, within, } from 'sentry-test/reactTestingLibrary'; import selectEvent from 'sentry-test/selectEvent'; import OrganizationStore from 'sentry/stores/organizationStore'; import {UptimeRulesEdit} from './edit'; describe('uptime/edit', function () { beforeEach(function () { MockApiClient.addMockResponse({ url: '/organizations/org-slug/members/', body: [MemberFixture()], }); MockApiClient.addMockResponse({ url: '/organizations/org-slug/teams/', body: [TeamFixture()], }); }); it('displays the edit form', async function () { const {organization, project, routerProps} = initializeOrg(); OrganizationStore.onUpdate(organization); const uptimeRule = UptimeRuleFixture(); const handleChangeTitle = jest.fn(); MockApiClient.addMockResponse({ url: `/projects/${organization.slug}/${project.slug}/uptime/${uptimeRule.id}/`, method: 'GET', body: uptimeRule, }); render( , {organization} ); await screen.findByText('Configure Request'); const url = screen.getByRole('textbox', {name: 'URL'}); expect(url).toHaveValue(uptimeRule.url); const name = screen.getByRole('textbox', {name: 'Uptime rule name'}); expect(name).toHaveValue(uptimeRule.name); await selectEvent.openMenu(screen.getByRole('textbox', {name: 'Owner'})); expect(screen.getByRole('menuitemradio', {name: 'Foo Bar'})).toBeChecked(); }); it('can delete rule', async function () { const {organization, project, routerProps} = initializeOrg(); OrganizationStore.onUpdate(organization); const uptimeRule = UptimeRuleFixture(); const handleChangeTitle = jest.fn(); MockApiClient.addMockResponse({ url: `/projects/${organization.slug}/${project.slug}/uptime/${uptimeRule.id}/`, method: 'GET', body: uptimeRule, }); render( , {organization} ); await screen.findByText('Configure Request'); const deleteRule = MockApiClient.addMockResponse({ url: `/projects/${organization.slug}/${project.slug}/uptime/${uptimeRule.id}/`, method: 'DELETE', }); renderGlobalModal(); await userEvent.click(screen.getByRole('button', {name: 'Delete Rule'})); const modal = await screen.findByRole('dialog'); await userEvent.click(within(modal).getByRole('button', {name: 'Delete Rule'})); expect(deleteRule).toHaveBeenCalled(); }); });