describe("hx-vals attribute", function() {
beforeEach(function () {
this.server = makeServer();
clearWorkArea();
});
afterEach(function () {
this.server.restore();
clearWorkArea();
});
it('basic hx-vals 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('basic hx-vals 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-vals 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-vals 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-vals 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-vals 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('hx-vals overrides hx-vars', 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('basic hx-vals javascript: 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-vals 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-vals 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-vals 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-vals 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-vals 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('hx-vals treats objects as JSON', function () {
this.server.respondWith("POST", "/vars", function (xhr) {
var params = getParameters(xhr);
params['i1'].should.equal("{\"i2\":\"test\"}");
xhr.respond(200, {}, "Clicked!")
});
var div = make("")
div.click();
this.server.respond();
div.innerHTML.should.equal("Clicked!");
});
it('basic hx-vals 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-vals 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-vals 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-vals 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('javascript: 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);
});
it('js: 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);
});
});