stepHeader.spec.tsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
  2. import StepHeader from 'getsentry/views/amCheckout/steps/stepHeader';
  3. describe('StepHeader', () => {
  4. let onEdit: any;
  5. const mockTitle = 'Mock Title';
  6. const stepNumber = 1;
  7. beforeEach(function () {
  8. onEdit = jest.fn();
  9. });
  10. it('renders active', function () {
  11. render(
  12. <StepHeader
  13. isActive
  14. title={mockTitle}
  15. stepNumber={stepNumber}
  16. onEdit={onEdit}
  17. isCompleted={false}
  18. />
  19. );
  20. expect(screen.getByText(`${stepNumber}.`)).toBeInTheDocument();
  21. expect(screen.getByText(mockTitle)).toBeInTheDocument();
  22. expect(screen.queryByTestId('icon-check-mark')).not.toBeInTheDocument();
  23. expect(screen.queryByText('Edit')).not.toBeInTheDocument();
  24. expect(screen.queryByLabelText('Expand section')).not.toBeInTheDocument();
  25. });
  26. it('renders complete', async function () {
  27. render(
  28. <StepHeader
  29. isCompleted
  30. title={mockTitle}
  31. stepNumber={stepNumber}
  32. onEdit={onEdit}
  33. isActive={false}
  34. />
  35. );
  36. expect(screen.queryByText(`${stepNumber}.`)).not.toBeInTheDocument();
  37. expect(screen.getByText(mockTitle)).toBeInTheDocument();
  38. expect(screen.getByTestId('icon-check-mark')).toBeInTheDocument();
  39. expect(screen.getByText('Edit')).toBeInTheDocument();
  40. expect(screen.getByLabelText('Expand section')).toBeInTheDocument();
  41. await userEvent.click(screen.getByText('Edit'));
  42. expect(onEdit).toHaveBeenCalled();
  43. });
  44. it('renders not active, not complete, and can skip to step', async function () {
  45. render(
  46. <StepHeader
  47. canSkip
  48. title={mockTitle}
  49. stepNumber={stepNumber}
  50. onEdit={onEdit}
  51. isActive={false}
  52. isCompleted={false}
  53. />
  54. );
  55. expect(screen.getByText(mockTitle)).toBeInTheDocument();
  56. expect(screen.queryByTestId('icon-check-mark')).not.toBeInTheDocument();
  57. await userEvent.click(screen.getByText(mockTitle));
  58. expect(onEdit).toHaveBeenCalled();
  59. });
  60. it('renders not active, not complete, and cannot skip to step', async function () {
  61. render(
  62. <StepHeader
  63. title={mockTitle}
  64. stepNumber={stepNumber}
  65. onEdit={onEdit}
  66. isActive={false}
  67. isCompleted={false}
  68. />
  69. );
  70. expect(screen.getByText(mockTitle)).toBeInTheDocument();
  71. expect(screen.queryByTestId('icon-check-mark')).not.toBeInTheDocument();
  72. expect(screen.queryByLabelText('Expand section')).not.toBeInTheDocument();
  73. expect(onEdit).not.toHaveBeenCalled();
  74. await userEvent.click(screen.getByText(mockTitle));
  75. });
  76. });