font-size-setting.test.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { screen, within, render } from '@testing-library/react'
  2. import { expect } from 'chai'
  3. import fetchMock from 'fetch-mock'
  4. import { SettingsModalProvider } from '@/features/settings/context/settings-modal-context'
  5. import { EditorProviders } from '../../../helpers/editor-providers'
  6. import FontSizeSetting from '@/features/settings/components/appearance-settings/font-size-setting'
  7. import userEvent from '@testing-library/user-event'
  8. describe('<FontSizeSetting />', function () {
  9. const sizes = ['10', '11', '12', '13', '14', '16', '18', '20', '22', '24']
  10. afterEach(function () {
  11. fetchMock.removeRoutes().clearHistory()
  12. })
  13. it('each option is shown and can be selected', async function () {
  14. render(
  15. <EditorProviders>
  16. <SettingsModalProvider>
  17. <FontSizeSetting />
  18. </SettingsModalProvider>
  19. </EditorProviders>
  20. )
  21. const saveSettingsMock = fetchMock.post(
  22. 'express:/user/settings',
  23. {
  24. status: 200,
  25. },
  26. { delay: 0 }
  27. )
  28. const select = screen.getByLabelText('Editor font size')
  29. for (const size of sizes) {
  30. const option = within(select).getByText(`${size}px`)
  31. expect(option.getAttribute('value')).to.equal(size)
  32. await userEvent.selectOptions(select, [option])
  33. expect(
  34. saveSettingsMock.callHistory.called('/user/settings', {
  35. body: { fontSize: Number(size) },
  36. })
  37. ).to.be.true
  38. }
  39. })
  40. })