diff --git a/CHANGELOG.md b/CHANGELOG.md index 0db53cb..665160e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ Current Version - +2.7.0 November 6, 2017 + - Add get orders by button ref + 2.6.0 July 19, 2017 - Add `customers` resource diff --git a/README.md b/README.md index 3cfae4c..bda3b4c 100644 --- a/README.md +++ b/README.md @@ -240,6 +240,16 @@ client.orders.get('btnorder-XXX', function(err, res) { }); ``` +##### Get by Button Ref + +```javascript +var client = require('@button/button-client-node')('sk-XXX'); + +client.orders.getByBtnRef('srctok-XXX', function (err, res) { + // ... +}); +``` + ##### Update ```javascript diff --git a/lib/resources/orders.js b/lib/resources/orders.js index f7ff730..fba9578 100644 --- a/lib/resources/orders.js +++ b/lib/resources/orders.js @@ -20,6 +20,21 @@ function orders(requestOptions, maybePromiseRequest) { return maybePromiseRequest(options, callback); }, + getByBtnRef: function get(btnRef, callback) { + // + // Lists orders by btn_ref. + // + // @param {string} btnRef the button attribution token + // @callback invoked iff config.promise isn't valid + // @returns {Object=} a promise or undefined, depending on + // `config.promise` + var options = merge(requestOptions, { + method: 'GET', + path: '/v1/order/btn-ref/' + btnRef + }); + + return maybePromiseRequest(options, callback); + }, create: function create(order, callback) { // // Creates an order. diff --git a/package.json b/package.json index 58717e6..92672a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@button/button-client-node", - "version": "2.6.0", + "version": "2.7.0", "description": "node.js client for the Button Order API", "repository": { "type": "git", diff --git a/test/lib/resources/orders-test.js b/test/lib/resources/orders-test.js index 270ead4..6035281 100644 --- a/test/lib/resources/orders-test.js +++ b/test/lib/resources/orders-test.js @@ -52,6 +52,35 @@ describe('lib/resources/orders', function() { }); + describe('#getByBtnRef', function() { + + beforeEach(function() { + this.btnRef = 'srctok-XXX'; + this.order = { 'button_order_id': 'srctok-XXX' }; + this.scope = nock('https://api.usebutton.com:443') + .get('/v1/order/btn-ref/' + this.btnRef) + .reply(200, { meta: { status: 'ok' }, 'objects': [this.order] }); + }); + + it('gets an order with a callback', function(done) { + this.callbackClient.getByBtnRef(this.btnRef, function(err, res) { + expect(err).to.be(null); + expect(res.data[0]).to.eql(this.order); + this.scope.done(); + done(); + }.bind(this)); + }); + + it('gets an order with a promise', function(done) { + this.promiseClient.getByBtnRef(this.btnRef).then(function(result) { + expect(result.data[0]).to.eql(this.order); + this.scope.done(); + done(); + }.bind(this)).catch(done); + }); + + }); + describe('#create', function() { beforeEach(function() {