summaryrefslogtreecommitdiffstats
path: root/tests/debounce.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2021-11-20 06:45:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2021-11-20 06:45:41 +0000
commit9d45e42dc0298ea8241132142d3100358fe99dc4 (patch)
tree8435105a23089a82f8298490dff6e3e4218930b4 /tests/debounce.js
parentInitial commit. (diff)
downloaddecko-9d45e42dc0298ea8241132142d3100358fe99dc4.tar.xz
decko-9d45e42dc0298ea8241132142d3100358fe99dc4.zip
Adding upstream version 1.2.0.upstream/1.2.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/debounce.js')
-rw-r--r--tests/debounce.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/debounce.js b/tests/debounce.js
new file mode 100644
index 0000000..1c8bcf0
--- /dev/null
+++ b/tests/debounce.js
@@ -0,0 +1,71 @@
+import { debounce } from '..';
+import { expect } from 'chai';
+
+/*global describe,it*/
+
+describe('debounce()', () => {
+ it('should debounce when used as a simple decorator', next => {
+ let c = {
+ calls: 0,
+ args: null,
+
+ @debounce
+ foo(...args) {
+ c.calls++;
+ c.args = args;
+ c.context = this;
+ }
+ };
+
+ expect(c).to.have.property('calls', 0);
+ c.foo(1);
+ expect(c).to.have.property('calls', 0);
+ c.foo(2);
+ c.foo(3);
+ setTimeout( () => {
+ expect(c).to.have.property('calls', 1);
+ expect(c.args).to.deep.equal([3]);
+ expect(c.context).to.equal(c);
+
+ next();
+ }, 20);
+ });
+
+ it('should debounce when used as a function', next => {
+ let c = debounce( (...args) => {
+ m.calls++;
+ m.args = args;
+ }),
+ m = { calls:0, args:null };
+
+ expect(m).to.have.property('calls', 0);
+ c(1);
+ expect(m).to.have.property('calls', 0);
+ c(2);
+ c(3);
+ setTimeout( () => {
+ expect(m).to.have.property('calls', 1);
+ expect(m.args).to.deep.equal([3]);
+
+ next();
+ }, 20);
+ });
+
+ it('should support passing a delay', next => {
+ let c = debounce(5, (...args) => {
+ m.calls.push(args);
+ }),
+ m = { calls:[] };
+
+ c(1);
+ setTimeout(()=> c(2), 1);
+ setTimeout(()=> c(3), 10);
+ setTimeout(()=> c(4), 14);
+ setTimeout(()=> c(5), 22);
+ expect(m.calls).to.have.length(0);
+ setTimeout( () => {
+ expect(m.calls).to.deep.equal([ [2], [4], [5] ]);
+ next();
+ }, 30);
+ });
+});