[Groonga-commit] groonga/express-kotoumi [master] test: Test behavior of socket.io adaptor around multiple messages

Back to archive index

YUKI Hiroshi null+****@clear*****
Wed Feb 13 15:05:34 JST 2013


YUKI Hiroshi	2013-02-13 15:05:34 +0900 (Wed, 13 Feb 2013)

  New Revision: 0eca88d809d16fd8a7ca40cae27c0f92a5345b33
  https://github.com/groonga/express-kotoumi/commit/0eca88d809d16fd8a7ca40cae27c0f92a5345b33

  Log:
    test: Test behavior of socket.io adaptor around multiple messages

  Modified files:
    test/frontend-socket.io-adaptor.test.js

  Modified: test/frontend-socket.io-adaptor.test.js (+61 -24)
===================================================================
--- test/frontend-socket.io-adaptor.test.js    2013-02-13 13:10:41 +0900 (f2609e0)
+++ test/frontend-socket.io-adaptor.test.js    2013-02-13 15:05:34 +0900 (1ff2863)
@@ -16,6 +16,8 @@ suite('Socket.IO API', function() {
   var clientSocket;
 
   var testPlugin = {
+    'request-response': new model.SocketRequestResponse(),
+    'publish-subscribe': new model.SocketPublishSubscribe(),
     'foobar': new model.SocketPublishSubscribe(),
     'builder': new model.SocketPublishSubscribe({
       toBackend: function(event, data) { return [event, 'builder request']; },
@@ -24,8 +26,7 @@ suite('Socket.IO API', function() {
     'customevent': new model.SocketPublishSubscribe({
       toBackend: function(event, data) { return ['custom', data] },
       toClient: function(event, data) { return ['custom', 'custom response']; }
-    }),
-    'pubsub': new model.SocketPublishSubscribe()
+    })
   };
 
   teardown(function() {
@@ -93,6 +94,19 @@ suite('Socket.IO API', function() {
       });
   });
 
+  function createEnvelope(type, body) {
+    var now = new Date();
+    var envelope = {
+      id:         now.getTime(),
+      date:       now.toISOString(),
+      replyTo:    'localhost:' + utils.testReceivePort,
+      statusCode: 200,
+      type:       type,
+      body:       body
+    };
+    return envelope;
+  }
+
   test('initialization', function(done) {
     var mockedListener = nodemock
       .mock('connected');
@@ -106,7 +120,8 @@ suite('Socket.IO API', function() {
       .next(function(newServer) {
         server = newServer;
         socketIoAdaptor.register(application, server, {
-          connection: utils.createStubbedBackendConnection()
+          connection: utils.createStubbedBackendConnection(),
+          plugins: [testPlugin]
         });
 
         return utils.createClientSocket();
@@ -124,26 +139,39 @@ suite('Socket.IO API', function() {
       });
   });
 
-  test('front to back', function(done) {
-    connection = utils.createMockedBackendConnection(utils.socketIoDefaultCommandsModule);
+  test('one way, front to back', function(done) {
+    connection = utils.createMockedBackendConnection(testPlugin);
 
     var application = express();
     utils.setupServer(application)
       .next(function(newServer) {
         server = newServer;
         socketIoAdaptor.register(application, server, {
-          connection: connection
+          connection: connection,
+          plugins: [testPlugin]
         });
-
         return utils.createClientSocket();
       })
       .next(function(newClientSocket) {
         clientSocket = newClientSocket;
+        connection.assertThrows();
 
+        var messages = [
+          Math.random(),
+          Math.random(),
+          Math.random()
+        ];
         connection = connection
           .mock('emitMessage')
-            .takes('search', { requestMessage: true }, function() {}, {});
-        clientSocket.emit('search', { requestMessage: true });
+            .takes('publish-subscribe', messages[0], null, {})
+          .mock('emitMessage')
+            .takes('publish-subscribe', messages[1], null, {})
+          .mock('emitMessage')
+            .takes('publish-subscribe', messages[2], null, {});
+
+        clientSocket.emit('publish-subscribe', messages[0]);
+        clientSocket.emit('publish-subscribe', messages[1]);
+        clientSocket.emit('publish-subscribe', messages[2]);
       })
       .wait(0.01)
       .next(function() {
@@ -155,12 +183,21 @@ suite('Socket.IO API', function() {
       });
   });
 
-  test('back to front', function(done) {
+  test('one way, back to front', function(done) {
     connection = utils.createMockedBackendConnection(testPlugin);
 
+    var messages = [
+      Math.random(),
+      Math.random(),
+      Math.random()
+    ];
     var clientReceiver = nodemock
           .mock('receive')
-          .takes({ published: true });
+            .takes(messages[0])
+          .mock('receive')
+            .takes(messages[1])
+          .mock('receive')
+            .takes(messages[2]);
 
     var application = express();
     utils.setupServer(application)
@@ -170,24 +207,22 @@ suite('Socket.IO API', function() {
           connection: connection,
           plugins: [testPlugin]
         });
-
         return utils.createClientSocket();
       })
       .next(function(newClientSocket) {
         clientSocket = newClientSocket;
-
         connection.assertThrows();
 
-        clientSocket.on('pubsub', function(data) {
+        clientSocket.on('publish-subscribe', function(data) {
           clientReceiver.receive(data);
         });
 
-        var envelope = {
-          type:       'pubsub',
-          statusCode: 200,
-          body:       { published: true}
-        };
-        connection.controllers.pubsub.trigger(envelope);
+        connection.controllers['publish-subscribe']
+          .trigger(createEnvelope('publish-subscribe', messages[0]));
+        connection.controllers['publish-subscribe']
+          .trigger(createEnvelope('publish-subscribe', messages[1]));
+        connection.controllers['publish-subscribe']
+          .trigger(createEnvelope('publish-subscribe', messages[2]));
       })
       .wait(0.01)
       .next(function() {
@@ -216,11 +251,13 @@ suite('Socket.IO API', function() {
       })
       .next(function(newClientSocket) {
         clientSocket = newClientSocket;
+        connection.assertThrows();
 
+        var message = Math.random();
         connection = connection
           .mock('emitMessage')
-            .takes('foobar', { requestMessage: true }, null, {});
-        clientSocket.emit('foobar', { requestMessage: true });
+            .takes('foobar', message, null, {});
+        clientSocket.emit('foobar', message);
       })
       .wait(0.01)
       .next(function() {
@@ -248,11 +285,11 @@ suite('Socket.IO API', function() {
           connection: connection,
           plugins: [testPlugin]
         });
-
         return utils.createClientSocket();
       })
       .next(function(newClientSocket) {
         clientSocket = newClientSocket;
+        connection.assertThrows();
 
         connection = connection
           .mock('emitMessage')
@@ -297,11 +334,11 @@ suite('Socket.IO API', function() {
           connection: connection,
           plugins: [testPlugin]
         });
-
         return utils.createClientSocket();
       })
       .next(function(newClientSocket) {
         clientSocket = newClientSocket;
+        connection.assertThrows();
 
         connection = connection
           .mock('emitMessage')
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index