Added unit tests for the w.gl.utils.backOff promise
This commit is contained in:
parent
b26d4d2ac4
commit
f64fbf0ec7
2 changed files with 72 additions and 0 deletions
4
changelogs/unreleased/add-test-backoff-util.yml
Normal file
4
changelogs/unreleased/add-test-backoff-util.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Added tests for the w.gl.utils.backOff promise
|
||||
merge_request:
|
||||
author:
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable arrow-body-style*/
|
||||
require('~/lib/utils/common_utils');
|
||||
|
||||
(() => {
|
||||
|
@ -163,5 +164,72 @@ require('~/lib/utils/common_utils');
|
|||
expect(gl.utils.isMetaClick(e)).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('gl.utils.backOff', () => {
|
||||
it('solves the promise from the callback', (done) => {
|
||||
const expectedResponseValue = 'Success!';
|
||||
gl.utils.backOff((next, stop) => {
|
||||
return new Promise((resolve) => {
|
||||
resolve(expectedResponseValue);
|
||||
}).then((resp) => {
|
||||
stop(resp);
|
||||
});
|
||||
}).then((respBackoff) => {
|
||||
expect(respBackoff).toBe(expectedResponseValue);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('catches the rejected promise from the callback ', (done) => {
|
||||
const errorMessage = 'Mistakes were made!';
|
||||
gl.utils.backOff((next, stop) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
reject(new Error(errorMessage));
|
||||
}).then((resp) => {
|
||||
stop(resp);
|
||||
}).catch(err => stop(err));
|
||||
}).catch((errBackoffResp) => {
|
||||
expect(errBackoffResp instanceof Error).toBe(true);
|
||||
expect(errBackoffResp.message).toBe(errorMessage);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('solves the promise correctly after retrying a third time', (done) => {
|
||||
let numberOfCalls = 1;
|
||||
const expectedResponseValue = 'Success!';
|
||||
gl.utils.backOff((next, stop) => {
|
||||
return new Promise((resolve) => {
|
||||
resolve(expectedResponseValue);
|
||||
}).then((resp) => {
|
||||
if (numberOfCalls < 3) {
|
||||
numberOfCalls += 1;
|
||||
next();
|
||||
} else {
|
||||
stop(resp);
|
||||
}
|
||||
});
|
||||
}).then((respBackoff) => {
|
||||
expect(respBackoff).toBe(expectedResponseValue);
|
||||
expect(numberOfCalls).toBe(3);
|
||||
done();
|
||||
});
|
||||
}, 10000);
|
||||
|
||||
it('rejects the backOff promise after timing out', (done) => {
|
||||
const expectedResponseValue = 'Success!';
|
||||
gl.utils.backOff((next) => {
|
||||
return new Promise((resolve) => {
|
||||
resolve(expectedResponseValue);
|
||||
}).then((resp) => {
|
||||
setTimeout(next(resp), 5000); // it will time out
|
||||
});
|
||||
}, 3000).catch((errBackoffResp) => {
|
||||
expect(errBackoffResp instanceof Error).toBe(true);
|
||||
expect(errBackoffResp.message).toBe('BACKOFF_TIMEOUT');
|
||||
done();
|
||||
});
|
||||
}, 10000);
|
||||
});
|
||||
});
|
||||
})();
|
||||
|
|
Loading…
Reference in a new issue