profileEventEvidence.spec.tsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import {EventFixture} from 'sentry-fixture/event';
  2. import {GroupFixture} from 'sentry-fixture/group';
  3. import {render, screen} from 'sentry-test/reactTestingLibrary';
  4. import {ProfileEventEvidence} from 'sentry/components/events/profileEventEvidence';
  5. import {IssueType} from 'sentry/types/group';
  6. describe('ProfileEventEvidence', function () {
  7. const defaultProps = {
  8. event: EventFixture({
  9. id: 'event-id',
  10. occurrence: {
  11. evidenceDisplay: [{name: 'Evidence name', value: 'Evidence value'}],
  12. evidenceData: {
  13. profileId: 'profile-id',
  14. frameName: 'some_func',
  15. framePackage: 'something.dll',
  16. transactionId: 'transaction-id',
  17. transactionName: 'SomeTransaction',
  18. templateName: 'profile',
  19. },
  20. },
  21. contexts: {
  22. trace: {
  23. trace_id: 'trace-id',
  24. },
  25. },
  26. }),
  27. group: GroupFixture({
  28. issueType: IssueType.PROFILE_FILE_IO_MAIN_THREAD,
  29. }),
  30. projectSlug: 'project-slug',
  31. };
  32. it('displays profile ID and data in evidence display', function () {
  33. render(<ProfileEventEvidence {...defaultProps} />);
  34. expect(screen.getByRole('cell', {name: 'Transaction Name'})).toBeInTheDocument();
  35. expect(screen.getByRole('cell', {name: /SomeTransaction/})).toBeInTheDocument();
  36. expect(screen.getByRole('cell', {name: 'Profile ID'})).toBeInTheDocument();
  37. expect(screen.getByRole('cell', {name: /profile-id/})).toBeInTheDocument();
  38. expect(screen.getByRole('cell', {name: 'Evidence name'})).toBeInTheDocument();
  39. expect(screen.getByRole('cell', {name: 'Evidence value'})).toBeInTheDocument();
  40. });
  41. it('correctly links to the profile frame', function () {
  42. render(<ProfileEventEvidence {...defaultProps} />);
  43. expect(screen.getByRole('button', {name: 'View Profile'})).toHaveAttribute(
  44. 'href',
  45. '/organizations/org-slug/profiling/profile/project-slug/profile-id/flamegraph/?frameName=some_func&framePackage=something.dll&referrer=issue'
  46. );
  47. });
  48. it('correctly links to the transaction', function () {
  49. render(<ProfileEventEvidence {...defaultProps} />);
  50. expect(screen.getByRole('button', {name: 'View Transaction'})).toHaveAttribute(
  51. 'href',
  52. '/organizations/org-slug/performance/project-slug:transaction-id/?referrer=issue'
  53. );
  54. });
  55. });