import Alpine from 'alpinejs'
import { fireEvent, wait } from '@testing-library/dom'
test('auto-detect new components and dont lose state of existing ones', async () => {
var runObservers = []
global.MutationObserver = class {
constructor(callback) { runObservers.push(callback) }
observe() {}
}
document.body.innerHTML = `
`
Alpine.start()
fireEvent.input(document.querySelector('input'), { target: { value: 'bar' }})
await wait(() => { expect(document.querySelector('#A span').innerText).toEqual('bar') })
const div = document.createElement('div')
div.setAttribute('id', 'B')
div.setAttribute('x-data', '{ foo: "baz" }')
div.innerHTML = `
`
document.body.appendChild(div)
runObservers[1]([
{ addedNodes: [ div ] }
])
await wait(() => {
expect(document.querySelector('#A span').innerText).toEqual('bar')
expect(document.querySelector('#B span').innerText).toEqual('baz')
})
})
test('auto-initialize new elements added to a component', async () => {
var runObservers = []
global.MutationObserver = class {
constructor(callback) { runObservers.push(callback) }
observe() {}
}
document.body.innerHTML = `