123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- import {Fragment} from 'react';
- import {initializeOrg} from 'sentry-test/initializeOrg';
- import {render, screen} from 'sentry-test/reactTestingLibrary';
- import GlobalModal from 'sentry/components/globalModal';
- import MetricRulesDuplicate from 'sentry/views/alerts/rules/metric/duplicate';
- import {AlertRuleTriggerType} from 'sentry/views/alerts/rules/metric/types';
- describe('Incident Rules Duplicate', function () {
- beforeAll(function () {
- MockApiClient.addMockResponse({
- url: '/organizations/org-slug/users/',
- body: [],
- });
- MockApiClient.addMockResponse({
- url: '/organizations/org-slug/tags/',
- body: [],
- });
- MockApiClient.addMockResponse({
- url: '/projects/org-slug/project-slug/environments/',
- body: [],
- });
- MockApiClient.addMockResponse({
- url: '/organizations/org-slug/events-stats/',
- body: null,
- });
- MockApiClient.addMockResponse({
- url: '/organizations/org-slug/events-meta/',
- body: {count: 5},
- });
- MockApiClient.addMockResponse({
- url: '/organizations/org-slug/alert-rules/available-actions/',
- body: [
- {
- allowedTargetTypes: ['user', 'team'],
- integrationName: null,
- type: 'email',
- integrationId: null,
- },
- ],
- });
- MockApiClient.addMockResponse({
- url: '/organizations/org-slug/members/',
- body: [TestStubs.Member()],
- });
- });
- it('renders new alert form with values copied over', function () {
- const rule = TestStubs.MetricRule();
- rule.triggers.push({
- label: AlertRuleTriggerType.WARNING,
- alertThreshold: 60,
- actions: [],
- });
- rule.resolveThreshold = 50;
- const {organization, project, router} = initializeOrg({
- organization: {
- access: ['alerts:write'],
- },
- router: {
- // we need this to be set to make sure org in context is same as
- // current org in URL
- params: {orgId: 'org-slug'},
- location: {
- query: {
- createFromDuplicate: true,
- duplicateRuleId: `${rule.id}`,
- },
- },
- },
- project: rule.projects[0],
- projects: rule.projects,
- });
- const req = MockApiClient.addMockResponse({
- url: `/organizations/${organization.slug}/alert-rules/${rule.id}/`,
- body: rule,
- });
- render(
- <Fragment>
- <GlobalModal />
- <MetricRulesDuplicate
- params={{orgId: organization.slug}}
- route={{}}
- routeParams={router.params}
- router={router}
- routes={router.routes}
- location={router.location}
- organization={organization}
- project={project}
- userTeamIds={[]}
- />
- </Fragment>
- );
- // Duplicated alert has been called
- expect(req).toHaveBeenCalled();
- // Has correct values copied from the duplicated alert
- expect(screen.getByTestId('critical-threshold')).toHaveValue('70');
- expect(screen.getByTestId('warning-threshold')).toHaveValue('60');
- expect(screen.getByTestId('resolve-threshold')).toHaveValue('50');
- // Has the updated alert rule name
- expect(screen.getByTestId('alert-name')).toHaveValue(`${rule.name} copy`);
- });
- });
|