layout-dropdown-button.test.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import sinon from 'sinon'
  2. import { fireEvent, screen } from '@testing-library/react'
  3. import LayoutDropdownButton from '../../../../../frontend/js/features/editor-navigation-toolbar/components/layout-dropdown-button'
  4. import { renderWithEditorContext } from '../../../helpers/render-with-context'
  5. describe('<LayoutDropdownButton />', function () {
  6. let openStub
  7. const defaultUi = {
  8. pdfLayout: 'flat',
  9. view: 'pdf',
  10. }
  11. beforeEach(function () {
  12. openStub = sinon.stub(window, 'open')
  13. })
  14. afterEach(function () {
  15. openStub.restore()
  16. })
  17. it('should mark current layout option as selected', function () {
  18. // Selected is aria-label, visually we show a checkmark
  19. renderWithEditorContext(<LayoutDropdownButton />, { ui: defaultUi })
  20. screen.getByRole('menuitem', {
  21. name: 'Editor & PDF',
  22. })
  23. screen.getByRole('menuitem', {
  24. name: 'Selected PDF only (hide editor)',
  25. })
  26. screen.getByRole('menuitem', {
  27. name: 'Editor only (hide PDF)',
  28. })
  29. screen.getByRole('menuitem', {
  30. name: 'PDF in separate tab',
  31. })
  32. })
  33. it('should show processing when detaching', function () {
  34. renderWithEditorContext(<LayoutDropdownButton />, {
  35. ui: { ...defaultUi, view: 'editor' },
  36. })
  37. const menuItem = screen.getByRole('menuitem', {
  38. name: 'PDF in separate tab',
  39. })
  40. fireEvent.click(menuItem)
  41. screen.getByText('Layout processing')
  42. })
  43. })