describe("Core htmx Regression Tests", function(){ beforeEach(function() { this.server = makeServer(); clearWorkArea(); }); afterEach(function() { this.server.restore(); clearWorkArea(); }); it('SVGs process properly in IE11', function() { var btn = make('\n' + '\n' + '\n' + '\n' + '') }); it ('Handles https://github.com/bigskysoftware/htmx/issues/4 properly', function() { this.server.respondWith("GET", "/index2a.php", "
I came from message oob swap I should be second
" + "
I came from a message2 oob swap I should be third but I am in the wrong spot
" + "I'm page2 content (non-swap) I should be first") var h1 = make("" + "
" + "
" + "
" + "

Kutty CLICK ME

") h1.click(); this.server.respond(); htmx.find("#page2").innerHTML.should.equal("I'm page2 content (non-swap) I should be first") htmx.find("#message").innerHTML.should.equal("I came from message oob swap I should be second") htmx.find("#message2").innerHTML.should.equal("I came from a message2 oob swap I should be third but I am in the wrong spot") }); it ('Handles https://github.com/bigskysoftware/htmx/issues/33 "empty values" properly', function() { this.server.respondWith("POST", "/htmx.php", function (xhr) { xhr.respond(200, {}, xhr.requestBody); }); var form = make('
\n' + '\n' + '\n' + '
') form.click(); this.server.respond(); form.innerHTML.should.equal("variable=") }); it ('name=id doesnt cause an error', function(){ this.server.respondWith("GET", "/test", "Foo
") var div = make('
Get It
') div.click(); this.server.respond(); div.innerText.should.contain("Foo") }); it ('empty id doesnt cause an error', function(){ this.server.respondWith("GET", "/test", "Foo\n
") var div = make('
Get It
') div.click(); this.server.respond(); div.innerText.should.contain("Foo") }); it ('id with dot in value doesnt cause an error', function(){ this.server.respondWith("GET", "/test", "Foo
"); var div = make('
Get It
'); div.click(); this.server.respond(); div.innerText.should.contain("Foo"); }); it ('@ symbol in attributes does not break requests', function(){ this.server.respondWith("GET", "/test", "
Foo
"); var div = make('
Get It
'); div.click(); this.server.respond(); byId("d1").getAttribute('@foo').should.equal('bar'); }); it ('@ symbol in attributes does not break attribute settling requests', function(){ this.server.respondWith("GET", "/test", "
Foo
"); var div = make('
Foo
'); div.click(); this.server.respond(); byId("d1").getAttribute('@foo').should.equal('bar'); }); it ('selected element with ID does not cause NPE when it disappears', function(){ this.server.respondWith("GET", "/test", "
Replaced
"); var input = make(''); input.focus(); input.click(); this.server.respond(); byId("d1").innerText.should.equal('Replaced'); }); it('does not submit with a false condition on a form', function() { this.server.respondWith("POST", "/test", "Submitted"); var defaultPrevented = false; htmx.on("click", function(evt) { defaultPrevented = evt.defaultPrevented; }) var form = make('
'); form.click() this.server.respond(); defaultPrevented.should.equal(true); }) it('two elements can listen for the same event on another element', function() { this.server.respondWith("GET", "/test", "triggered"); make('
' + '
'); var div1 = byId("d1"); var div2 = byId("d2"); document.body.click(); this.server.respond(); div2.innerHTML.should.equal("triggered"); div1.innerHTML.should.equal("triggered"); }) it('a form can reset based on the htmx:afterRequest event', function() { this.server.respondWith("POST", "/test", "posted"); //htmx.logAll(); var form = make('
' + ' ' + ' ' + '
'); htmx.trigger(form, "htmx:load"); // have to manually trigger the load event for non-AJAX dynamic content var div1 = byId("d1"); var input = byId("i1"); input.value = "foo"; var submit = byId("s1"); input.value.should.equal("foo"); submit.click(); this.server.respond(); div1.innerHTML.should.equal("posted"); input.value.should.equal(""); // form should be reset }) it('supports image maps', function() { this.server.respondWith("GET", "/test", "triggered"); make('
' + '
' + ' ' + '' + ' ' + ' Computer' + ' ' + '
'); var div1 = byId("d1"); var area = document.getElementsByTagName('area')[0]; area.click(); this.server.respond(); div1.innerHTML.should.equal("triggered"); }) })