settings-document.test.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { screen, within } from '@testing-library/dom'
  2. import { expect } from 'chai'
  3. import fetchMock from 'fetch-mock'
  4. import SettingsDocument from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-document'
  5. import { Folder } from '../../../../../../types/folder'
  6. import { EditorLeftMenuProvider } from '@/features/editor-left-menu/components/editor-left-menu-context'
  7. import { render } from '@testing-library/react'
  8. import { EditorProviders } from '../../../../helpers/editor-providers'
  9. describe('<SettingsDocument />', function () {
  10. const rootFolder: Folder = {
  11. _id: 'root-folder-id',
  12. name: 'rootFolder',
  13. docs: [
  14. {
  15. _id: '123abc',
  16. name: 'main.tex',
  17. },
  18. ],
  19. fileRefs: [],
  20. folders: [],
  21. }
  22. let originalSettings: typeof window.metaAttributesCache
  23. beforeEach(function () {
  24. originalSettings = window.metaAttributesCache.get('ol-ExposedSettings')
  25. window.metaAttributesCache.set('ol-ExposedSettings', {
  26. validRootDocExtensions: ['tex'],
  27. })
  28. })
  29. afterEach(function () {
  30. fetchMock.reset()
  31. window.metaAttributesCache.set('ol-ExposedSettings', originalSettings)
  32. })
  33. it('shows correct menu', async function () {
  34. render(
  35. <EditorProviders rootFolder={[rootFolder as any]}>
  36. <EditorLeftMenuProvider>
  37. <SettingsDocument />
  38. </EditorLeftMenuProvider>
  39. </EditorProviders>
  40. )
  41. const select = screen.getByLabelText('Main document')
  42. const optionOn = within(select).getByText('main.tex')
  43. expect(optionOn.getAttribute('value')).to.equal('123abc')
  44. })
  45. })