import Alpine from 'alpinejs'
import { wait, fireEvent } from '@testing-library/dom'
const timeout = ms => new Promise(resolve => setTimeout(resolve, ms))
global.MutationObserver = class {
observe() {}
}
test('data modified in event listener updates effected attribute bindings', async () => {
document.body.innerHTML = `
`
Alpine.start()
expect(document.querySelector('span').getAttribute('foo')).toEqual('bar')
document.querySelector('button').click()
await wait(() => { expect(document.querySelector('span').getAttribute('foo')).toEqual('baz') })
})
test('nested data modified in event listener updates effected attribute bindings', async () => {
document.body.innerHTML = `
`
Alpine.start()
expect(document.querySelector('span').getAttribute('foo')).toEqual('bar')
document.querySelector('button').click()
await wait(() => { expect(document.querySelector('span').getAttribute('foo')).toEqual('baz') })
})
test('.stop modifier', async () => {
document.body.innerHTML = `
`
Alpine.start()
expect(document.querySelector('div').__x.$data.foo).toEqual('bar')
document.querySelector('span').click()
await wait(() => {
expect(document.querySelector('div').__x.$data.foo).toEqual('baz')
})
})
test('.prevent modifier', async () => {
document.body.innerHTML = `
`
Alpine.start()
expect(document.querySelector('input').checked).toEqual(false)
document.querySelector('input').click()
expect(document.querySelector('input').checked).toEqual(false)
})
test('.window modifier', async () => {
document.body.innerHTML = `
`
Alpine.start()
expect(document.querySelector('span').getAttribute('foo')).toEqual('bar')
document.body.click()
await wait(() => { expect(document.querySelector('span').getAttribute('foo')).toEqual('baz') })
})
test('.document modifier', async () => {
document.body.innerHTML = `
`
Alpine.start()
expect(document.querySelector('span').getAttribute('foo')).toEqual('bar')
document.body.click()
await wait(() => { expect(document.querySelector('span').getAttribute('foo')).toEqual('baz') })
})
test('.once modifier', async () => {
document.body.innerHTML = `