import {act} from 'react-dom/test-utils'; import {mountWithTheme} from 'sentry-test/enzyme'; import {initializeOrg} from 'sentry-test/initializeOrg'; import EventView from 'sentry/utils/discover/eventView'; import MiniGraph from 'sentry/views/eventsV2/miniGraph'; 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('EventsV2 > 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, }, project: 1, 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()']; const wrapper = mountWithTheme( , initialData.routerContext ); const eventsRequestProps = wrapper.find('EventsRequest').props(); expect(eventsRequestProps.yAxis).toEqual(yAxis); }); it('uses low fidelity interval for bar charts', function () { const yAxis = ['count()', 'failure_count()']; eventView.display = 'bar'; const wrapper = mountWithTheme( , initialData.routerContext ); const eventsRequestProps = wrapper.find('EventsRequest').props(); expect(eventsRequestProps.interval).toEqual('12h'); }); it('renders WorldMapChart', async function () { const yAxis = ['count()', 'failure_count()']; eventView.display = 'worldmap'; let wrapper; await act(async () => { wrapper = mountWithTheme( , initialData.routerContext ); await tick(); }); const worldMapChartProps = wrapper.find('WorldMapChart').props(); expect(worldMapChartProps.series).toEqual([ { data: [ {name: 'PE', value: 9215}, {name: 'VI', value: 1}, ], seriesName: 'Country', }, ]); }); it('renders error message', async function () { const errorMessage = 'something went wrong'; const api = new MockApiClient(); MockApiClient.clearMockResponses(); MockApiClient.addMockResponse({ url: '/organizations/org-slug/events-stats/', body: { detail: errorMessage, }, statusCode: 400, }); const wrapper = mountWithTheme( , initialData.routerContext ); await tick(); wrapper.update(); expect(wrapper.find('MiniGraph').text()).toBe(errorMessage); }); });