From 89e77ee96436a2ef2ec22497056485a93235e375 Mon Sep 17 00:00:00 2001 From: David Luecke Date: Sun, 10 Aug 2014 12:35:49 -0600 Subject: [PATCH] Allow not passing parameters in socket calls (#88). --- lib/providers/socket/commons.js | 5 +++++ test/providers/primus.test.js | 17 +++++++++++++++++ test/providers/socketio.test.js | 17 +++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/lib/providers/socket/commons.js b/lib/providers/socket/commons.js index f7011be517..9a967305dc 100644 --- a/lib/providers/socket/commons.js +++ b/lib/providers/socket/commons.js @@ -18,6 +18,11 @@ exports.setupMethodHandler = function setupMethodHandler (emitter, params, servi if (typeof service[method] === 'function') { emitter.on(name, function () { var args = _.toArray(arguments); + // If the service is called with no parameter object + // insert an empty object + if(typeof args[position] === 'function') { + args.splice(position, 0, {}); + } args[position] = _.extend({ query: args[position] }, params); service[method].apply(service, args); }); diff --git a/test/providers/primus.test.js b/test/providers/primus.test.js index 10b76d2366..b9d2a3991f 100644 --- a/test/providers/primus.test.js +++ b/test/providers/primus.test.js @@ -73,6 +73,23 @@ describe('Primus provider', function () { }); }); + it('missing parameters in socket call works (#88)', function(done) { + var service = app.lookup('todo'); + var old = { + find: service.find + }; + + service.find = function(params) { + assert.deepEqual(_.omit(params, 'query'), socketParams, 'Handshake parameters passed on proper position'); + old.find.apply(this, arguments); + }; + + socket.send('todo::find', function () { + _.extend(service, old); + done(); + }); + }); + describe('CRUD', function () { it('::find', function (done) { socket.send('todo::find', {}, function (error, data) { diff --git a/test/providers/socketio.test.js b/test/providers/socketio.test.js index ac76cc21b1..f897ee51a6 100644 --- a/test/providers/socketio.test.js +++ b/test/providers/socketio.test.js @@ -79,6 +79,23 @@ describe('SocketIO provider', function () { }); }); + it('missing parameters in socket call works (#88)', function(done) { + var service = app.lookup('todo'); + var old = { + find: service.find + }; + + service.find = function(params) { + assert.deepEqual(_.omit(params, 'query'), socketParams, 'Handshake parameters passed on proper position'); + old.find.apply(this, arguments); + }; + + socket.emit('todo::find', function () { + _.extend(service, old); + done(); + }); + }); + describe('CRUD', function () { it('::find', function (done) { socket.emit('todo::find', {}, function (error, data) {