issueDiff.spec.jsx 2.8 KB

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