samplingSDKUpgradesAlert.spec.tsx 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import {Fragment} from 'react';
  2. import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
  3. import GlobalModal from 'sentry/components/globalModal';
  4. import {SamplingSDKUpgradesAlert} from 'sentry/views/settings/project/server-side-sampling/samplingSDKUpgradesAlert';
  5. import {getMockData, mockedProjects, recommendedSdkUpgrades, uniformRule} from './utils';
  6. describe('Server-Side Sampling - Sdk Upgrades Alert', function () {
  7. it('does not render content', function () {
  8. const {organization, project} = getMockData();
  9. render(
  10. <SamplingSDKUpgradesAlert
  11. organization={organization}
  12. projectId={project.id}
  13. onReadDocs={jest.fn()}
  14. rules={[uniformRule]}
  15. recommendedSdkUpgrades={[]}
  16. incompatibleProjects={[]}
  17. showLinkToTheModal
  18. />
  19. );
  20. expect(
  21. screen.queryByTestId('recommended-sdk-upgrades-alert')
  22. ).not.toBeInTheDocument();
  23. });
  24. it('renders content with update sdks info', function () {
  25. const {organization, project} = getMockData();
  26. render(
  27. <Fragment>
  28. <GlobalModal />
  29. <SamplingSDKUpgradesAlert
  30. organization={organization}
  31. projectId={project.id}
  32. onReadDocs={jest.fn()}
  33. rules={[uniformRule]}
  34. recommendedSdkUpgrades={recommendedSdkUpgrades}
  35. showLinkToTheModal
  36. incompatibleProjects={[]}
  37. />
  38. </Fragment>
  39. );
  40. expect(screen.getByTestId('recommended-sdk-upgrades-alert')).toBeInTheDocument();
  41. expect(screen.getByRole('button', {name: 'Learn More'})).toBeInTheDocument();
  42. expect(
  43. screen.getByText(
  44. 'To activate server-side sampling rules, it’s a requirement to update the following project SDK(s):'
  45. )
  46. ).toBeInTheDocument();
  47. expect(screen.getByTestId('platform-icon-python')).toBeInTheDocument();
  48. expect(screen.getByTestId('badge-display-name')).toBeInTheDocument();
  49. expect(screen.getByRole('link', {name: mockedProjects[1].slug})).toHaveAttribute(
  50. 'href',
  51. `/organizations/org-slug/projects/sentry/?project=${mockedProjects[1].id}`
  52. );
  53. // Click on learn more button
  54. userEvent.click(screen.getByRole('button', {name: 'Learn More'}));
  55. // Recommended steps modal is rendered
  56. expect(
  57. screen.getByRole('heading', {
  58. name: 'Update the following SDK versions',
  59. })
  60. ).toBeInTheDocument();
  61. });
  62. it('renders incompatible sdks', function () {
  63. const {organization, project} = getMockData();
  64. render(
  65. <SamplingSDKUpgradesAlert
  66. organization={organization}
  67. projectId={project.id}
  68. onReadDocs={jest.fn()}
  69. rules={[uniformRule]}
  70. recommendedSdkUpgrades={recommendedSdkUpgrades}
  71. showLinkToTheModal
  72. incompatibleProjects={[TestStubs.Project({slug: 'angular', platform: 'angular'})]}
  73. />
  74. );
  75. expect(screen.getByTestId('recommended-sdk-upgrades-alert')).toBeInTheDocument();
  76. expect(
  77. screen.getByText(
  78. 'The following projects are currently incompatible with Server-Side Sampling:'
  79. )
  80. ).toBeInTheDocument();
  81. expect(screen.getByTestId('platform-icon-angular')).toBeInTheDocument();
  82. });
  83. });