issueDiff.spec.jsx 2.7 KB

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