import {initializeOrg} from 'sentry-test/initializeOrg';
import {render, waitFor} from 'sentry-test/reactTestingLibrary';
import * as eventRequest from 'sentry/components/charts/eventsRequest';
import * as worldMaps from 'sentry/components/charts/worldMapChart';
import EventView from 'sentry/utils/discover/eventView';
import MiniGraph from 'sentry/views/discover/miniGraph';
jest.mock('sentry/components/charts/eventsRequest');
jest.mock('sentry/components/charts/eventsGeoRequest', () =>
jest.fn(({children}) =>
children({
errored: false,
loading: false,
reloading: false,
tableData: [
{
data: [
{
'geo.country_code': 'PE',
count: 9215,
},
{
'geo.country_code': 'VI',
count: 1,
},
],
meta: {
'geo.country_code': 'string',
count: 'integer',
},
title: 'Country',
},
],
})
)
);
describe('Discover > MiniGraph', function () {
const features = ['discover-basic'];
const location = TestStubs.location({
query: {query: 'tag:value'},
pathname: '/',
});
let organization, eventView, initialData;
beforeEach(() => {
organization = TestStubs.Organization({
features,
projects: [TestStubs.Project()],
});
initialData = initializeOrg({
organization,
router: {
location,
},
projects: [],
});
eventView = EventView.fromSavedQueryOrLocation(undefined, location);
MockApiClient.clearMockResponses();
MockApiClient.addMockResponse({
url: '/organizations/org-slug/events-stats/',
statusCode: 200,
});
});
it('makes an EventsRequest with all selected multi y axis', function () {
const yAxis = ['count()', 'failure_count()'];
render(
,
{context: initialData.routerContext}
);
expect(eventRequest.default).toHaveBeenCalledWith(
expect.objectContaining({yAxis}),
expect.anything()
);
});
it('uses low fidelity interval for bar charts', function () {
const yAxis = ['count()', 'failure_count()'];
eventView.display = 'bar';
render(
,
{context: initialData.routerContext}
);
expect(eventRequest.default).toHaveBeenCalledWith(
expect.objectContaining({interval: '12h'}),
expect.anything()
);
});
it('renders WorldMapChart', async function () {
const yAxis = ['count()', 'failure_count()'];
eventView.display = 'worldmap';
jest.spyOn(worldMaps, 'WorldMapChart');
render(
,
{context: initialData.routerContext}
);
await waitFor(() =>
expect(worldMaps.WorldMapChart).toHaveBeenCalledWith(
{
height: 100,
fromDiscoverQueryList: true,
series: [
{
data: [
{name: 'PE', value: 9215},
{name: 'VI', value: 1},
],
seriesName: 'Country',
},
],
},
expect.anything()
)
);
});
});