use-modal.test.ts 803 B

123456789101112131415161718192021222324252627282930313233
  1. import { nextTick, ref } from 'vue'
  2. import { describe, expect, it, vi } from 'vitest'
  3. import { EVENT_CODE } from '@element-plus/constants'
  4. import { useModal } from '../use-modal'
  5. describe('useModal', () => {
  6. it('should work when ref value changed', async () => {
  7. const visible = ref(false)
  8. const handleClose = vi.fn()
  9. useModal(
  10. {
  11. handleClose,
  12. },
  13. visible
  14. )
  15. expect(handleClose).not.toHaveBeenCalled()
  16. visible.value = true
  17. await nextTick()
  18. const event = new KeyboardEvent('keydown', {
  19. code: EVENT_CODE.esc,
  20. })
  21. document.dispatchEvent(event)
  22. expect(handleClose).toHaveBeenCalledTimes(1)
  23. visible.value = false
  24. await nextTick()
  25. document.dispatchEvent(event)
  26. expect(handleClose).toHaveBeenCalledTimes(1)
  27. })
  28. })