describe('hx-indicator attribute', function() { beforeEach(function() { this.server = sinon.fakeServer.create() clearWorkArea() }) afterEach(function() { this.server.restore() clearWorkArea() }) it('Indicator classes are properly put on element with no explicit indicator', function() { this.server.respondWith('GET', '/test', 'Clicked!') var btn = make('') btn.click() btn.classList.contains('htmx-request').should.equal(true) this.server.respond() btn.classList.contains('htmx-request').should.equal(false) }) it('Indicator classes are properly put on element with explicit indicator', function() { this.server.respondWith('GET', '/test', 'Clicked!') var btn = make('') var a1 = make('') var a2 = make('') btn.click() btn.classList.contains('htmx-request').should.equal(false) a1.classList.contains('htmx-request').should.equal(true) a2.classList.contains('htmx-request').should.equal(true) this.server.respond() btn.classList.contains('htmx-request').should.equal(false) a1.classList.contains('htmx-request').should.equal(false) a2.classList.contains('htmx-request').should.equal(false) }) it('Indicator classes are properly put on element with relative indicator', function() { this.server.respondWith('GET', '/test', 'Clicked!') var btn = make('') var a1 = make('') btn.click() btn.classList.contains('htmx-request').should.equal(false) a1.classList.contains('htmx-request').should.equal(true) this.server.respond() btn.classList.contains('htmx-request').should.equal(false) a1.classList.contains('htmx-request').should.equal(false) }) it('Indicator classes are properly put on element with explicit indicator w/ data-* prefix', function() { this.server.respondWith('GET', '/test', 'Clicked!') var btn = make('') var a1 = make('') var a2 = make('') btn.click() btn.classList.contains('htmx-request').should.equal(false) a1.classList.contains('htmx-request').should.equal(true) a2.classList.contains('htmx-request').should.equal(true) this.server.respond() btn.classList.contains('htmx-request').should.equal(false) a1.classList.contains('htmx-request').should.equal(false) a2.classList.contains('htmx-request').should.equal(false) }) it('allows closest syntax in hx-indicator', function() { this.server.respondWith('GET', '/test', 'Clicked!') var div = make('
') var btn = byId('b1') btn.click() btn.classList.contains('htmx-request').should.equal(false) div.classList.contains('htmx-request').should.equal(true) this.server.respond() btn.classList.contains('htmx-request').should.equal(false) div.classList.contains('htmx-request').should.equal(false) }) it('is removed when initiating element is removed from the DOM', function() { this.server.respondWith('GET', '/test', 'Clicked!') var indicator = make('