diff options
Diffstat (limited to 'spec/frontend/lib/utils/poll_spec.js')
-rw-r--r-- | spec/frontend/lib/utils/poll_spec.js | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/spec/frontend/lib/utils/poll_spec.js b/spec/frontend/lib/utils/poll_spec.js index 5ee9738ebf3..135c752b5cb 100644 --- a/spec/frontend/lib/utils/poll_spec.js +++ b/spec/frontend/lib/utils/poll_spec.js @@ -1,6 +1,6 @@ +import waitForPromises from 'helpers/wait_for_promises'; import Poll from '~/lib/utils/poll'; import { successCodes } from '~/lib/utils/http_status'; -import waitForPromises from 'helpers/wait_for_promises'; describe('Poll', () => { let callbacks; @@ -128,6 +128,35 @@ describe('Poll', () => { }); }); + describe('with delayed initial request', () => { + it('delays the first request', async done => { + mockServiceCall({ status: 200, headers: { 'poll-interval': 1 } }); + + const Polling = new Poll({ + resource: service, + method: 'fetch', + data: { page: 1 }, + successCallback: callbacks.success, + errorCallback: callbacks.error, + }); + + Polling.makeDelayedRequest(1); + + expect(Polling.timeoutID).toBeTruthy(); + + waitForAllCallsToFinish(2, () => { + Polling.stop(); + + expect(service.fetch.mock.calls).toHaveLength(2); + expect(service.fetch).toHaveBeenCalledWith({ page: 1 }); + expect(callbacks.success).toHaveBeenCalled(); + expect(callbacks.error).not.toHaveBeenCalled(); + + done(); + }); + }); + }); + describe('stop', () => { it('stops polling when method is called', done => { mockServiceCall({ status: 200, headers: { 'poll-interval': 1 } }); |