YUKI Hiroshi
null+****@clear*****
Thu Feb 14 11:26:51 JST 2013
YUKI Hiroshi 2013-02-14 11:26:51 +0900 (Thu, 14 Feb 2013) New Revision: eadb61fc9056e25383650baee95e48ec90ce961e https://github.com/groonga/express-kotoumi/commit/eadb61fc9056e25383650baee95e48ec90ce961e Log: test: Define some helpers as test-utils Modified files: test/frontend-socket.io-adaptor.test.js test/test-utils.js Modified: test/frontend-socket.io-adaptor.test.js (+49 -71) =================================================================== --- test/frontend-socket.io-adaptor.test.js 2013-02-13 21:00:01 +0900 (386568f) +++ test/frontend-socket.io-adaptor.test.js 2013-02-14 11:26:51 +0900 (7126229) @@ -42,74 +42,16 @@ suite('Socket.IO API', function() { }); teardown(function() { - if (backend) { - backend.close(); - backend = undefined; - } - if (connection) { - if (typeof connection.close == 'function') { // real connection - connection.close(); - } else { // mocked connection - utils.readyToDestroyMockedConnection(connection, clientSockets.length); - } - connection = undefined; - } if (clientSockets.length) { clientSockets.forEach(function(clientSocket) { clientSocket.disconnect(); }); } - if (server) { - server.close(); - server = undefined; - } + utils.teardownApplication({ backend: backend, + server: server, + conncetion: connection }); }); - function setupApplication() { - var application = express(); - return utils - .setupServer(application) - .next(function(newServer) { - server = newServer; - }) - .createBackend() - .next(function(newBackend) { - backend = newBackend; - connection = new Connection({ - tag: 'test', - hostName: 'localhost', - port: utils.testSendPort, - receivePort: utils.testReceivePort, - maxRetyrCount: 3, - retryDelay: 1 - }); - socketIoAdaptor.register(application, server, { - tag: 'test', - connection: connection, - plugins: [testPlugin] - }); - return application; - }); - } - - function getBackendReceivedMessages() { - return backend.received.map(function(packet) { - return packet[2]; - }); - } - - function getBackendReceivedEvents() { - return getBackendReceivedMessages().map(function(message) { - return message.type; - }); - } - - function getBackendReceivedBodies() { - return getBackendReceivedMessages().map(function(message) { - return message.body; - }); - } - test('registeration of plugin commands', function(done) { var basePlugin = { getCommand: new model.SocketRequestResponse(), @@ -196,7 +138,16 @@ suite('Socket.IO API', function() { function testReqRep(description, params) { test(description, function(done) { var mockedReceiver; - setupApplication() + utils.setupApplication() + .next(function(result) { + server = result.server; + connection = result.connection; + socketIoAdaptor.register(result.application, server, { + tag: 'test', + connection: connection, + plugins: [testPlugin] + }); + }) .createClientSocket() .next(function(newClientSocket) { clientSockets.push(newClientSocket); @@ -204,7 +155,7 @@ suite('Socket.IO API', function() { }) .wait(0.01) .next(function() { - assert.deepEqual(getBackendReceivedMessages().map(function(message) { + assert.deepEqual(backend.getMessages().map(function(message) { return { type: message.type, body: message.body }; }), @@ -218,7 +169,7 @@ suite('Socket.IO API', function() { mockedReceiver.receive(data); }); - var request = getBackendReceivedMessages()[0]; + var request = backend.getMessages()[0]; var response = utils.createReplyEnvelope(request, params.backendCommand, params.backendBody); @@ -279,7 +230,16 @@ suite('Socket.IO API', function() { '2-b' ]; var clientReceiver; - setupApplication() + utils.setupApplication() + .next(function(result) { + server = result.server; + connection = result.connection; + socketIoAdaptor.register(result.application, server, { + tag: 'test', + connection: connection, + plugins: [testPlugin] + }); + }) .createClientSockets(3) .next(function(newClientSockets) { clientSockets = clientSockets.concat(newClientSockets); @@ -295,9 +255,9 @@ suite('Socket.IO API', function() { }).wait(0.01).next(function() { clientSockets[2].emit('reqrep', messages[5]); }).wait(0.01).next(function() { - assert.deepEqual(getBackendReceivedBodies(), messages); + assert.deepEqual(backend.getBodies(), messages); - var responses = getBackendReceivedMessages().map(function(envelope) { + var responses = backend.getMessages().map(function(envelope) { return utils.createReplyEnvelope(envelope, 'reqrep', envelope.body); }); @@ -346,7 +306,16 @@ suite('Socket.IO API', function() { function testPubSub(description, params) { test(description, function(done) { var mockedReceiver; - setupApplication() + utils.setupApplication() + .next(function(result) { + server = result.server; + connection = result.connection; + socketIoAdaptor.register(result.application, server, { + tag: 'test', + connection: connection, + plugins: [testPlugin] + }); + }) .createClientSocket() .next(function(newClientSocket) { clientSockets.push(newClientSocket); @@ -354,7 +323,7 @@ suite('Socket.IO API', function() { }) .wait(0.01) .next(function() { - assert.deepEqual(getBackendReceivedMessages().map(function(message) { + assert.deepEqual(backend.getMessages().map(function(message) { return { type: message.type, body: message.body }; }), @@ -423,7 +392,16 @@ suite('Socket.IO API', function() { 'b' ]; var clientReceiver; - setupApplication() + utils.setupApplication() + .next(function(result) { + server = result.server; + connection = result.connection; + socketIoAdaptor.register(result.application, server, { + tag: 'test', + connection: connection, + plugins: [testPlugin] + }); + }) .createClientSockets(3) .next(function(newClientSockets) { clientSockets = clientSockets.concat(newClientSockets); @@ -433,7 +411,7 @@ suite('Socket.IO API', function() { }).wait(0.01).next(function() { clientSockets[2].emit('pubsub.subscribe', 2); }).wait(0.01).next(function() { - assert.deepEqual(getBackendReceivedBodies(), + assert.deepEqual(backend.getBodies(), [0, 1, 2]); var publisheds = messages.map(function(message) { Modified: test/test-utils.js (+72 -1) =================================================================== --- test/test-utils.js 2013-02-13 21:00:01 +0900 (849eca6) +++ test/test-utils.js 2013-02-14 11:26:51 +0900 (044144b) @@ -199,7 +199,16 @@ exports.createMockedBackendConnection = createMockedBackendConnection; function createStubbedBackendConnection() { return { - emitMessage: function() {}, + emitMessage: function(type, message, callback, options) { + this.emitMessageCalledArguments.push({ + type: type, + message: message, + callback: callback, + options: options + }); + }, + emitMessageCalledArguments: [], + emit: function() {}, on: function() {}, removeListener: function() {}, @@ -209,6 +218,53 @@ function createStubbedBackendConnection() { } exports.createStubbedBackendConnection = createStubbedBackendConnection; +function setupApplication() { + var application = express(); + var server; + var backend; + return setupServer(application) + .next(function(newServer) { + server = newServer; + }) + .createBackend() + .next(function(newBackend) { + backend = newBackend; + connection = new Connection({ + tag: 'test', + hostName: 'localhost', + port: testSendPort, + receivePort: testReceivePort, + maxRetyrCount: 3, + retryDelay: 1 + }); + return { + backend: backend, + server: server, + application: application + }; + }); +} +exports.setupApplication = setupApplication; +Deferred.register('setupApplication', setupApplication); + +function teardownApplication(params) { + params = params || {}; + if (params.backend) { + params.backend.close(); + params.backend = undefined; + } + if (params.connection) { + params.connection.close(); + params.connection = undefined; + } + if (params.server) { + params.server.close(); + params.server = undefined; + } +} +exports.teardownApplication = teardownApplication; +Deferred.register('teardownApplication', teardownApplication); + function readyToDestroyMockedConnection(connection, clientCount) { connection = connection .mock('removeListener') @@ -229,6 +285,21 @@ function createBackend() { backend.listen(function() { return deferred.call(backend); }); + backend.getMessages = function() { + return this.received.map(function(packet) { + return packet[2]; + }); + }; + backend.getEvents = function() { + return this.getMessages().map(function(envelope) { + return envelope.type; + }); + }; + backend.getBodies = function() { + return this.getMessages().map(function(envelope) { + return envelope.body; + }); + }; return deferred; } exports.createBackend = createBackend; -------------- next part -------------- HTML����������������������������...ダウンロード