import {mountWithTheme} from 'sentry-test/enzyme'; import ProjectPerformance from 'sentry/views/settings/projectPerformance/projectPerformance'; describe('projectPerformance', function () { const org = TestStubs.Organization({ features: ['performance-view', 'performance-issues-dev'], }); const project = TestStubs.ProjectDetails(); const configUrl = '/projects/org-slug/project-slug/transaction-threshold/configure/'; let getMock, postMock, deleteMock, performanceIssuesMock; beforeEach(function () { MockApiClient.clearMockResponses(); getMock = MockApiClient.addMockResponse({ url: configUrl, method: 'GET', body: { id: project.id, threshold: '300', metric: 'duration', }, statusCode: 200, }); postMock = MockApiClient.addMockResponse({ url: configUrl, method: 'POST', body: { id: project.id, threshold: '400', metric: 'lcp', }, statusCode: 200, }); deleteMock = MockApiClient.addMockResponse({ url: configUrl, method: 'DELETE', statusCode: 200, }); MockApiClient.addMockResponse({ url: '/projects/org-slug/project-slug/', method: 'GET', body: {}, statusCode: 200, }); performanceIssuesMock = MockApiClient.addMockResponse({ url: '/projects/org-slug/project-slug/performance-issues/configure/', method: 'GET', body: {}, statusCode: 200, }); }); it('renders the fields', async function () { const wrapper = mountWithTheme( ); await tick(); expect(wrapper.find('input[name="threshold"]').prop('value')).toBe('300'); expect(wrapper.find('input[name="metric"]').prop('value')).toBe('duration'); expect(getMock).toHaveBeenCalledTimes(1); }); it('updates the field', async function () { const wrapper = mountWithTheme( ); await tick(); wrapper .find('input[name="threshold"]') .simulate('change', {target: {value: '400'}}) .simulate('blur'); await tick(); expect(postMock).toHaveBeenCalledWith( configUrl, expect.objectContaining({ data: {threshold: '400'}, }) ); expect(wrapper.find('input[name="threshold"]').prop('value')).toBe('400'); }); it('clears the data', async function () { const wrapper = mountWithTheme( ); await tick(); wrapper.find('Actions').find('Button').simulate('click'); await tick(); expect(deleteMock).toHaveBeenCalled(); }); it('does not get performance issues settings without the feature flag', async function () { const org_without_perf_issues = TestStubs.Organization({ features: ['performance-view'], }); mountWithTheme( ); await tick(); expect(performanceIssuesMock).not.toHaveBeenCalled(); }); });