text: import { mount } from '@vue/test-utils'
  import { asyncExpect } from '../utils'
  
  export default function focusTest (Component) {
    describe('focus and blur', () => {
      beforeAll(() => {
        jest.useFakeTimers()
      })
  
      afterAll(() => {
        jest.useRealTimers()
      })
  
      it('focus() and onFocus', () => {
        const handleFocus = jest.fn()
        const wrapper = mount({
          render (h) {
            return <Component ref='component' onFocus={handleFocus} />
          },
        }, { attachToDocument: true, sync: false })
        wrapper.vm.$refs.component.focus()
        jest.runAllTimers()
        expect(handleFocus).toBeCalled()
      })
  
      it('blur() and onBlur', async () => {
        const handleBlur = jest.fn()
        const wrapper = mount({
          render (h) {
            return <Component ref='component' onBlur={handleBlur} />
          },
        }, { attachToDocument: true, sync: false })
        wrapper.vm.$refs.component.focus()
        wrapper.vm.$refs.component.blur()
        jest.runAllTimers()
        await asyncExpect(() => {
          expect(handleBlur).toBeCalled()
        })
      })
  
      it('autoFocus', (done) => {
        jest.useRealTimers()
        const handleFocus = jest.fn()
        mount({
          render (h) {
            return <Component autoFocus onFocus={handleFocus} />
          },
        }, { attachToDocument: true, sync: false })
        setTimeout(() => {
          expect(handleFocus).toBeCalled()
          done()
        }, 1000)
      })
    })
  }
  