use-prevent-global.test.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { ref } from 'vue'
  2. import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest'
  3. import triggerEvent from '@element-plus/test-utils/trigger-event'
  4. import { usePreventGlobal } from '../use-prevent-global'
  5. describe('usePreventGlobal', () => {
  6. const evtName = 'keydown'
  7. const evtHandler = vi.fn()
  8. beforeAll(() => {
  9. document.body.addEventListener(evtName, evtHandler)
  10. })
  11. afterAll(() => {
  12. document.body.removeEventListener(evtName, evtHandler)
  13. })
  14. it('should prevent global event from happening', () => {
  15. const visible = ref(true)
  16. const evt2Trigger = vi.fn().mockReturnValue(true)
  17. usePreventGlobal(visible, evtName, evt2Trigger)
  18. triggerEvent(document.body, evtName)
  19. expect(evtHandler).not.toBeCalled()
  20. expect(evt2Trigger).toHaveBeenCalled()
  21. visible.value = false
  22. })
  23. it('should not prevent global event from happening', () => {
  24. const visible = ref(true)
  25. const evt2Trigger = vi.fn().mockReturnValue(false)
  26. usePreventGlobal(visible, evtName, evt2Trigger)
  27. triggerEvent(document.body, evtName)
  28. expect(evtHandler).toHaveBeenCalled()
  29. expect(evt2Trigger).toHaveBeenCalled()
  30. visible.value = false
  31. })
  32. })