123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
- import {EventError} from 'sentry/types';
- import {EntryType, Event, ExceptionType, ExceptionValue, Frame} from 'sentry/types/event';
- import {StackTracePreview} from './stackTracePreview';
- const makeEvent = (event: Partial<Event> = {}): Event => {
- const evt: Event = {
- ...TestStubs.Event(),
- ...event,
- };
- return evt;
- };
- beforeEach(() => {
- MockApiClient.clearMockResponses();
- MockApiClient.addMockResponse({
- url: '/organizations/org-slug/issues/123/',
- });
- });
- describe('StackTracePreview', () => {
- it('renders error message', async () => {
- MockApiClient.addMockResponse({
- url: `/organizations/org-slug/issues/123/events/recommended/`,
- statusCode: 400,
- });
- render(<StackTracePreview groupId="123">Preview Trigger</StackTracePreview>);
- await userEvent.hover(screen.getByText(/Preview Trigger/));
- expect(await screen.findByText(/Failed to load stack trace/)).toBeInTheDocument();
- });
- it('warns about no stacktrace', async () => {
- MockApiClient.addMockResponse({
- url: `/organizations/org-slug/issues/123/events/recommended/`,
- body: makeEvent({id: '456', entries: []}),
- });
- render(<StackTracePreview groupId="123">Preview Trigger</StackTracePreview>);
- await userEvent.hover(screen.getByText(/Preview Trigger/));
- expect(
- await screen.findByText(/There is no stack trace available for this issue./)
- ).toBeInTheDocument();
- });
- it.each([
- ['stack-trace-content', []],
- ['stack-trace-content-v2', ['grouping-stacktrace-ui']],
- ])('renders %s', async (component, features) => {
- const frame: Frame = {
- colNo: 0,
- filename: 'file.js',
- function: 'throwError',
- lineNo: 0,
- absPath: null,
- context: [],
- errors: null,
- inApp: false,
- instructionAddr: null,
- module: null,
- package: null,
- platform: null,
- rawFunction: null,
- symbol: null,
- symbolAddr: null,
- trust: undefined,
- vars: null,
- };
- const thread: ExceptionValue = {
- stacktrace: {
- hasSystemFrames: false,
- registers: {},
- framesOmitted: 0,
- frames: [frame],
- },
- mechanism: null,
- module: null,
- rawStacktrace: null,
- threadId: null,
- type: '',
- value: '',
- };
- const exceptionValue: ExceptionType = {
- values: [thread],
- excOmitted: undefined,
- hasSystemFrames: false,
- };
- const errorEvent: EventError = {
- id: '456',
- entries: [
- {
- type: EntryType.EXCEPTION,
- data: exceptionValue,
- },
- ],
- } as EventError;
- MockApiClient.addMockResponse({
- url: `/organizations/org-slug/issues/123/events/recommended/`,
- body: makeEvent(errorEvent),
- });
- render(<StackTracePreview groupId="123">Preview Trigger</StackTracePreview>, {
- organization: {features},
- });
- await userEvent.hover(screen.getByText(/Preview Trigger/));
- expect(await screen.findByTestId(component)).toBeInTheDocument();
- });
- });
|