import {QueryClient, QueryClientProvider} from '@tanstack/react-query'; import {initializeOrg} from 'sentry-test/initializeOrg'; import {render, screen} from 'sentry-test/reactTestingLibrary'; import { DynamicSamplingMetricsAccuracyAlert, dynamicSamplingMetricsAccuracyMessage, } from './dynamicSamplingMetricsAccuracyAlert'; function ComponentProviders({children}: {children: React.ReactNode}) { const client = new QueryClient(); return {children}; } describe('Dynamic Sampling Alert', function () { it('does not render if requirements are not met', function () { const {organization, project} = initializeOrg(); const {rerender} = render( ); expect( screen.queryByText(dynamicSamplingMetricsAccuracyMessage) ).not.toBeInTheDocument(); // required feature flags are not enabled rerender( ); expect( screen.queryByText(dynamicSamplingMetricsAccuracyMessage) ).not.toBeInTheDocument(); // project is undefined }); it('renders if requirements are met', async function () { const {organization, project} = initializeOrg(); const statsV2Mock = MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/stats_v2/`, method: 'GET', body: TestStubs.OutcomesWithLowProcessedEvents(), }); render( ); expect( await screen.findByText(dynamicSamplingMetricsAccuracyMessage) ).toBeInTheDocument(); expect(screen.getByRole('button', {name: 'Adjust Sample Rates'})).toHaveAttribute( 'href', `/settings/${organization.slug}/projects/${project.slug}/dynamic-sampling/rules/uniform/?referrer=performance.rate-alert` ); expect(statsV2Mock).toHaveBeenCalledTimes(1); }); });