suspectSpans.spec.tsx 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import {OrganizationFixture} from 'sentry-fixture/organization';
  2. import {initializeOrg} from 'sentry-test/initializeOrg';
  3. import {generateSuspectSpansResponse} from 'sentry-test/performance/initializePerformanceData';
  4. import {
  5. act,
  6. render,
  7. screen,
  8. // waitForElementToBeRemoved,
  9. } from 'sentry-test/reactTestingLibrary';
  10. import ProjectsStore from 'sentry/stores/projectsStore';
  11. import EventView from 'sentry/utils/discover/eventView';
  12. import {MEPSettingProvider} from 'sentry/utils/performance/contexts/metricsEnhancedSetting';
  13. import {OrganizationContext} from 'sentry/views/organizationContext';
  14. import SuspectSpans from 'sentry/views/performance/transactionSummary/transactionOverview/suspectSpans';
  15. function initializeData({query} = {query: {}}) {
  16. const features = ['performance-view'];
  17. const organization = OrganizationFixture({features});
  18. const initialData = initializeOrg({
  19. organization,
  20. router: {
  21. location: {
  22. query: {
  23. transaction: 'Test Transaction',
  24. project: '1',
  25. ...query,
  26. },
  27. },
  28. },
  29. projects: [],
  30. });
  31. act(() => void ProjectsStore.loadInitialData(initialData.projects));
  32. return {
  33. ...initialData,
  34. eventView: EventView.fromLocation(initialData.router.location),
  35. };
  36. }
  37. describe('SuspectSpans', function () {
  38. describe('With Span Data', function () {
  39. beforeEach(function () {
  40. MockApiClient.addMockResponse({
  41. url: '/organizations/org-slug/events-spans-performance/',
  42. body: generateSuspectSpansResponse({
  43. examples: 1,
  44. }),
  45. });
  46. });
  47. afterEach(function () {
  48. jest.resetAllMocks();
  49. });
  50. it('renders basic UI elements', async function () {
  51. const initialData = initializeData();
  52. render(
  53. <OrganizationContext.Provider value={initialData.organization}>
  54. <MEPSettingProvider>
  55. <SuspectSpans
  56. organization={initialData.organization}
  57. location={initialData.router.location}
  58. eventView={initialData.eventView}
  59. projectId="1"
  60. transactionName="Test Transaction"
  61. totals={{'count()': 1}}
  62. />
  63. </MEPSettingProvider>
  64. </OrganizationContext.Provider>
  65. );
  66. expect(await screen.findByText('Suspect Spans')).toBeInTheDocument();
  67. expect(await screen.findByText('View All Spans')).toBeInTheDocument();
  68. expect(await screen.findByText('Span Operation')).toBeInTheDocument();
  69. expect(await screen.findByText('Span Name')).toBeInTheDocument();
  70. expect(await screen.findByText('Frequency')).toBeInTheDocument();
  71. expect(await screen.findByText('P75 Self Time')).toBeInTheDocument();
  72. expect(await screen.findByText('Total Self Time')).toBeInTheDocument();
  73. });
  74. });
  75. });