HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall/node_modules/bootstrap-vue/src/mixins/focus-in.spec.js
import { mount } from '@vue/test-utils'
import { waitNT } from '../../tests/utils'
import { focusInMixin } from './focus-in'

describe('mixins/focus-in', () => {
  it('works', async () => {
    let count = 0
    const App = {
      mixins: [focusInMixin],
      // listenForFocusIn comes from the mixin
      created() {
        this.listenForFocusIn = true
      },
      methods: {
        focusInHandler() {
          count++
        }
      },
      render(h) {
        return h('div', [h('button', 'button')])
      }
    }

    const wrapper = mount(App, {
      attachTo: document.body
    })

    const focusinEvent = new FocusEvent('focusin')

    expect(wrapper).toBeDefined()
    expect(count).toBe(0)
    expect(wrapper.vm.listenForFocusIn).toBe(true)

    // When this.listenForFocusIn is true
    expect(count).toBe(0)
    await wrapper.find('button').trigger('focusin')
    expect(count).toBe(1)
    document.dispatchEvent(focusinEvent)
    await waitNT(wrapper.vm)
    expect(count).toBe(2)

    // When this.listenForFocusIn is false
    await wrapper.setData({ listenForFocusIn: false })
    expect(count).toBe(2)
    await wrapper.find('button').trigger('focusin')
    expect(count).toBe(2)
    document.dispatchEvent(focusinEvent)
    await waitNT(wrapper.vm)
    expect(count).toBe(2)

    wrapper.destroy()
  })
})