From c766bae6b5b303e641eb760c26efa8cafafad3f4 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Tue, 3 Jan 2017 22:43:59 -0500 Subject: [PATCH] CRM-19829 - Add test --- tests/karma/unit/crmUtilSpec.js | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tests/karma/unit/crmUtilSpec.js b/tests/karma/unit/crmUtilSpec.js index 3e32dbf06d..99a5b2f2af 100644 --- a/tests/karma/unit/crmUtilSpec.js +++ b/tests/karma/unit/crmUtilSpec.js @@ -145,4 +145,64 @@ describe('crmUtil', function() { }); }); + describe('crmThrottle', function() { + var crmThrottle, $q, $timeout, i; + + beforeEach(inject(function(_crmThrottle_, _$q_, _$timeout_) { + crmThrottle = _crmThrottle_; + $q = _$q_; + $timeout = _$timeout_; + })); + + function resolveAfterTimeout() { + var dfr = $q.defer(); + $timeout(function(){ + dfr.resolve(i++); + }, 80); + return dfr.promise; + } + + it('executes the function once', function() { + i = 0; + crmThrottle(resolveAfterTimeout); + expect(i).toBe(0); + $timeout.flush(100); + expect(i).toBe(1); + $timeout.verifyNoPendingTasks(); + }); + + it('executes the function again', function() { + i = 0; + crmThrottle(resolveAfterTimeout); + $timeout.flush(100); + expect(i).toBe(1); + crmThrottle(resolveAfterTimeout); + $timeout.flush(20); + expect(i).toBe(1); + $timeout.flush(100); + expect(i).toBe(2); + $timeout.verifyNoPendingTasks(); + }); + + it('executes the first and last function', function() { + i = 0; + crmThrottle(resolveAfterTimeout); + $timeout.flush(10); + crmThrottle(resolveAfterTimeout); + crmThrottle(resolveAfterTimeout); + crmThrottle(resolveAfterTimeout); + crmThrottle(resolveAfterTimeout); + expect(i).toBe(0); + $timeout.flush(100); + expect(i).toBe(1); + $timeout.flush(100); + $timeout.flush(100); + $timeout.flush(100); + $timeout.flush(100); + expect(i).toBe(2); + $timeout.verifyNoPendingTasks(); + }); + + }); + }); -- 2.25.1