archivedBox.spec.tsx 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import {Organization} from 'sentry-fixture/organization';
  2. import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
  3. import {GroupSubstatus} from 'sentry/types';
  4. import * as analytics from 'sentry/utils/analytics';
  5. import ArchivedBox from './archivedBox';
  6. describe('ArchivedBox', function () {
  7. const organization = Organization();
  8. const analyticsSpy = jest.spyOn(analytics, 'trackAnalytics');
  9. it('handles ignoreUntil', function () {
  10. render(
  11. <ArchivedBox
  12. substatus={GroupSubstatus.ARCHIVED_UNTIL_CONDITION_MET}
  13. statusDetails={{ignoreUntil: '2017-06-21T19:45:10Z'}}
  14. organization={organization}
  15. />
  16. );
  17. expect(screen.getByText(/This issue has been archived until/)).toBeInTheDocument();
  18. });
  19. it('handles ignoreCount', function () {
  20. render(
  21. <ArchivedBox
  22. substatus={GroupSubstatus.ARCHIVED_UNTIL_CONDITION_MET}
  23. statusDetails={{ignoreUserCount: 100}}
  24. organization={organization}
  25. />
  26. );
  27. expect(
  28. screen.getByText(/This issue has been archived until it affects/)
  29. ).toBeInTheDocument();
  30. });
  31. it('handles ignoreCount with ignoreWindow', function () {
  32. render(
  33. <ArchivedBox
  34. substatus={GroupSubstatus.ARCHIVED_UNTIL_CONDITION_MET}
  35. statusDetails={{ignoreCount: 100, ignoreWindow: 1}}
  36. organization={organization}
  37. />
  38. );
  39. expect(
  40. screen.getByText(/This issue has been archived until it occurs/)
  41. ).toBeInTheDocument();
  42. });
  43. it('handles ignoreUserCount', function () {
  44. render(
  45. <ArchivedBox
  46. substatus={GroupSubstatus.ARCHIVED_UNTIL_CONDITION_MET}
  47. statusDetails={{ignoreUserCount: 100}}
  48. organization={organization}
  49. />
  50. );
  51. expect(
  52. screen.getByText(/This issue has been archived until it affects/)
  53. ).toBeInTheDocument();
  54. });
  55. it('handles ignoreUserCount with ignoreUserWindow', function () {
  56. render(
  57. <ArchivedBox
  58. substatus={GroupSubstatus.ARCHIVED_UNTIL_CONDITION_MET}
  59. statusDetails={{ignoreUserCount: 100, ignoreUserWindow: 1}}
  60. organization={organization}
  61. />
  62. );
  63. expect(
  64. screen.getByText(/This issue has been archived until it affects/)
  65. ).toBeInTheDocument();
  66. });
  67. it('handles archived forever', function () {
  68. render(
  69. <ArchivedBox
  70. substatus={GroupSubstatus.ARCHIVED_FOREVER}
  71. statusDetails={{}}
  72. organization={organization}
  73. />
  74. );
  75. expect(screen.getByText(/This issue has been archived forever/)).toBeInTheDocument();
  76. });
  77. it('handles archived until escalating', function () {
  78. const org_with_escalating = Organization({
  79. features: ['escalating-issues'],
  80. });
  81. render(
  82. <ArchivedBox
  83. substatus={GroupSubstatus.ARCHIVED_UNTIL_ESCALATING}
  84. statusDetails={{ignoreUntilEscalating: true}}
  85. organization={org_with_escalating}
  86. />,
  87. {
  88. organization: org_with_escalating,
  89. }
  90. );
  91. expect(
  92. screen.getByText(
  93. /This issue has been archived\. It'll return to your inbox if it escalates/
  94. )
  95. ).toBeInTheDocument();
  96. });
  97. it('tracks analytics when issue status docs is clicks', async function () {
  98. const org_with_escalating = Organization({
  99. features: ['escalating-issues'],
  100. });
  101. render(
  102. <ArchivedBox
  103. substatus={GroupSubstatus.ARCHIVED_UNTIL_ESCALATING}
  104. statusDetails={{ignoreUntilEscalating: true}}
  105. organization={org_with_escalating}
  106. />,
  107. {
  108. organization: org_with_escalating,
  109. }
  110. );
  111. await userEvent.click(screen.getByText('read the docs'));
  112. expect(analyticsSpy).toHaveBeenCalledWith(
  113. 'issue_details.issue_status_docs_clicked',
  114. expect.objectContaining({organization: org_with_escalating})
  115. );
  116. });
  117. });