policyRow.spec.tsx 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import {PoliciesFixture} from 'getsentry-test/fixtures/policies';
  2. import {SubscriptionFixture} from 'getsentry-test/fixtures/subscription';
  3. import {initializeOrg} from 'sentry-test/initializeOrg';
  4. import {render, screen} from 'sentry-test/reactTestingLibrary';
  5. import {PolicyRow} from 'getsentry/views/legalAndCompliance/policyRow';
  6. describe('PolicyRow', function () {
  7. const {organization} = initializeOrg({});
  8. const subscription = SubscriptionFixture({organization});
  9. const policies = PoliciesFixture();
  10. it('renders with consent, requires signature, and version match', function () {
  11. const policy = policies.terms!;
  12. render(
  13. <PolicyRow
  14. key="privacy"
  15. policies={policies}
  16. policy={policy}
  17. showUpdated={false}
  18. subscription={subscription}
  19. onAccept={() => {}}
  20. />
  21. );
  22. expect(screen.getByText('Terms of Service')).toBeInTheDocument();
  23. expect(screen.queryByText(/Updated on/i)).not.toBeInTheDocument();
  24. expect(screen.getByRole('button', {name: 'Review'})).toBeInTheDocument();
  25. expect(screen.getByRole('button', {name: 'Review'})).toHaveAttribute(
  26. 'href',
  27. 'https://sentry.io/legal/terms/1.0.0/?userCurrentVersion=1.0.0'
  28. );
  29. });
  30. it('does not require signature', function () {
  31. const policy = policies.pentest!;
  32. render(
  33. <PolicyRow
  34. key="privacy"
  35. policies={policies}
  36. policy={policy}
  37. showUpdated={false}
  38. subscription={subscription}
  39. onAccept={() => {}}
  40. />
  41. );
  42. expect(screen.getByText(policy.name)).toBeInTheDocument();
  43. expect(screen.queryByText(/signed/i)).not.toBeInTheDocument();
  44. expect(screen.queryByText(/Updated on/i)).not.toBeInTheDocument();
  45. expect(screen.queryByText(/New version available/i)).not.toBeInTheDocument();
  46. expect(screen.getByRole('button', {name: 'Review'})).toBeInTheDocument();
  47. });
  48. it('does not require signature and show updated', function () {
  49. const policy = policies.pentest!;
  50. render(
  51. <PolicyRow
  52. key="privacy"
  53. policies={policies}
  54. policy={policy}
  55. showUpdated
  56. subscription={subscription}
  57. onAccept={() => {}}
  58. />
  59. );
  60. expect(screen.getByText(policy.name)).toBeInTheDocument();
  61. expect(screen.queryByText(/signed/i)).not.toBeInTheDocument();
  62. expect(screen.getByText(/Updated on/i)).toBeInTheDocument();
  63. expect(screen.queryByText(/New version available/i)).not.toBeInTheDocument();
  64. expect(screen.getByRole('button', {name: 'Review'})).toBeInTheDocument();
  65. });
  66. });