import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import {DiscoverDatasets} from 'sentry/utils/discover/types';
import {PageAlertProvider} from 'sentry/utils/performance/contexts/pageAlert';
import {
PerformanceScore,
type VitalItem,
type VitalStatus,
} from 'sentry/views/insights/mobile/screens/utils';
import {VitalDetailPanel} from './vitalDetailPanel';
jest.mock('sentry/views/insights/mobile/common/queries/useCrossPlatformProject', () => ({
__esModule: true,
default: () => ({selectedPlatform: 'Android'}),
}));
const mockStatus: VitalStatus = {
formattedValue: '100ms',
score: PerformanceScore.GOOD,
description: 'Good performance',
value: {
type: 'duration',
unit: 'ms',
value: 100,
},
};
const mockVital: VitalItem = {
title: 'title',
description: 'description',
docs: 'docs',
setup: 'setup',
platformDocLinks: {
Android: 'https://example.com/platform-docs',
},
sdkDocLinks: {
Android: 'https://example.com/sdk-docs',
},
field: 'avg(measurements.app_start_cold)',
dataset: DiscoverDatasets.METRICS,
getStatus: () => mockStatus,
};
describe('VitalDetailPanel', () => {
test('renders correctly with given props', () => {
render(
);
expect(screen.getByText('title')).toBeInTheDocument();
expect(screen.getByText('100ms')).toBeInTheDocument();
expect(screen.getByText('Good performance')).toBeInTheDocument();
expect(screen.getByText('docs')).toBeInTheDocument();
expect(screen.getByText('setup')).toBeInTheDocument();
expect(screen.getByText('Sentry SDK documentation')).toHaveAttribute(
'href',
'https://example.com/sdk-docs'
);
expect(screen.getByText('Platform documentation')).toHaveAttribute(
'href',
'https://example.com/platform-docs'
);
});
test('calls onClose when close action is triggered', async () => {
const onCloseMock = jest.fn();
render(
);
const closeButton = screen.getByLabelText('Close Details');
await userEvent.click(closeButton);
expect(onCloseMock).toHaveBeenCalled();
});
});