settings-image-name.test.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { screen, within } from '@testing-library/dom'
  2. import { expect } from 'chai'
  3. import fetchMock from 'fetch-mock'
  4. import SettingsImageName from '../../../../../../frontend/js/features/editor-left-menu/components/settings/settings-image-name'
  5. import type { AllowedImageName } from '../../../../../../types/project-settings'
  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('<SettingsImageName />', function () {
  10. const allowedImageNames: AllowedImageName[] = [
  11. {
  12. imageDesc: 'Image 1',
  13. imageName: 'img-1',
  14. },
  15. {
  16. imageDesc: 'Image 2',
  17. imageName: 'img-2',
  18. },
  19. ]
  20. beforeEach(function () {
  21. window.metaAttributesCache.set('ol-allowedImageNames', allowedImageNames)
  22. })
  23. afterEach(function () {
  24. fetchMock.reset()
  25. })
  26. it('shows correct menu', async function () {
  27. render(
  28. <EditorProviders>
  29. <EditorLeftMenuProvider>
  30. <SettingsImageName />
  31. </EditorLeftMenuProvider>
  32. </EditorProviders>
  33. )
  34. const select = screen.getByLabelText('TeX Live version')
  35. for (const { imageName, imageDesc } of allowedImageNames) {
  36. const option = within(select).getByText(imageDesc)
  37. expect(option.getAttribute('value')).to.equal(imageName)
  38. }
  39. })
  40. })