Files
2024-02-15 17:01:50 +00:00

102 lines
2.9 KiB
TypeScript

import {LocationFixture} from 'sentry-fixture/locationFixture';
import {OrganizationFixture} from 'sentry-fixture/organization';
import {ProjectFixture} from 'sentry-fixture/project';
import {RouterFixture} from 'sentry-fixture/routerFixture';
import {initializeOrg} from 'sentry-test/initializeOrg';
import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import EventView from 'sentry/utils/discover/eventView';
import {DISPLAY_MODE_OPTIONS, DisplayModes} from 'sentry/utils/discover/types';
import ResultsChart from 'sentry/views/discover/resultsChart';
describe('Discover > ResultsChart', function () {
const features = ['discover-basic'];
const location = LocationFixture({
query: {query: 'tag:value'},
pathname: '/',
});
const organization = OrganizationFixture({
features,
projects: [ProjectFixture()],
});
const initialData = initializeOrg({
organization,
router: {
location,
},
projects: [],
});
const eventView = EventView.fromSavedQueryOrLocation(undefined, location);
beforeEach(() => {
MockApiClient.addMockResponse({
url: '/organizations/org-slug/releases/stats/',
body: [],
});
MockApiClient.addMockResponse({
url: '/organizations/org-slug/events-stats/',
body: [],
});
});
it('only allows default, daily, previous period, and bar display modes when multiple y axis are selected', async function () {
render(
<ResultsChart
router={RouterFixture()}
organization={organization}
eventView={eventView}
location={location}
onAxisChange={() => undefined}
onIntervalChange={() => undefined}
onDisplayChange={() => undefined}
total={1}
confirmedQuery
yAxis={['count()', 'failure_count()']}
onTopEventsChange={() => {}}
/>,
{context: initialData.routerContext}
);
await userEvent.click(screen.getByText(/Display/));
DISPLAY_MODE_OPTIONS.forEach(({value, label}) => {
if (
[
DisplayModes.DEFAULT,
DisplayModes.DAILY,
DisplayModes.PREVIOUS,
DisplayModes.BAR,
].includes(value as DisplayModes)
) {
expect(screen.getByRole('option', {name: String(label)})).toBeEnabled();
}
});
});
it('does not display a chart if no y axis is selected', function () {
render(
<ResultsChart
router={RouterFixture()}
organization={organization}
eventView={eventView}
location={location}
onAxisChange={() => undefined}
onDisplayChange={() => undefined}
onIntervalChange={() => undefined}
total={1}
confirmedQuery
yAxis={[]}
onTopEventsChange={() => {}}
/>,
{context: initialData.routerContext}
);
expect(screen.getByText(/No Y-Axis selected/)).toBeInTheDocument();
});
});