index.spec.tsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import {Entries123Base, Entries123Target} from 'sentry-fixture/entries';
  2. import {OrganizationFixture} from 'sentry-fixture/organization';
  3. import {ProjectFixture} from 'sentry-fixture/project';
  4. import {render, screen} from 'sentry-test/reactTestingLibrary';
  5. import {IssueDiff} from 'sentry/components/issueDiff';
  6. import {trackAnalytics} from 'sentry/utils/analytics';
  7. jest.mock('sentry/api');
  8. jest.mock('sentry/utils/analytics');
  9. describe('IssueDiff', function () {
  10. const entries123Target = Entries123Target();
  11. const entries123Base = Entries123Base();
  12. const api = new MockApiClient();
  13. const organization = OrganizationFixture();
  14. const project = ProjectFixture({features: ['similarity-embeddings']});
  15. beforeEach(function () {
  16. MockApiClient.addMockResponse({
  17. url: '/issues/base/events/latest/',
  18. body: {
  19. eventID: '123base',
  20. },
  21. });
  22. MockApiClient.addMockResponse({
  23. url: '/issues/target/events/latest/',
  24. body: {
  25. eventID: '123target',
  26. },
  27. });
  28. MockApiClient.addMockResponse({
  29. url: `/projects/org-slug/${project.slug}/events/123target/`,
  30. body: {
  31. entries: entries123Target,
  32. },
  33. });
  34. MockApiClient.addMockResponse({
  35. url: `/projects/org-slug/${project.slug}/events/123base/`,
  36. body: {
  37. platform: 'javascript',
  38. entries: entries123Base,
  39. },
  40. });
  41. });
  42. afterEach(function () {
  43. MockApiClient.clearMockResponses();
  44. });
  45. it('is loading when initially rendering', async function () {
  46. render(
  47. <IssueDiff
  48. api={api}
  49. baseIssueId="base"
  50. targetIssueId="target"
  51. orgId="org-slug"
  52. project={project}
  53. />
  54. );
  55. expect(screen.queryByTestId('split-diff')).not.toBeInTheDocument();
  56. expect(await screen.findByTestId('split-diff')).toBeInTheDocument();
  57. });
  58. it('can dynamically import SplitDiff', async function () {
  59. render(
  60. <IssueDiff
  61. api={api}
  62. baseIssueId="base"
  63. targetIssueId="target"
  64. orgId="org-slug"
  65. project={project}
  66. organization={organization}
  67. shouldBeGrouped="Yes"
  68. />
  69. );
  70. expect(await screen.findByTestId('split-diff')).toBeInTheDocument();
  71. expect(trackAnalytics).toHaveBeenCalled();
  72. });
  73. it('can diff message', async function () {
  74. MockApiClient.addMockResponse({
  75. url: `/projects/org-slug/${project.slug}/events/123target/`,
  76. body: {
  77. entries: [{type: 'message', data: {formatted: 'Hello World'}}],
  78. },
  79. });
  80. MockApiClient.addMockResponse({
  81. url: `/projects/org-slug/${project.slug}/events/123base/`,
  82. body: {
  83. platform: 'javascript',
  84. entries: [{type: 'message', data: {formatted: 'Foo World'}}],
  85. },
  86. });
  87. render(
  88. <IssueDiff
  89. api={api}
  90. baseIssueId="base"
  91. targetIssueId="target"
  92. orgId="org-slug"
  93. project={project}
  94. />
  95. );
  96. expect(await screen.findByTestId('split-diff')).toBeInTheDocument();
  97. });
  98. });