UNPKG

queen-remote

Version:

Rule browsers remotely, remotely

144 lines (126 loc) 4.23 kB
var sinon = require('sinon'), mocks = require('mocks'), path = require('path'), mock = require('../mocks.js'), testedModule = mocks.loadFile(path.resolve(path.dirname(module.filename), '../../lib/server/clientQueen.js')); var ClientQueen = testedModule.ClientQueen; var create = testedModule.create; var MESSAGE_TYPE = testedModule.MESSAGE_TYPE; exports.clientQueen = { setUp: function(callback){ this.TEST_STRING = "Hello, world!"; this.TEST_OBJECT = {message: this.TEST_STRING}; this.socket = mock.socket(); this.queen = mock.queen(); this.clientQueen = new ClientQueen(this.socket, this.queen); callback(); }, create: function(test){ var clientQueen; test.throws(function(){clientQueen = create()}, "Able to construct with missing required params"); clientQueen = create(this.socket, this.queen); test.ok(clientQueen !== void 0, "Unable to construct with valid params"); test.done(); }, construct: function(test){ var clientQueen; test.throws(function(){clientQueen = new Queen()}, "Able to construct with missing required params"); clientQueen = new ClientQueen(this.socket, this.queen); test.ok(clientQueen instanceof ClientQueen, "Unable to construct with valid params"); test.done(); }, readySignal: function(test){ this.socket.write.calledWith([MESSAGE_TYPE['ready']]); test.done(); }, sendToSocket: function(test){ this.clientQueen.sendToSocket(this.TEST_OBJECT); test.ok(this.socket.write.calledWith(this.TEST_OBJECT)); test.done(); }, workforceMessageMessageHandler: function(test){ var spy = sinon.spy(this.clientQueen, "workforceMessage"); this.socket.emitter.emit('data', [ MESSAGE_TYPE['workforce message'], 1, 1 ]); test.strictEqual(spy.callCount, 1); test.done(); }, createWorkforceMessageHandler: function(test){ var spy = sinon.spy(this.clientQueen, "createWorkforce"); this.socket.emitter.emit('data', [ MESSAGE_TYPE['create workforce'], 1, {} ]); test.strictEqual(spy.callCount, 1); test.done(); }, trackWorkerProviderMessageHandler: function(test){ this.clientQueen.trackWorkerProviders = false; this.socket.emitter.emit('data', [ MESSAGE_TYPE['track worker provider'], true ]); test.strictEqual(this.clientQueen.trackWorkerProviders, true); test.done(); }, createWorkforce: function(test){ test.strictEqual(this.clientQueen.workforces["1"], void 0); this.clientQueen.createWorkforce(1, {}); test.notStrictEqual(this.clientQueen.workforces["1"], void 0); test.done(); }, workforceMessage: function(test){ this.clientQueen.createWorkforce(1, {}); var spy = sinon.spy(this.clientQueen.workforces, "1"); this.clientQueen.workforceMessage(1, this.TEST_OBJECT); test.ok(spy.calledWith(this.TEST_OBJECT)); test.done(); }, workforceDeath: function(test){ this.clientQueen.createWorkforce(1, {}); this.clientQueen.workforces["1"].kill(); test.ok(this.clientQueen.workforces["1"] === void 0); test.done(); }, workerProviderHandler: function(test){ var mockWP = mock.workerProvider(); this.clientQueen.workerProviderHandler(mockWP); test.ok(this.socket.write.calledWith([ MESSAGE_TYPE['create worker provider'], mockWP.id, mockWP.attributes ])); test.done(); }, workerProviderDeath: function(test){ var mockWP = mock.workerProvider(); this.clientQueen.workerProviderHandler(mockWP); mockWP.kill(); test.ok(this.clientQueen.workerProviders[mockWP.id] === void 0); test.done(); }, kill: function(test){ this.clientQueen.kill(); test.ok(this.queen.removeListener.calledWith('workerProvider')); test.done(); }, socketClose: function(test){ this.socket.emitter.emit('close'); test.ok(this.queen.removeListener.calledWith('workerProvider')); test.done(); }, socketEnd: function(test){ this.socket.emitter.emit('end'); test.ok(this.queen.removeListener.calledWith('workerProvider')); test.done(); }, socketError: function(test){ this.socket.emitter.emit('error'); test.ok(this.queen.removeListener.calledWith('workerProvider')); test.done(); } }