YUKI Hiroshi
null+****@clear*****
Wed Feb 13 15:44:57 JST 2013
YUKI Hiroshi 2013-02-13 15:44:57 +0900 (Wed, 13 Feb 2013) New Revision: c5b2984535a10a6110e09c3da27cc109b369d294 https://github.com/groonga/express-kotoumi/commit/c5b2984535a10a6110e09c3da27cc109b369d294 Log: test: Add test for Socket.IO API and multiple request-response messages Modified files: test/frontend-socket.io-adaptor.test.js Modified: test/frontend-socket.io-adaptor.test.js (+73 -2) =================================================================== --- test/frontend-socket.io-adaptor.test.js 2013-02-13 15:05:34 +0900 (1ff2863) +++ test/frontend-socket.io-adaptor.test.js 2013-02-13 15:44:57 +0900 (1f0b8c0) @@ -139,7 +139,7 @@ suite('Socket.IO API', function() { }); }); - test('one way, front to back', function(done) { + test('one way: single client, front to back', function(done) { connection = utils.createMockedBackendConnection(testPlugin); var application = express(); @@ -183,7 +183,7 @@ suite('Socket.IO API', function() { }); }); - test('one way, back to front', function(done) { + test('one way: single client, back to front', function(done) { connection = utils.createMockedBackendConnection(testPlugin); var messages = [ @@ -234,6 +234,77 @@ suite('Socket.IO API', function() { }); }); + test('request-response style message: single client', function(done) { + connection = utils.createMockedBackendConnection(testPlugin); + var onReceived = [{}, {}, {}]; + var messages = [ + Math.random(), + Math.random(), + Math.random() + ]; + var clientReceiver; + + var application = express(); + utils.setupServer(application) + .next(function(newServer) { + server = newServer; + socketIoAdaptor.register(application, server, { + connection: connection, + plugins: [testPlugin] + }); + return utils.createClientSocket(); + }) + .next(function(newClientSocket) { + clientSocket = newClientSocket; + connection.assertThrows(); + + connection = connection + .mock('emitMessage') + .takes('request-response', messages[0], function() {}, {}) + .ctrl(2, onReceived[0]) + .mock('emitMessage') + .takes('request-response', messages[1], function() {}, {}) + .ctrl(2, onReceived[1]) + .mock('emitMessage') + .takes('request-response', messages[2], function() {}, {}) + .ctrl(2, onReceived[2]); + + clientSocket.emit('request-response', messages[0]); + clientSocket.emit('request-response', messages[1]); + clientSocket.emit('request-response', messages[2]); + }) + .wait(0.01) + .next(function() { + connection.assertThrows(); + + clientReceiver = nodemock + .mock('receive') + .takes(messages[0]) + .mock('receive') + .takes(messages[1]) + .mock('receive') + .takes(messages[2]); + clientSocket.on('request-response', function(data) { + clientReceiver.receive(data); + }); + + onReceived[0].trigger(null, + createEnvelope('request-response', messages[0])); + onReceived[1].trigger(null, + createEnvelope('request-response', messages[1])); + onReceived[2].trigger(null, + createEnvelope('request-response', messages[2])); + }) + .wait(0.01) + .next(function() { + clientReceiver.assertThrows(); + done(); + }) + .error(function(error) { + done(error); + }); + }); + test('front to back, extra command (without builder)', function(done) { var extraController = {}; connection = utils.createMockedBackendConnection(testPlugin); -------------- next part -------------- HTML����������������������������...ダウンロード