auto-close-brackets-setting.test.tsx 1.6 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 AutoCloseBracketsSetting from '@/features/ide-redesign/components/settings/editor-settings/auto-close-brackets-setting'
  6. import { SettingsModalProvider } from '@/features/ide-redesign/contexts/settings-modal-context'
  7. describe('<AutoCloseBracketsSetting />', function () {
  8. afterEach(function () {
  9. fetchMock.removeRoutes().clearHistory()
  10. })
  11. it('can toggle', async function () {
  12. render(
  13. <EditorProviders>
  14. <SettingsModalProvider>
  15. <AutoCloseBracketsSetting />
  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('Auto-close brackets')
  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: { autoPairDelimiters: !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: { autoPairDelimiters: startingCheckedValue },
  42. })
  43. ).to.be.true
  44. })
  45. })