import {browserHistory} from 'react-router';
import {initializeOrg} from 'sentry-test/initializeOrg';
import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import {GroupEvents} from 'sentry/views/organizationGroupDetails/groupEvents';
describe('groupEvents', function () {
let request;
const {organization, routerContext} = initializeOrg();
beforeEach(function () {
request = MockApiClient.addMockResponse({
url: '/issues/1/events/',
body: [
TestStubs.Event({
eventID: '12345',
id: '1',
message: 'ApiException',
groupID: '1',
}),
TestStubs.Event({
crashFile: {
sha1: 'sha1',
name: 'name.dmp',
dateCreated: '2019-05-21T18:01:48.762Z',
headers: {'Content-Type': 'application/octet-stream'},
id: '12345',
size: 123456,
type: 'event.minidump',
},
culprit: '',
dateCreated: '2019-05-21T18:00:23Z',
'event.type': 'error',
eventID: '123456',
groupID: '1',
id: '98654',
location: 'main.js',
message: 'TestException',
platform: 'native',
projectID: '123',
tags: [{value: 'production', key: 'production'}],
title: 'TestException',
}),
],
});
browserHistory.push = jest.fn();
});
afterEach(() => {
MockApiClient.clearMockResponses();
jest.clearAllMocks();
});
it('renders', function () {
const wrapper = render(
,
{context: routerContext, organization}
);
expect(wrapper.container).toSnapshot();
});
it('handles search', function () {
render(
,
{context: routerContext, organization}
);
const list = [
{searchTerm: '', expectedQuery: ''},
{searchTerm: 'test', expectedQuery: 'test'},
{searchTerm: 'environment:production test', expectedQuery: 'test'},
];
const input = screen.getByPlaceholderText('Search events by id, message, or tags');
for (const item of list) {
userEvent.clear(input);
userEvent.type(input, `${item.searchTerm}{enter}`);
expect(browserHistory.push).toHaveBeenCalledWith(
expect.objectContaining({
query: {query: item.expectedQuery},
})
);
}
});
it('handles environment filtering', function () {
render(
,
{context: routerContext, organization}
);
expect(request).toHaveBeenCalledWith(
'/issues/1/events/',
expect.objectContaining({
query: {limit: 50, query: '', environment: ['prod', 'staging']},
})
);
});
});