import {browserHistory} from 'react-router';
import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import {IssueCategory} from 'sentry/types';
import GroupHeader from 'sentry/views/issueDetails/header';
import {ReprocessingStatus} from 'sentry/views/issueDetails/utils';
describe('groupDetails', () => {
const baseUrl = 'BASE_URL/';
const organization = TestStubs.Organization();
const project = TestStubs.Project({teams: [TestStubs.Team()]});
describe('issue category: error', () => {
const defaultProps = {
organization,
baseUrl,
group: TestStubs.Group({issueCategory: IssueCategory.ERROR}),
groupReprocessingStatus: ReprocessingStatus.NO_STATUS,
project,
};
it('displays the correct tabs with all features enabled', async () => {
const orgWithFeatures = TestStubs.Organization({
features: ['grouping-tree-ui', 'similarity-view', 'event-attachments'],
});
const projectWithSimilarityView = TestStubs.Project({
features: ['similarity-view'],
});
render(
,
{organization: orgWithFeatures}
);
await userEvent.click(screen.getByRole('tab', {name: /details/i}));
expect(browserHistory.push).toHaveBeenLastCalledWith('BASE_URL/');
await userEvent.click(screen.getByRole('tab', {name: /activity/i}));
expect(browserHistory.push).toHaveBeenCalledWith('BASE_URL/activity/');
await userEvent.click(screen.getByRole('tab', {name: /user feedback/i}));
expect(browserHistory.push).toHaveBeenCalledWith('BASE_URL/feedback/');
await userEvent.click(screen.getByRole('tab', {name: /attachments/i}));
expect(browserHistory.push).toHaveBeenCalledWith('BASE_URL/attachments/');
await userEvent.click(screen.getByRole('tab', {name: /tags/i}));
expect(browserHistory.push).toHaveBeenCalledWith('BASE_URL/tags/');
await userEvent.click(screen.getByRole('tab', {name: /all events/i}));
expect(browserHistory.push).toHaveBeenCalledWith({
pathname: 'BASE_URL/events/',
query: {},
});
await userEvent.click(screen.getByRole('tab', {name: /merged issues/i}));
expect(browserHistory.push).toHaveBeenCalledWith('BASE_URL/merged/');
await userEvent.click(screen.getByRole('tab', {name: /grouping/i}));
expect(browserHistory.push).toHaveBeenCalledWith('BASE_URL/grouping/');
await userEvent.click(screen.getByRole('tab', {name: /similar issues/i}));
expect(browserHistory.push).toHaveBeenCalledWith('BASE_URL/similar/');
});
});
describe('issue category: performance', () => {
const defaultProps = {
organization,
baseUrl,
group: TestStubs.Group({issueCategory: IssueCategory.PERFORMANCE}),
groupReprocessingStatus: ReprocessingStatus.NO_STATUS,
project,
};
it('displays the correct tabs with all features enabled', async () => {
const orgWithFeatures = TestStubs.Organization({
features: ['grouping-tree-ui', 'similarity-view', 'event-attachments'],
});
const projectWithSimilarityView = TestStubs.Project({
features: ['similarity-view'],
});
render(
,
{organization: orgWithFeatures}
);
await userEvent.click(screen.getByRole('tab', {name: /details/i}));
expect(browserHistory.push).toHaveBeenLastCalledWith('BASE_URL/');
await userEvent.click(screen.getByRole('tab', {name: /tags/i}));
expect(browserHistory.push).toHaveBeenCalledWith('BASE_URL/tags/');
await userEvent.click(screen.getByRole('tab', {name: /all events/i}));
expect(browserHistory.push).toHaveBeenCalledWith({
pathname: 'BASE_URL/events/',
query: {},
});
expect(screen.queryByRole('tab', {name: /user feedback/i})).not.toBeInTheDocument();
expect(screen.queryByRole('tab', {name: /attachments/i})).not.toBeInTheDocument();
expect(screen.queryByRole('tab', {name: /merged issues/i})).not.toBeInTheDocument();
expect(screen.queryByRole('tab', {name: /grouping/i})).not.toBeInTheDocument();
expect(
screen.queryByRole('tab', {name: /similar issues/i})
).not.toBeInTheDocument();
});
});
});