describe("hx-vars attribute", function() { beforeEach(function () { this.server = makeServer(); clearWorkArea(); }); afterEach(function () { this.server.restore(); clearWorkArea(); }); it('basic hx-vars works', function () { this.server.respondWith("POST", "/vars", function (xhr) { var params = getParameters(xhr); params['i1'].should.equal("test"); xhr.respond(200, {}, "Clicked!") }); var div = make('
') div.click(); this.server.respond(); div.innerHTML.should.equal("Clicked!"); }); it('hx-vars works with braces', function () { this.server.respondWith("POST", "/vars", function (xhr) { var params = getParameters(xhr); params['i1'].should.equal("test"); xhr.respond(200, {}, "Clicked!") }); var div = make('
') div.click(); this.server.respond(); div.innerHTML.should.equal("Clicked!"); }); it('multiple hx-vars works', function () { this.server.respondWith("POST", "/vars", function (xhr) { var params = getParameters(xhr); params['v1'].should.equal("test"); params['v2'].should.equal("42"); xhr.respond(200, {}, "Clicked!") }); var div = make('
') div.click(); this.server.respond(); div.innerHTML.should.equal("Clicked!"); }); it('hx-vars can be on parents', function () { this.server.respondWith("POST", "/vars", function (xhr) { var params = getParameters(xhr); params['i1'].should.equal("test"); xhr.respond(200, {}, "Clicked!") }); make('
') var div = byId("d1"); div.click(); this.server.respond(); div.innerHTML.should.equal("Clicked!"); }); it('hx-vars can override parents', function () { this.server.respondWith("POST", "/vars", function (xhr) { var params = getParameters(xhr); params['i1'].should.equal("best"); xhr.respond(200, {}, "Clicked!") }); make('
') var div = byId("d1"); div.click(); this.server.respond(); div.innerHTML.should.equal("Clicked!"); }); it('hx-vars overrides inputs', function () { this.server.respondWith("POST", "/include", function (xhr) { var params = getParameters(xhr); params['i1'].should.equal("best"); xhr.respond(200, {}, "Clicked!") }); var div = make('
') var input = byId("i1") input.click(); this.server.respond(); div.innerHTML.should.equal("Clicked!"); }); it('basic hx-vars can be unset', function () { this.server.respondWith("POST", "/vars", function (xhr) { var params = getParameters(xhr); params.should.be.empty; xhr.respond(200, {}, "Clicked!") }); make( "
\
\
" ); var div = byId("d1"); div.click(); this.server.respond(); div.innerHTML.should.equal("Clicked!"); }); it('basic hx-vars with braces can be unset', function () { this.server.respondWith("POST", "/vars", function (xhr) { var params = getParameters(xhr); params.should.be.empty; xhr.respond(200, {}, "Clicked!") }); make( "
\
\
" ); var div = byId("d1"); div.click(); this.server.respond(); div.innerHTML.should.equal("Clicked!"); }); it('multiple hx-vars can be unset', function () { this.server.respondWith("POST", "/vars", function (xhr) { var params = getParameters(xhr); params.should.be.empty; xhr.respond(200, {}, "Clicked!") }); make( "
\
\
" ); var div = byId("d1"); div.click(); this.server.respond(); div.innerHTML.should.equal("Clicked!"); }); it('unsetting hx-vars maintains input values', function () { this.server.respondWith("POST", "/include", function (xhr) { var params = getParameters(xhr); params['i1'].should.equal("test"); xhr.respond(200, {}, "Clicked!") }); var div = make( "
\ \
" ) var input = byId("i1") input.click(); this.server.respond(); div.innerHTML.should.equal("Clicked!"); }); it('is not evaluated when allowEval is false', function () { var calledEvent = false; var handler = htmx.on("htmx:evalDisallowedError", function(){ calledEvent = true; }); try { htmx.config.allowEval = false; this.server.respondWith("POST", "/vars", function (xhr) { var params = getParameters(xhr); should.not.exist(params['i1']); xhr.respond(200, {}, "Clicked!") }); var div = make('
') div.click(); this.server.respond(); div.innerHTML.should.equal("Clicked!"); } finally { htmx.config.allowEval = true; htmx.off("htmx:evalDisallowedError", handler); } calledEvent.should.equal(true); }); });