From fb1970663b09f314f944a90030c7c17b81c7fc4c Mon Sep 17 00:00:00 2001 From: Shreyas P Babu Date: Sat, 9 Jan 2021 16:30:19 +0530 Subject: [PATCH] Better error handling 12 (#6) * [] Convert to promises * Add failure tests Co-authored-by: ty08 Co-authored-by: ty08 --- .gitignore | 1 + src/index.js | 21 +++++++++-------- test/index.test.js | 56 ++++++++++++++++++++++++++++++++++------------ 3 files changed, 55 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 83d0e63..d8c8cad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules *.log .jshintrc +.vscode/launch.json diff --git a/src/index.js b/src/index.js index 094a9cf..9807670 100644 --- a/src/index.js +++ b/src/index.js @@ -10,25 +10,28 @@ class BMC { this.access_token = access_token; } - Supporters(callback) { - this._sendRequest('supporters', callback); + Supporters() { + return this._sendRequest('supporters'); } - Subscriptions(callback) { - this._sendRequest('subscriptions', callback); + Subscriptions() { + return this._sendRequest('subscriptions'); } - Extras(callback) { - this._sendRequest('extras', callback); + Extras() { + return this._sendRequest('extras'); } - async _sendRequest(path, callback) { + async _sendRequest(path) { const response = await requester.get(path, { headers: { Authorization: 'Bearer ' + this.access_token, - } + }, + validateStatus: function (status) { + return status >= 200 && status < 300; // default + } }); - callback(response.data); + return response.data; } } diff --git a/test/index.test.js b/test/index.test.js index 6ad252d..e53243f 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -15,39 +15,67 @@ const BMC = require('../src/index'); beforeEach(() => moxios.install(requester)); afterEach(() => moxios.uninstall(requester)); -test('Supporters retreival', done => { +test('Supporters retreival', async () => { moxios.stubRequest('supporters', { status: 200, response: supportersTemplate }) const BMCInstance = new BMC(token); - BMCInstance.Supporters((supportersData) => { + const supportersData = await BMCInstance.Supporters(); expect(supportersData).toStrictEqual(supportersTemplate); - done(); - }); +}); +test('Supporters retreival failure', async () => { + moxios.stubRequest('supporters', { + status: 400, + response: supportersTemplate + }) + const BMCInstance = new BMC(token); + await expect(BMCInstance.Supporters()).rejects.toThrow(); +}); +test('Supporters retreival: no data', async () => { + const BMCResponse = { error: 'No supporters' }; + moxios.stubRequest('supporters', { + status: 200, + response: BMCResponse + }) + const BMCInstance = new BMC(token); + const supportersData = await BMCInstance.Supporters(); + expect(supportersData).toStrictEqual(BMCResponse); }); - -test('Subscription retrieval', done => { +test('Subscription retrieval', async () => { moxios.stubRequest('subscriptions', { status: 200, response: subscriptionsTemplate }) const BMCInstance = new BMC(token); - BMCInstance.Subscriptions((subscriptions) => { + const subscriptions = await BMCInstance.Subscriptions(); expect(subscriptions).toStrictEqual(subscriptionsTemplate); - done(); - }); }); - -test('Extras retrieval', done => { +test('Subscription retreival failure', async () => { + moxios.stubRequest('subscriptions', { + status: 400, + response: subscriptionsTemplate + }) + const BMCInstance = new BMC(token); + await expect(BMCInstance.Subscriptions()).rejects.toThrow(); +}); +test('Subscription retreival: no data', async () => { + const BMCResponse = { error: 'No subscriptions' }; + moxios.stubRequest('subscriptions', { + status: 200, + response: BMCResponse + }) + const BMCInstance = new BMC(token); + const subscriptions = await BMCInstance.Subscriptions(); + expect(subscriptions).toStrictEqual(BMCResponse); +}); +test('Extras retrieval', async () => { moxios.stubRequest('extras', { status: 200, response: extrasTemplate }) const BMCInstance = new BMC(token); - BMCInstance.Extras((extras) => { + const extras = await BMCInstance.Extras(); expect(extras).toStrictEqual(extrasTemplate); - done(); - }); }); \ No newline at end of file