import {Fragment} from 'react';
import {mountWithTheme} from 'sentry-test/enzyme';
import {Client} from 'sentry/api';
import EventView from 'sentry/utils/discover/eventView';
import HistogramQuery from 'sentry/utils/performance/histogram/histogramQuery';
function renderHistogram({isLoading, error, histograms}) {
if (isLoading) {
return 'loading';
}
if (error !== null) {
return 'error';
}
return (
{Object.keys(histograms).map(name => (
{name}
{histograms[name].map(bar => (
- {`${bar.bin} - ${bar.count}`}
))}
))}
);
}
describe('HistogramQuery', function () {
let api, eventView, location;
beforeEach(function () {
api = new Client();
location = {
pathname: '/',
query: {},
};
eventView = EventView.fromSavedQuery({
id: '',
name: '',
version: 2,
fields: ['id'],
projects: [],
environment: ['dev'],
});
});
it('fetches data on mount', async function () {
const getMock = MockApiClient.addMockResponse({
url: '/organizations/test-org/events-histogram/',
body: {
'measurements.fp': Array(10)
.fill(null)
.map((_, i) => ({bin: i * 1000, count: i})),
},
});
const wrapper = mountWithTheme(
{renderHistogram}
);
await tick();
wrapper.update();
expect(getMock).toHaveBeenCalledTimes(1);
expect(wrapper.find('p')).toHaveLength(1);
expect(wrapper.find('li')).toHaveLength(10);
});
});