describe("Core htmx AJAX headers", function() { beforeEach(function () { this.server = makeServer(); clearWorkArea(); }); afterEach(function () { this.server.restore(); clearWorkArea(); }); it("should include the X-HX-Request header", function(){ this.server.respondWith("GET", "/test", function(xhr){ xhr.requestHeaders['X-HX-Request'].should.be.equal('true'); xhr.respond(200, {}, ""); }); var div = make('
'); div.click(); this.server.respond(); }) it("should include the X-HX-Trigger header", function(){ this.server.respondWith("GET", "/test", function(xhr){ xhr.requestHeaders['X-HX-Trigger'].should.equal('d1'); xhr.respond(200, {}, ""); }); var div = make('
'); div.click(); this.server.respond(); }) it("should include the X-HX-Trigger-Name header", function(){ this.server.respondWith("GET", "/test", function(xhr){ xhr.requestHeaders['X-HX-Trigger-Name'].should.equal('n1'); xhr.respond(200, {}, ""); }); var div = make(''); div.click(); this.server.respond(); }) it("should include the X-HX-Target header", function(){ this.server.respondWith("GET", "/test", function(xhr){ xhr.requestHeaders['X-HX-Target'].should.equal('d1'); xhr.respond(200, {}, ""); }); var div = make('
'); div.click(); this.server.respond(); }) it("should handle simple string X-HX-Trigger response header properly", function(){ this.server.respondWith("GET", "/test", [200, {"X-HX-Trigger" : "foo"}, ""]); var div = make('
'); var invokedEvent = false; div.addEventListener("foo", function (evt) { invokedEvent = true; }); div.click(); this.server.respond(); invokedEvent.should.equal(true); }) it("should handle basic JSON X-HX-Trigger response header properly", function(){ this.server.respondWith("GET", "/test", [200, {"X-HX-Trigger" : "{\"foo\":null}"}, ""]); var div = make('
'); var invokedEvent = false; div.addEventListener("foo", function (evt) { invokedEvent = true; should.equal(null, evt.detail.value); evt.detail.elt.should.equal(div); }); div.click(); this.server.respond(); invokedEvent.should.equal(true); }) it("should handle JSON with array arg X-HX-Trigger response header properly", function(){ this.server.respondWith("GET", "/test", [200, {"X-HX-Trigger" : "{\"foo\":[1, 2, 3]}"}, ""]); var div = make('
'); var invokedEvent = false; div.addEventListener("foo", function (evt) { invokedEvent = true; evt.detail.elt.should.equal(div); evt.detail.value.should.deep.equal([1, 2, 3]); }); div.click(); this.server.respond(); invokedEvent.should.equal(true); }) it("should handle JSON with array arg X-HX-Trigger response header properly", function(){ this.server.respondWith("GET", "/test", [200, {"X-HX-Trigger" : "{\"foo\":{\"a\":1, \"b\":2}}"}, ""]); var div = make('
'); var invokedEvent = false; div.addEventListener("foo", function (evt) { invokedEvent = true; evt.detail.elt.should.equal(div); evt.detail.a.should.equal(1); evt.detail.b.should.equal(2); }); div.click(); this.server.respond(); invokedEvent.should.equal(true); }) });