123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- import {OrganizationFixture} from 'sentry-fixture/organization';
- import {initializeOrg} from 'sentry-test/initializeOrg';
- import {render, screen} from 'sentry-test/reactTestingLibrary';
- import PageFiltersStore from 'sentry/stores/pageFiltersStore';
- import {normalizeUrl} from 'sentry/utils/withDomainRequired';
- import ThresholdsList from 'sentry/views/releases/thresholdsList/';
- describe('ReleaseThresholdsList', () => {
- const organization = OrganizationFixture({
- slug: 'test-thresholds',
- features: ['releases-v2'],
- });
- const {router, routerContext} = initializeOrg({
- organization,
- });
- let mockThresholdFetch;
- beforeEach(() => {
- mockThresholdFetch = MockApiClient.addMockResponse({
- url: `/organizations/${organization.slug}/release-thresholds/`,
- method: 'GET',
- body: [],
- });
- PageFiltersStore.init();
- });
- afterEach(() => {
- PageFiltersStore.reset();
- MockApiClient.clearMockResponses();
- });
- it('redirects to releases if flag is not set', () => {
- const organization2 = OrganizationFixture({
- slug: 'test-thresholds-no-flag',
- features: [],
- });
- const {router: flaglessRouter, routerContext: flaglessRouterContext} = initializeOrg({
- organization: organization2,
- });
- const expectedRedirect = normalizeUrl(
- `/organizations/${organization2.slug}/releases/`
- );
- render(<ThresholdsList />, {
- context: flaglessRouterContext,
- organization: organization2,
- });
- expect(flaglessRouter.replace).toHaveBeenCalledTimes(1);
- expect(flaglessRouter.replace).toHaveBeenCalledWith(expectedRedirect);
- });
- it('fetches release thresholds for selected projects', async () => {
- const query = {
- project: [-1],
- };
- PageFiltersStore.onInitializeUrlState(
- {
- projects: [],
- environments: [],
- datetime: {start: null, end: null, period: '1d', utc: null},
- },
- new Set()
- );
- routerContext.context.location.pathname = normalizeUrl(
- `/organizations/${organization.slug}/release-thresholds/`
- );
- render(<ThresholdsList />, {
- context: routerContext,
- organization,
- });
- expect(await screen.findByText('Thresholds')).toBeInTheDocument();
- expect(mockThresholdFetch).toHaveBeenCalledWith(
- '/organizations/test-thresholds/release-thresholds/',
- expect.objectContaining({query})
- );
- expect(router.replace).not.toHaveBeenCalled();
- });
- it('filters fetch based on projects/environments selected', async () => {
- const expectedQuery = {
- project: [1, 2, 3],
- environment: ['foo'],
- };
- PageFiltersStore.onInitializeUrlState(
- {
- projects: [1, 2, 3],
- environments: ['foo'],
- datetime: {start: null, end: null, period: '14d', utc: null},
- },
- new Set()
- );
- routerContext.context.location.pathname = normalizeUrl(
- `/organizations/${organization.slug}/release-thresholds/`
- );
- render(<ThresholdsList />, {context: routerContext, organization});
- expect(await screen.findByText('Thresholds')).toBeInTheDocument();
- expect(mockThresholdFetch).toHaveBeenCalledWith(
- '/organizations/test-thresholds/release-thresholds/',
- expect.objectContaining({query: expectedQuery})
- );
- });
- });
|