layout-dropdown-button.test.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { render, screen } from '@testing-library/react'
  2. import LayoutDropdownButton from '../../../../../frontend/js/features/editor-navigation-toolbar/components/layout-dropdown-button'
  3. describe('<LayoutDropdownButton />', function () {
  4. const defaultProps = {
  5. reattach: () => {},
  6. detach: () => {},
  7. handleChangeLayout: () => {},
  8. detachMode: undefined,
  9. detachRole: undefined,
  10. pdfLayout: 'flat',
  11. view: 'pdf',
  12. }
  13. it('should mark current layout option as selected', function () {
  14. // Selected is aria-label, visually we show a checkmark
  15. render(<LayoutDropdownButton {...defaultProps} />)
  16. screen.getByRole('menuitem', {
  17. name: 'Editor & PDF',
  18. })
  19. screen.getByRole('menuitem', {
  20. name: 'Selected PDF only (hide editor)',
  21. })
  22. screen.getByRole('menuitem', {
  23. name: 'Editor only (hide PDF)',
  24. })
  25. screen.getByRole('menuitem', {
  26. name: 'Open PDF in new tab',
  27. })
  28. })
  29. it('should select Editor Only when detached and show option to reattach', function () {
  30. const detachedProps = Object.assign({}, defaultProps, {
  31. detachMode: 'detacher',
  32. detachRole: 'detacher',
  33. view: 'editor',
  34. })
  35. render(<LayoutDropdownButton {...detachedProps} />)
  36. screen.getByRole('menuitem', {
  37. name: 'Selected Editor only (hide PDF)',
  38. })
  39. screen.getByRole('menuitem', {
  40. name: 'Bring PDF back to this tab',
  41. })
  42. })
  43. it('should show processing when detaching', function () {
  44. const detachedProps = Object.assign({}, defaultProps, {
  45. detachMode: 'detaching',
  46. detachRole: 'detacher',
  47. view: 'editor',
  48. })
  49. render(<LayoutDropdownButton {...detachedProps} />)
  50. screen.getByText('Layout processing')
  51. })
  52. })