import {OrganizationFixture} from 'sentry-fixture/organization'; import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import {SamplingModeSwitch} from 'sentry/views/settings/dynamicSampling/samplingModeSwitch'; import {openSamplingModeSwitchModal} from 'sentry/views/settings/dynamicSampling/samplingModeSwitchModal'; jest.mock('sentry/views/settings/dynamicSampling/samplingModeSwitchModal'); describe('SamplingModeSwitch', function () { const organization = OrganizationFixture({ access: ['org:write'], samplingMode: 'organization', }); beforeEach(() => { MockApiClient.clearMockResponses(); }); it('renders correctly in organization mode', function () { render(, { organization, }); expect(screen.getByRole('checkbox')).toBeEnabled(); expect(screen.getByText('Advanced Mode')).toBeInTheDocument(); expect(screen.getByRole('checkbox')).not.toBeChecked(); }); it('renders correctly in project mode', function () { render(, { organization: {...organization, samplingMode: 'project'}, }); expect(screen.getByRole('checkbox')).toBeChecked(); }); it('opens modal when switch is clicked', async function () { render(, { organization, }); await userEvent.click(screen.getByRole('checkbox')); expect(openSamplingModeSwitchModal).toHaveBeenCalledWith({ samplingMode: 'project', initialTargetRate: 0.3, }); }); it('disables switch when user lacks permission', function () { const orgWithoutAccess = OrganizationFixture({ access: [], // No project:write access samplingMode: 'organization', }); render(, { organization: orgWithoutAccess, }); expect(screen.getByRole('checkbox')).toBeDisabled(); }); });