Added unit tests for the w.gl.utils.backOff promise

This commit is contained in:
Jose Ivan Vargas 2017-03-16 18:38:52 -06:00
parent b26d4d2ac4
commit f64fbf0ec7
2 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,4 @@
---
title: Added tests for the w.gl.utils.backOff promise
merge_request:
author:

View File

@ -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);
});
});
})();