import type {Location} from 'history'; import {LocationFixture} from 'sentry-fixture/locationFixture'; import {OrganizationFixture} from 'sentry-fixture/organization'; import {render, screen} from 'sentry-test/reactTestingLibrary'; import EventView from 'sentry/utils/discover/eventView'; import {FieldRenderer} from './fieldRenderer'; const mockedEventData = { id: 'spanId', timestamp: '2024-10-03T10:15:00', trace: 'traceId', 'span.op': 'test_op', 'transaction.id': 'transactionId', 'transaction.span_id': 'transactionSpanId', }; describe('FieldRenderer tests', function () { const organization = OrganizationFixture({ features: ['trace-view-v1'], }); const location: Location = LocationFixture({ query: { id: '42', name: 'best query', field: ['id', 'timestamp', 'trace', 'span.op', 'transaction.id'], }, }); const eventView = EventView.fromLocation(location); beforeAll(() => { const mockTimestamp = new Date('2024-10-06T00:00:00').getTime(); jest.spyOn(global.Date, 'now').mockImplementation(() => mockTimestamp); }); afterAll(() => { jest.restoreAllMocks(); }); it('renders span.op', function () { render( , {organization} ); expect(screen.getByText('test_op')).toBeInTheDocument(); }); it('renders span id link to traceview', function () { render( , {organization} ); expect(screen.getByText('spanId')).toBeInTheDocument(); expect(screen.getByRole('link')).toHaveAttribute( 'href', `/organizations/org-slug/performance/trace/traceId/?node=span-spanId&node=txn-transactionSpanId&source=traces&statsPeriod=14d&targetId=transactionSpanId×tamp=1727964900` ); }); it('renders transaction id link to traceview', function () { render( , {organization} ); expect(screen.getByText('transactionId')).toBeInTheDocument(); expect(screen.getByRole('link')).toHaveAttribute( 'href', `/organizations/org-slug/performance/trace/traceId/?source=traces&statsPeriod=14d&targetId=transactionSpanId×tamp=1727964900` ); }); it('renders trace id link to traceview', function () { render( , {organization} ); expect(screen.getByText('traceId')).toBeInTheDocument(); expect(screen.getByRole('link')).toHaveAttribute( 'href', `/organizations/org-slug/performance/trace/traceId/?source=traces&statsPeriod=14d×tamp=1727964900` ); }); it('renders timestamp', function () { render( , {organization} ); expect(screen.getByRole('time')).toBeInTheDocument(); expect(screen.getByText('3d ago')).toBeInTheDocument(); }); });