');
var a1 = byId('a1');
a1.innerHTML.should.equal("Requests: 0");
a1.click();
this.server.respond();
a1.innerHTML.should.equal("Requests: 1");
});
it('event listeners on other elements are removed when an element is swapped out', function()
{
var requests = 0;
this.server.respondWith("GET", "/test", function (xhr) {
requests++;
xhr.respond(200, {}, "Requests: " + requests);
});
this.server.respondWith("GET", "/test2", "Clicked");
var div1 = make('
' +
'
Requests: 0
' +
'
');
var div2 = byId("d2");
div2.innerHTML.should.equal("Requests: 0");
document.body.click();
this.server.respond();
requests.should.equal(1);
requests.should.equal(1);
div1.click();
this.server.respond();
div1.innerHTML.should.equal("Clicked");
requests.should.equal(2);
document.body.click();
this.server.respond();
requests.should.equal(2);
});
it('multiple triggers with from clauses mixed in work', function()
{
var requests = 0;
this.server.respondWith("GET", "/test", function (xhr) {
requests++;
xhr.respond(200, {}, "Requests: " + requests);
});
var div2 = make('');
var div1 = make('
Requests: 0
');
div1.innerHTML.should.equal("Requests: 0");
div1.click();
this.server.respond();
div1.innerHTML.should.equal("Requests: 1");
div2.click();
this.server.respond();
div1.innerHTML.should.equal("Requests: 2");
});
it('event listeners can filter on target', function()
{
var requests = 0;
this.server.respondWith("GET", "/test", function (xhr) {
requests++;
xhr.respond(200, {}, "Requests: " + requests);
});
var div1 = make('
' +
'
Requests: 0
' +
'' +
'' +
'
');
var div1 = byId("d1");
var div2 = byId("d2");
var div3 = byId("d3");
div1.innerHTML.should.equal("Requests: 0");
document.body.click();
this.server.respond();
requests.should.equal(0);
div1.click();
this.server.respond();
requests.should.equal(0);
div2.click();
this.server.respond();
requests.should.equal(0);
div3.click();
this.server.respond();
requests.should.equal(1);
});
it('consume prevents event propogation', function()
{
this.server.respondWith("GET", "/foo", "foo");
this.server.respondWith("GET", "/bar", "bar");
var div = make("
" +
" " +
"
");
byId("d1").click();
this.server.respond();
// should not have been replaced by click
byId("d1").parentElement.should.equal(div);
byId("d1").innerText.should.equal("bar");
});
it('throttle prevents multiple requests from happening', function(done)
{
var requests = 0;
var server = this.server;
server.respondWith("GET", "/test", function (xhr) {
requests++;
xhr.respond(200, {}, "Requests: " + requests);
});
server.respondWith("GET", "/bar", "bar");
var div = make("");
div.click();
server.respond();
div.click();
server.respond();
div.click();
server.respond();
div.click();
server.respond();
// should not have been replaced by click
div.innerText.should.equal("Requests: 1");
setTimeout(function () {
div.click();
server.respond();
div.innerText.should.equal("Requests: 2");
div.click();
server.respond();
div.innerText.should.equal("Requests: 2");
done();
}, 50);
});
it('delay delays the request', function(done)
{
var requests = 0;
var server = this.server;
this.server.respondWith("GET", "/test", function (xhr) {
requests++;
xhr.respond(200, {}, "Requests: " + requests);
});
this.server.respondWith("GET", "/bar", "bar");
var div = make("");
div.click();
this.server.respond();
div.click();
this.server.respond();
div.click();
this.server.respond();
div.click();
this.server.respond();
div.innerText.should.equal("");
setTimeout(function () {
server.respond();
div.innerText.should.equal("Requests: 1");
div.click();
server.respond();
div.innerText.should.equal("Requests: 1");
done();
}, 50);
});
it('requests are queued with last one winning by default', function()
{
var requests = 0;
var server = this.server;
this.server.respondWith("GET", "/test", function (xhr) {
requests++;
xhr.respond(200, {}, "Requests: " + requests);
});
this.server.respondWith("GET", "/bar", "bar");
var div = make("");
div.click();
div.click();
div.click();
this.server.respond();
div.innerText.should.equal("Requests: 1");
this.server.respond();
div.innerText.should.equal("Requests: 2");
this.server.respond();
div.innerText.should.equal("Requests: 2");
});
it('queue:all queues all requests', function()
{
var requests = 0;
var server = this.server;
this.server.respondWith("GET", "/test", function (xhr) {
requests++;
xhr.respond(200, {}, "Requests: " + requests);
});
this.server.respondWith("GET", "/bar", "bar");
var div = make("");
div.click();
div.click();
div.click();
this.server.respond();
div.innerText.should.equal("Requests: 1");
this.server.respond();
div.innerText.should.equal("Requests: 2");
this.server.respond();
div.innerText.should.equal("Requests: 3");
});
it('queue:first queues first request', function()
{
var requests = 0;
var server = this.server;
this.server.respondWith("GET", "/test", function (xhr) {
requests++;
xhr.respond(200, {}, "Requests: " + requests);
});
this.server.respondWith("GET", "/bar", "bar");
var div = make("");
div.click();
div.click();
div.click();
this.server.respond();
div.innerText.should.equal("Requests: 1");
this.server.respond();
div.innerText.should.equal("Requests: 2");
this.server.respond();
div.innerText.should.equal("Requests: 2");
});
it('queue:none queues no requests', function()
{
var requests = 0;
var server = this.server;
this.server.respondWith("GET", "/test", function (xhr) {
requests++;
xhr.respond(200, {}, "Requests: " + requests);
});
this.server.respondWith("GET", "/bar", "bar");
var div = make("");
div.click();
div.click();
div.click();
this.server.respond();
div.innerText.should.equal("Requests: 1");
this.server.respond();
div.innerText.should.equal("Requests: 1");
this.server.respond();
div.innerText.should.equal("Requests: 1");
});
it('load event works w/ positive filters', function()
{
this.server.respondWith("GET", "/test", "Loaded!");
var div = make('
Load Me!
');
div.innerHTML.should.equal("Load Me!");
this.server.respond();
div.innerHTML.should.equal("Loaded!");
});
it('load event works w/ negative filters', function()
{
this.server.respondWith("GET", "/test", "Loaded!");
var div = make('
Load Me!
');
div.innerHTML.should.equal("Load Me!");
this.server.respond();
div.innerHTML.should.equal("Load Me!");
});
it('reveal event works on two elements', function()
{
this.server.respondWith("GET", "/test1", "test 1");
this.server.respondWith("GET", "/test2", "test 2");
var div = make('');
var div2 = make('');
div.innerHTML.should.equal("");
div2.innerHTML.should.equal("");
htmx.trigger(div, 'revealed')
htmx.trigger(div2, 'revealed')
this.server.respondAll();
div.innerHTML.should.equal("test 1");
div2.innerHTML.should.equal("test 2");
});
it('reveal event works when triggered by window', function()
{
this.server.respondWith("GET", "/test1", "test 1");
var div = make('