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('
') 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('
') 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('
' + ' ' + '
') 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('
' + ' ' + '
') 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('
Click me
') 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('
Click me
') 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('
Click me
') 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) } }) })