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('')
});
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('')
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('
' +
' ' +
' ' +
'' +
' ' +
'
');
var div1 = byId("d1");
var area = document.getElementsByTagName('area')[0];
area.click();
this.server.respond();
div1.innerHTML.should.equal("triggered");
})
})