Commit f64fbf0e authored by Jose Ivan Vargas's avatar Jose Ivan Vargas

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

parent b26d4d2a
---
title: Added tests for the w.gl.utils.backOff promise
merge_request:
author:
/* eslint-disable arrow-body-style*/
require('~/lib/utils/common_utils'); require('~/lib/utils/common_utils');
(() => { (() => {
...@@ -163,5 +164,72 @@ require('~/lib/utils/common_utils'); ...@@ -163,5 +164,72 @@ require('~/lib/utils/common_utils');
expect(gl.utils.isMetaClick(e)).toBe(true); 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);
});
}); });
})(); })();
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment