diff --git a/index.js b/index.js index 529eaf0..e7339b4 100644 --- a/index.js +++ b/index.js @@ -19,7 +19,8 @@ var resources = { subscription: require('./resources/subscription'), subaccount: require('./resources/subaccount'), settlements: require('./resources/settlements'), - misc: require('./resources/misc') + misc: require('./resources/misc'), + transferrecipient: require('./resources/transferrecipient') } function Paystack(key) { @@ -50,7 +51,7 @@ Paystack.prototype = { var body, qs; // quick fix - method checking - var method = params.method in {"get":'', "post":'', "put":''} + var method = params.method in {"get":'', "post":'', "put":'', "delete":''} ? params.method : (function () { throw new Error("Method not Allowed! - Resource declaration error") })() var endpoint = [root, params.endpoint].join(''); diff --git a/resources/transferrecipient.js b/resources/transferrecipient.js new file mode 100644 index 0000000..f4a4bdd --- /dev/null +++ b/resources/transferrecipient.js @@ -0,0 +1,45 @@ +'use strict'; + +var root = '/transferrecipient'; + +module.exports = { + + /* + Create transferrecipient + @param: type, name, account_number, bank_code, currency, description + */ + create: { + method: 'post', + endpoint: root, + params: ['type*', 'name*', 'account_number*', 'bank_code*', 'currency', 'description'] + }, + + /* + List transferrecipients + */ + list: { + method: 'get', + endpoint: root, + params: ['perPage', 'page'] + }, + + /* + Update transferrecipient + @params: name, email + */ + update: { + method: 'put', + endpoint: [root, '/{id}'].join(''), + params: ['name', 'email'], + args: ['id'] + }, + + /* + Delete transferrecipient + */ + delete: { + method: 'delete', + endpoint: [root, '/{id}'].join(''), + args: ['id'] + } +}; diff --git a/test/transferrecipient.js b/test/transferrecipient.js new file mode 100644 index 0000000..b601db0 --- /dev/null +++ b/test/transferrecipient.js @@ -0,0 +1,79 @@ +var paystack = require('../index')(process.env.KEY) + , mocha = require('mocha') + , expect = require('chai').expect + ; + + describe("Paystack Transferrecipients", function() { + + var transfer_id, recipient_code; + + //Create Transfer Recipient + it("should create a new transfer recipient", function(done) { + paystack.transferrecipient.create({ + type: 'nuban', + name: 'Samuel Oluwatomi', + account_number: '0172345944', + bank_code: '058', + currency: 'NGN', + description: 'A transfer recipient' + }) + .then(function(body){ + expect(body).to.have.property('status'); + expect(body).to.have.property('data'); + expect(body.data).to.have.property('id'); + expect(body.data).to.have.property('recipient_code'); + + transfer_id = body.data.id; + recipient_code = body.data.recipient_code; + done(); + }) + .catch(function(error){ + return done(error); + }); + }); + + //List Transfer Recipient + it("should list transfer recipients", function(done) { + paystack.transferrecipient.list() + .then(function(body){ + expect(body).to.have.property('data'); + expect(body.data).to.be.instanceof(Array); + done(); + }) + .catch(function(error){ + return done(error); + }); + }); + + //Update Transfer Recipient + it("should update a transfer recipient", function(done) { + paystack.transferrecipient.update(transfer_id, { + name: 'Samuel Jackson' + }) + .then(function(body){ + expect(body).to.have.property('status'); + expect(body).to.have.property('message'); + done(); + }) + .catch(function(error){ + return done(error); + }); + }); + + //Delete Transfer Recipient + it("should delete a transfer recipient", function(done) { + paystack.transferrecipient.delete(transfer_id) + .then(function(body){ + expect(body).to.have.property('status'); + expect(body).to.have.property('message'); + done(); + }) + .catch(function(error){ + return done(error); + }); + }); +}); + + + + \ No newline at end of file