[Groonga-commit] groonga/express-kotoumi [master] Add test for sending message with one response

アーカイブの一覧に戻る

YUKI Hiroshi null+****@clear*****
Thu Jan 10 18:51:29 JST 2013


YUKI Hiroshi	2013-01-10 18:51:29 +0900 (Thu, 10 Jan 2013)

  New Revision: 2be0754d70d161e99a8f0e28d44a1d25a820eab0
  https://github.com/groonga/express-kotoumi/commit/2be0754d70d161e99a8f0e28d44a1d25a820eab0

  Log:
    Add test for sending message with one response

  Modified files:
    test/backend-adaptor.test.js

  Modified: test/backend-adaptor.test.js (+44 -8)
===================================================================
--- test/backend-adaptor.test.js    2013-01-10 18:41:15 +0900 (afc030d)
+++ test/backend-adaptor.test.js    2013-01-10 18:51:29 +0900 (67226d9)
@@ -3,7 +3,7 @@ var nodemock = require('nodemock');
 
 var Connection = require('../lib/backend-adaptor').Connection;
 
-function createSender() {
+function createMockedSender() {
   var sender = {
     emit: function(eventName, message) {
       this.messages.push({ eventName: eventName, message: message });
@@ -18,7 +18,7 @@ function createSender() {
   return sender;
 }
 
-function createReceiver() {
+function createMockedReceiver() {
   var mockedSockets;
   var mockedReceiverInternal = nodemock;
   var connactionCallbackController = {};
@@ -32,15 +32,15 @@ function createReceiver() {
 
     // extra features as a mocked object
     triggerConnect: function(tag) {
-      mockedSockets.assert();
+      mockedSockets.assertThrows();
       var mockedSocket = nodemock.mock('on')
                            .takes(tag + '.message', function() {});
       connactionCallbackController.trigger(mockedSocket);
-      mockedSocket.assert();
+      mockedSocket.assertThrows();
     },
     takes: function(message) {
       this.assert = function() {
-        mockedReceiverInternal.assert();
+        mockedReceiverInternal.assertThrows();
       };
       mockedReceiverInternal = mockedReceiverInternal
                                  .mock('emit')
@@ -51,6 +51,23 @@ function createReceiver() {
   return receiver;
 }
 
+function createMockedMessageCallback() {
+  var mockedCallback = nodemock;
+  var callback = function(message) {
+    mockedCallback.receive(message);
+  };
+  callback.takes = function(message) {
+    callback.assert = function() {
+      mockedCallback.assertThrows();
+    };
+    mockedCallback = mockedCallback
+                       .mock('receive')
+                       .takes(message);
+  };
+  callback.mock = mockedCallback;
+  return callback;
+}
+
 function TypeOf(typeString) {
   if (!(this instanceof TypeOf))
     return new TypeOf(typeString);
@@ -101,8 +118,8 @@ suite('Connection', function() {
     connection = new Connection({
       tag:        'test',
       listenPort: 3333,
-      sender:     sender = createSender(),
-      receiver:   receiver = createReceiver()
+      sender:     sender = createMockedSender(),
+      receiver:   receiver = createMockedReceiver()
     });
     receiver.triggerConnect('test');
   });
@@ -113,7 +130,7 @@ suite('Connection', function() {
     receiver = undefined;
   });
 
-  test('message without response (volatile message)', function() {
+  test('sending message without response (volatile message)', function() {
     var message = connection.emitMessage({ command: 'foobar' });
     assertEnvelopeEqual(message,
                         { id:         TypeOf('string'),
@@ -122,5 +139,24 @@ suite('Connection', function() {
                           body:       { command: 'foobar' } });
     sender.assertSent('message', message);
   });
+
+  test('sending message with one response', function() {
+    var callback = createMockedMessageCallback();
+    var message = connection.emitMessage({ command: 'foobar' }, callback);
+    assertEnvelopeEqual(message,
+                        { id:         TypeOf('string'),
+                          date:       InstanceOf(Date),
+                          statusCode: 200,
+                          body:       { command: 'foobar' } });
+    sender.assertSent('message', message);
+
+    callback.takes({ response: true });
+    connection.emit('replyTo:' + message.id, { response: true });
+    callback.assert();
+
+    // Secondary and later messages are ignored.
+    connection.emit('replyTo:' + message.id, { response: true });
+    callback.assert();
+  });
 });
 
-------------- next part --------------
HTML����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る