From 98b8d8a97cefe56f4b2af13f55c0f806dcaeede3 Mon Sep 17 00:00:00 2001 From: Martin M Date: Mon, 11 Nov 2019 00:22:08 -0300 Subject: [PATCH] Release v1.8.1 (#28) * new method to get user region * added new test * version bump --- main.js | 5 +++++ mixins/user/regionMixin.js | 27 +++++++++++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- test/_setup/credentials.json | 1 + test/_setup/expectations.js | 6 ++++++ test/user.spec.js | 21 +++++++++++++++++++++ 7 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 mixins/user/regionMixin.js create mode 100644 test/user.spec.js diff --git a/main.js b/main.js index 2562751..01e2069 100644 --- a/main.js +++ b/main.js @@ -150,6 +150,9 @@ const getFirmwareVersionMixin = require('./mixins/firmware/getFirmwareVersionMix const checkDeviceUpdateMixin = require('./mixins/firmware/checkDeviceUpdateMixin'); const checkDevicesUpdatesMixin = require('./mixins/firmware/checkDevicesUpdatesMixin'); +/* LOAD MIXINS: user */ +const regionMixin = require('./mixins/user/regionMixin'); + /* LOAD MIXINS: websocket */ const openWebSocketMixin = require('./mixins/websocket/openWebSocketMixin'); @@ -182,6 +185,8 @@ Object.assign( checkDevicesUpdatesMixin ); +Object.assign(eWeLink.prototype, regionMixin); + Object.assign(eWeLink.prototype, openWebSocketMixin); module.exports = eWeLink; diff --git a/mixins/user/regionMixin.js b/mixins/user/regionMixin.js new file mode 100644 index 0000000..bea869b --- /dev/null +++ b/mixins/user/regionMixin.js @@ -0,0 +1,27 @@ +const { _get } = require('../../lib/helpers'); + +const regionMixin = { + async getRegion() { + if (!this.email || !this.password) { + return { + error: 406, + msg: 'Library needs to be initialized using email and password', + }; + } + + const login = await this.login(); + + const error = _get(login, 'error', false); + + if (error) { + return login; + } + + return { + email: login.user.email, + region: login.region, + }; + }, +}; + +module.exports = regionMixin; diff --git a/package-lock.json b/package-lock.json index f7b1be1..ff494b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ewelink-api", - "version": "1.8.0", + "version": "1.8.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 35b6620..cd48deb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ewelink-api", - "version": "1.8.0", + "version": "1.8.1", "description": "eWeLink API for Node.js", "author": "Martín M.", "license": "MIT", diff --git a/test/_setup/credentials.json b/test/_setup/credentials.json index a8025c9..8a66ef5 100644 --- a/test/_setup/credentials.json +++ b/test/_setup/credentials.json @@ -1,6 +1,7 @@ { "email": "", "password": "", + "region": "", "singleChannelDeviceId": "", "deviceIdWithPower": "", "deviceIdWithoutPower": "", diff --git a/test/_setup/expectations.js b/test/_setup/expectations.js index a95edb5..16e8f6a 100644 --- a/test/_setup/expectations.js +++ b/test/_setup/expectations.js @@ -50,6 +50,11 @@ const firmwareExpectations = { msg: expect.any(String), }; +const regionExpectations = { + email: expect.any(String), + region: expect.any(String), +}; + module.exports = { loginExpectations, allDevicesExpectations, @@ -57,4 +62,5 @@ module.exports = { rawPowerUsageExpectations, currentMonthPowerUsageExpectations, firmwareExpectations, + regionExpectations, }; diff --git a/test/user.spec.js b/test/user.spec.js new file mode 100644 index 0000000..48ecd71 --- /dev/null +++ b/test/user.spec.js @@ -0,0 +1,21 @@ +const ewelink = require('../main'); + +const { email, password, region } = require('./_setup/credentials.json'); + +const { regionExpectations } = require('./_setup/expectations'); + +describe('check user information', () => { + let connection; + + beforeAll(() => { + connection = new ewelink({ email, password }); + }); + + test('region should be returned', async () => { + const response = await connection.getRegion(); + expect(response).toMatchObject(regionExpectations); + expect(typeof response).toBe('object'); + expect(response.email).toBe(email); + expect(response.region).toBe(region); + }); +});