From 19f8f5fc9ab95425284e1b355b0601cd833f39a7 Mon Sep 17 00:00:00 2001 From: Lucas Rosa Date: Wed, 8 Jul 2020 17:16:39 -0300 Subject: [PATCH] add SIM Card Groups Resource --- lib/resources/SimCardGroups.js | 55 +++++++++++++ lib/telnyx.js | 3 +- test/resources/SimCardGroups.spec.js | 115 +++++++++++++++++++++++++++ 3 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 lib/resources/SimCardGroups.js create mode 100644 test/resources/SimCardGroups.spec.js diff --git a/lib/resources/SimCardGroups.js b/lib/resources/SimCardGroups.js new file mode 100644 index 0000000..6313e21 --- /dev/null +++ b/lib/resources/SimCardGroups.js @@ -0,0 +1,55 @@ +'use strict'; + +var TelnyxResource = require('../TelnyxResource'); +var utils = require('../utils'); +var telnyxMethod = TelnyxResource.method; + +function transformResponseData(response, telnyx) { + return utils.addResourceToResponseData( + response, + telnyx, + 'simCardGroups', + { + del: telnyxMethod({ + method: 'DELETE', + path: '/{simCardGroupId}', + urlParams: ['simCardGroupId'], + paramsValues: [response.data.id], + paramsNames: ['id'], + }), + + update: telnyxMethod({ + method: 'PATCH', + path: '/{simCardGroupId}', + urlParams: ['simCardGroupId'], + paramsValues: [response.data.id], + paramsNames: ['id'], + }), + } + ); +} + +module.exports = TelnyxResource.extend({ + path: 'sim_card_groups', + + list: telnyxMethod({ + method: 'GET', + methodType: 'list', + + transformResponseData: transformResponseData, + }), + + create: telnyxMethod({ + method: 'POST', + + transformResponseData: transformResponseData, + }), + + retrieve: telnyxMethod({ + method: 'GET', + path: '/{id}', + urlParams: ['id'], + + transformResponseData: transformResponseData, + }), +}); diff --git a/lib/telnyx.js b/lib/telnyx.js index 2db741d..7aa47c2 100644 --- a/lib/telnyx.js +++ b/lib/telnyx.js @@ -63,7 +63,8 @@ var resources = { CallControlApplications: require('./resources/CallControlApplications'), PhoneNumbersInboundChannels: require('./resources/PhoneNumbersInboundChannels'), OtaUpdates: require('./resources/OtaUpdates'), - MobileOperatorNetworks: require('./resources/MobileOperatorNetworks') + MobileOperatorNetworks: require('./resources/MobileOperatorNetworks'), + SimCardGroups: require('./resources/SimCardGroups') }; Telnyx.TelnyxResource = require('./TelnyxResource'); diff --git a/test/resources/SimCardGroups.spec.js b/test/resources/SimCardGroups.spec.js new file mode 100644 index 0000000..ec75ac7 --- /dev/null +++ b/test/resources/SimCardGroups.spec.js @@ -0,0 +1,115 @@ +'use strict'; + +var utils = require('../../testUtils'); +var telnyx = utils.getTelnyxMock(); +var expect = require('chai').expect; + +var TEST_AUTH_KEY = utils.getUserTelnyxKey(); + +describe('SimCardGroups Resource', function() { + describe('retrieve', function() { + function responseFn(response) { + expect(response.data).to.include.keys(['id', 'name', 'data_enabled', 'data_limit', 'consumed_data']); + expect(response.data).to.include({record_type: 'sim_card_group'}); + expect(response.data.consumed_data).to.include.keys(['amount', 'unit']); + } + + it('Sends the correct request', function() { + return telnyx.simCardGroups.retrieve('123').then(responseFn); + }) + + it('Sends the correct request [with specified auth]', function() { + return telnyx.simCardGroups.retrieve('123', TEST_AUTH_KEY) + .then(responseFn); + }); + }); + + describe('create', function() { + function responseFn(response) { + expect(response.data).to.include.keys(['id', 'name', 'data_enabled', 'data_limit', 'consumed_data']); + expect(response.data).to.include({record_type: 'sim_card_group'}); + expect(response.data.consumed_data).to.include.keys(['amount', 'unit']); + } + + it('Sends the correct request', function() { + return telnyx.simCardGroups.create({name: 'My Custom Group'}) + .then(responseFn); + }) + + it('Sends the correct request [with specified auth]', function() { + return telnyx.simCardGroups.create({name: 'My Custom Group'}, TEST_AUTH_KEY) + .then(responseFn); + }); + + it('Sends the correct request [with specified auth in options]', function() { + return telnyx.simCardGroups.create({name: 'My Custom Group'}, {api_key: TEST_AUTH_KEY}) + .then(responseFn); + }); + }); + + describe('list', function() { + function responseFn(response) { + expect(response.data[0]).to.include.keys(['id', 'name', 'data_enabled', 'data_limit', 'consumed_data']); + expect(response.data[0]).to.include({record_type: 'sim_card_group'}); + expect(response.data[0].consumed_data).to.include.keys(['amount', 'unit']); + } + + it('Sends the correct request', function() { + return telnyx.simCardGroups.list() + .then(responseFn); + }); + + it('Sends the correct request [with specified auth]', function() { + return telnyx.simCardGroups.list(TEST_AUTH_KEY) + .then(responseFn); + }); + }); + + describe('Nested', function() { + function responseFn(response) { + if (response.data) { + expect(response.data).to.include.keys(['id', 'name', 'data_enabled', 'data_limit', 'consumed_data']); + expect(response.data).to.include({record_type: 'sim_card_group'}); + expect(response.data.consumed_data).to.include.keys(['amount', 'unit']); + } + } + + describe('del', function() { + it('Sends the correct request', function() { + return telnyx.simCardGroups.create({name: 'My Custom Group'}) + .then(function(response) { + const simCardGroup = response.data; + return simCardGroup.del() + .then(responseFn); + }) + }); + it('Sends the correct request [with specified auth]', function() { + return telnyx.simCardGroups.retrieve('123') + .then(function(response) { + const simCardGroup = response.data; + return simCardGroup.del(TEST_AUTH_KEY) + .then(responseFn); + }) + }); + }); + + describe('update', function() { + it('Sends the correct request', function() { + return telnyx.simCardGroups.create({name: 'My Custom Group'}) + .then(function(response) { + const simCardGroup = response.data; + return simCardGroup.update({name: 'My Custom Updated Group'}) + .then(responseFn); + }) + }); + it('Sends the correct request [with specified auth]', function() { + return telnyx.simCardGroups.retrieve('123') + .then(function(response) { + const simCardGroup = response.data; + return simCardGroup.update({name: 'My Custom Updated Group'}, TEST_AUTH_KEY) + .then(responseFn); + }) + }); + }); + }) +});