diff --git a/mock/socket-io.js b/mock/socket-io.js index 6678675..11f30c0 100644 --- a/mock/socket-io.js +++ b/mock/socket-io.js @@ -7,10 +7,12 @@ function createMockSocketObject () { var socket = { on: function (ev, fn) { (this._listeners[ev] = this._listeners[ev] || []).push(fn); + return this; }, once: function (ev, fn) { (this._listeners[ev] = this._listeners[ev] || []).push(fn); fn._once = true; + return this; }, emit: function (ev, data) { if (this._listeners[ev]) { diff --git a/socket.js b/socket.js index 649c416..2c8da8a 100644 --- a/socket.js +++ b/socket.js @@ -33,11 +33,11 @@ angular.module('btford.socket-io', []). var defaultScope = options.scope || $rootScope; var addListener = function (eventName, callback) { - socket.on(eventName, callback.__ng = asyncAngularify(socket, callback)); + return socket.on(eventName, callback.__ng = asyncAngularify(socket, callback)); }; var addOnceListener = function (eventName, callback) { - socket.once(eventName, callback.__ng = asyncAngularify(socket, callback)); + return socket.once(eventName, callback.__ng = asyncAngularify(socket, callback)); }; var wrappedSocket = { diff --git a/socket.spec.js b/socket.spec.js index 5952d25..be845c0 100644 --- a/socket.spec.js +++ b/socket.spec.js @@ -44,6 +44,21 @@ describe('socketFactory', function () { expect(spy).toHaveBeenCalled(); }); + it('should add listeners in chain', function () { + var counter = 0, + func = function () { + counter += 1; + }; + + socket.on('event1', func) + .on('event2', func); + + mockIoSocket.emit('event1'); + mockIoSocket.emit('event2'); + $timeout.flush(); + + expect(counter).toBe(2); + }); });