`
Alpine.start()
expect(document.querySelector('span').textContent).toEqual('foo')
})
test('x-data can use attributes from a reusable function', async () => {
document.body.innerHTML = `
`
test = function() {
return {
foo: 'bar',
}
}
Alpine.start()
expect(document.querySelector('span').textContent).toEqual('bar')
})
test('x-data can use $el', async () => {
document.body.innerHTML = `
`
Alpine.start()
expect(document.querySelector('span').textContent).toEqual('test')
})
test('functions in x-data are reactive', async () => {
document.body.innerHTML = `
`
Alpine.start()
expect(document.querySelector('span').textContent).toEqual('bar')
document.querySelector('button').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('baz') })
})
test('Proxies are not nested and duplicated when manipulating an array', async () => {
document.body.innerHTML = `
`
Alpine.start()
// Before this fix: https://github.com/alpinejs/alpine/pull/141
// This test would create exponentially slower performance and eventually stall out.
await wait(() => { expect(document.querySelector('span').textContent).toEqual('foo') })
document.querySelector('button').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('bar') })
document.querySelector('h1').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('foo') })
document.querySelector('button').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('bar') })
document.querySelector('h1').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('foo') })
document.querySelector('button').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('bar') })
document.querySelector('h1').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('foo') })
document.querySelector('button').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('bar') })
document.querySelector('h1').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('foo') })
document.querySelector('button').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('bar') })
document.querySelector('h1').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('foo') })
document.querySelector('button').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('bar') })
document.querySelector('h1').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('foo') })
document.querySelector('button').click()
await wait(() => { expect(document.querySelector('span').textContent).toEqual('bar') })
})
test('component refresh one time per update whatever the number of mutations in the update', async () => {
window.refreshCount = 0
document.body.innerHTML = `