issueDiff.spec.jsx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import React from 'react';
  2. import {mountWithTheme} from 'sentry-test/enzyme';
  3. import {IssueDiff} from 'app/components/issueDiff';
  4. jest.mock('app/api');
  5. describe('IssueDiff', function () {
  6. const entries = TestStubs.Entries();
  7. const routerContext = TestStubs.routerContext();
  8. const api = new MockApiClient();
  9. const project = TestStubs.ProjectDetails();
  10. beforeEach(function () {
  11. MockApiClient.addMockResponse({
  12. url: '/issues/base/events/latest/',
  13. body: {
  14. eventID: '123base',
  15. },
  16. });
  17. MockApiClient.addMockResponse({
  18. url: '/issues/target/events/latest/',
  19. body: {
  20. eventID: '123target',
  21. },
  22. });
  23. MockApiClient.addMockResponse({
  24. url: `/projects/org-slug/${project.slug}/events/123target/`,
  25. body: {
  26. entries: entries[0],
  27. },
  28. });
  29. MockApiClient.addMockResponse({
  30. url: `/projects/org-slug/${project.slug}/events/123base/`,
  31. body: {
  32. platform: 'javascript',
  33. entries: entries[1],
  34. },
  35. });
  36. });
  37. afterEach(function () {
  38. MockApiClient.clearMockResponses();
  39. });
  40. it('is loading when initially rendering', function () {
  41. const wrapper = mountWithTheme(
  42. <IssueDiff
  43. api={api}
  44. baseIssueId="base"
  45. targetIssueId="target"
  46. orgId="org-slug"
  47. project={project}
  48. />
  49. );
  50. expect(wrapper.find('SplitDiff')).toHaveLength(0);
  51. expect(wrapper).toSnapshot();
  52. });
  53. it('can dynamically import SplitDiff', async function () {
  54. // Need `mount` because of componentDidMount in <IssueDiff>
  55. const wrapper = mountWithTheme(
  56. <IssueDiff
  57. api={api}
  58. baseIssueId="base"
  59. targetIssueId="target"
  60. orgId="org-slug"
  61. project={project}
  62. />,
  63. routerContext
  64. );
  65. await tick();
  66. wrapper.update();
  67. expect(wrapper.find('SplitDiff')).toHaveLength(1);
  68. expect(wrapper).toSnapshot();
  69. });
  70. it('can diff message', async function () {
  71. MockApiClient.addMockResponse({
  72. url: `/projects/org-slug/${project.slug}/events/123target/`,
  73. body: {
  74. entries: [{type: 'message', data: {formatted: 'Hello World'}}],
  75. },
  76. });
  77. MockApiClient.addMockResponse({
  78. url: `/projects/org-slug/${project.slug}/events/123base/`,
  79. body: {
  80. platform: 'javascript',
  81. entries: [{type: 'message', data: {formatted: 'Foo World'}}],
  82. },
  83. });
  84. // Need `mount` because of componentDidMount in <IssueDiff>
  85. const wrapper = mountWithTheme(
  86. <IssueDiff
  87. api={api}
  88. baseIssueId="base"
  89. targetIssueId="target"
  90. orgId="org-slug"
  91. project={project}
  92. />,
  93. routerContext
  94. );
  95. await tick();
  96. wrapper.update();
  97. expect(wrapper.find('SplitDiff')).toHaveLength(1);
  98. expect(wrapper).toSnapshot();
  99. });
  100. });