describe('hx-disinherit attribute', function() {
beforeEach(function() {
this.server = makeServer()
clearWorkArea()
})
afterEach(function() {
this.server.restore()
clearWorkArea()
})
it('basic inheritance sanity-check', function() {
var response_inner = '
Hello world
'
var response = '' + response_inner + '
'
this.server.respondWith('GET', '/test', response)
var div = make('Click Me!
')
var btn = byId('bx1')
btn.click()
this.server.respond()
btn.firstChild.id.should.equal('snowflake')
btn.innerText.should.equal('Hello world')
})
it('disinherit exclude single attribute', function() {
var response_inner = 'Hello world
'
var response = '' + response_inner + '
'
this.server.respondWith('GET', '/test', response)
var div = make('Click Me!
')
var btn = byId('bx1')
btn.click()
this.server.respond()
btn.firstChild.id.should.equal('unique')
btn.firstChild.firstChild.id.should.equal('snowflake')
btn.childNodes[1].innerText.should.equal('Click Me!')
})
it('disinherit exclude multiple attributes', function() {
var response_inner = 'Hello world
'
var response = '' + response_inner + '
'
this.server.respondWith('GET', '/test', response)
var div = make('' +
' Click Me! ' +
'
')
var btn = byId('bx1')
btn.click()
this.server.respond()
console.log(btn.innerHTML)
console.log(response)
btn.firstChild.id.should.equal('cta')
btn.firstChild.firstChild.id.should.equal('unique')
btn.firstChild.firstChild.firstChild.id.should.equal('snowflake')
})
it('disinherit exclude all attributes', function() {
var response_inner = 'Hello world
'
var response = '' + response_inner + '
'
this.server.respondWith('GET', '/test', response)
var div = make('' +
' ' +
' Click Me! ' +
' ' +
'
')
var btn = byId('bx1')
btn.click()
this.server.respond()
btn.firstChild.id.should.equal('unique')
btn.firstChild.firstChild.id.should.equal('snowflake')
})
it('same-element inheritance disable', function() {
var response_inner = 'Hello world
'
var response = '' + response_inner + '
'
this.server.respondWith('GET', '/test', response)
var btn = make('
')
btn.click()
this.server.respond()
btn.firstChild.id.should.equal('snowflake')
btn.firstChild.innerText.should.equal('Hello world')
})
it('same-element inheritance disable with child nodes', function() {
var response_inner = 'Hello world
'
var response = '' + response_inner + '
'
this.server.respondWith('GET', '/test', response)
this.server.respondWith('GET', '/test2', 'unique-snowflake')
var div = make('')
var btn = byId('bx1')
btn.click()
this.server.respond()
btn.firstChild.id.should.equal('target')
btn.firstChild.innerText.should.equal('unique-snowflake')
var count = (div.parentElement.innerHTML.match(/snowflake/g) || []).length
count.should.equal(2) // hx-select of parent div and newly loaded inner content
})
it('boosted element hx-disinherit sanity check', function() {
try {
var request
var handler = htmx.on('htmx:beforeRequest', function(evt) {
request = evt
})
var div = make('')
var link = byId('a1')
link.click()
// should match the fully resolved href of the boosted element
should.equal(request.detail.requestConfig.path, '/test')
should.equal(request.detail.elt['htmx-internal-data'].boosted, true)
} finally {
htmx.off('htmx:beforeRequest', handler)
}
})
it('boosted element inheritance manual unset', function() {
try {
var request
var handler = htmx.on('htmx:beforeRequest', function(evt) {
request = evt
})
var div = make('')
var link = byId('a1')
should.equal(link['htmx-internal-data'].boosted, undefined)
} finally {
htmx.off('htmx:beforeRequest', handler)
}
})
it('nested htmx-node with boosting parent', function() {
try {
var request
var handler = htmx.on('htmx:beforeRequest', function(evt) {
request = evt
})
var div = make('')
var link = byId('a1')
link.click()
should.equal(request.detail.requestConfig.path, '/test2')
should.equal(request.detail.elt['htmx-internal-data'].boosted, undefined)
should.equal(request.detail.target.id, 'a1')
} finally {
htmx.off('htmx:beforeRequest', handler)
}
})
})