summaryrefslogtreecommitdiff
path: root/spec/frontend/lib/utils/poll_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/lib/utils/poll_spec.js')
-rw-r--r--spec/frontend/lib/utils/poll_spec.js31
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 } });