From 9f04b85a9f63e41674c90f3fc6befcaa3f8c3768 Mon Sep 17 00:00:00 2001 From: carson Date: Mon, 10 May 2021 09:46:40 -0600 Subject: [PATCH] tests for `hx-trigger` `delay` and `throttle` modifiers --- test/attributes/hx-trigger.js | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/test/attributes/hx-trigger.js b/test/attributes/hx-trigger.js index 4560951e..9f2f4ec1 100644 --- a/test/attributes/hx-trigger.js +++ b/test/attributes/hx-trigger.js @@ -469,5 +469,80 @@ describe("hx-trigger attribute", function(){ 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); + }); + })