code-check-setting.test.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { screen, render } from '@testing-library/react'
  2. import { expect } from 'chai'
  3. import fetchMock from 'fetch-mock'
  4. import { EditorProviders } from '../../../helpers/editor-providers'
  5. import { SettingsModalProvider } from '@/features/settings/context/settings-modal-context'
  6. import CodeCheckSetting from '@/features/settings/components/editor-settings/code-check-setting'
  7. describe('<CodeCheckSetting />', function () {
  8. afterEach(function () {
  9. fetchMock.removeRoutes().clearHistory()
  10. })
  11. it('can toggle', async function () {
  12. render(
  13. <EditorProviders>
  14. <SettingsModalProvider>
  15. <CodeCheckSetting />
  16. </SettingsModalProvider>
  17. </EditorProviders>
  18. )
  19. const saveSettingsMock = fetchMock.post(
  20. `express:/user/settings`,
  21. {
  22. status: 200,
  23. },
  24. { delay: 0 }
  25. )
  26. const toggle = screen.getByLabelText('Code check')
  27. const startingCheckedValue = (toggle as HTMLInputElement).checked
  28. // Toggle the checkbox
  29. toggle.click()
  30. expect((toggle as HTMLInputElement).checked).to.equal(!startingCheckedValue)
  31. expect(
  32. saveSettingsMock.callHistory.called(`/user/settings`, {
  33. body: { syntaxValidation: !startingCheckedValue },
  34. })
  35. ).to.be.true
  36. // Toggle back to original value
  37. toggle.click()
  38. expect((toggle as HTMLInputElement).checked).to.equal(startingCheckedValue)
  39. expect(
  40. saveSettingsMock.callHistory.called(`/user/settings`, {
  41. body: { syntaxValidation: startingCheckedValue },
  42. })
  43. ).to.be.true
  44. })
  45. })