[Groonga-commit] groonga/express-kotoumi [master] Add test for default handlers

Zurück zum Archiv-Index

YUKI Hiroshi null+****@clear*****
Thu Jan 17 12:41:32 JST 2013


YUKI Hiroshi	2013-01-17 12:41:32 +0900 (Thu, 17 Jan 2013)

  New Revision: 130429035fa81b0fe1de152ab2e4dbdbc8fc68eb
  https://github.com/groonga/express-kotoumi/commit/130429035fa81b0fe1de152ab2e4dbdbc8fc68eb

  Log:
    Add test for default handlers

  Modified files:
    test/rest-api.test.js

  Modified: test/rest-api.test.js (+43 -28)
===================================================================
--- test/rest-api.test.js    2013-01-17 12:32:17 +0900 (b9e6684)
+++ test/rest-api.test.js    2013-01-17 12:41:32 +0900 (892fd2a)
@@ -8,31 +8,6 @@ var expressKotoumi = require('../lib/index');
 var Connection = require('../lib/backend-adaptor').Connection;
 
 suite('REST API', function() {
-  var connection;
-  var sender;
-  var receiver;
-  var server;
-
-  function commonSetup() {
-    connection = new Connection({
-      tag:        'test',
-      listenPort: utils.testServerPort,
-      sender:     sender = utils.createMockedSender(),
-      receiver:   receiver = utils.createMockedReceiver()
-    });
-    receiver.triggerConnect('test');
-  }
-
-  function commonTeardown() {
-    if (server) {
-      server.close();
-    }
-    connection = undefined;
-    sender = undefined;
-    receiver = undefined;
-    server = undefined;
-  }
-
   test('registeration for given handlers', function() {
     var mockedHandlers = nodemock.mock('search')
           .takes('fake connection')
@@ -47,9 +22,6 @@ suite('REST API', function() {
   });
 
   suite('registeration', function() {
-    setup(commonSetup);
-    teardown(commonTeardown);
-
     function createHandlerFactory(type) {
       return function() {
         return function(request, response) {
@@ -62,6 +34,14 @@ suite('REST API', function() {
       search: createHandlerFactory('search')
     };
 
+    var server;
+    teardown(function() {
+      if (server) {
+        server.close();
+      }
+      server = undefined;
+    });
+
     test('to the document root', function(done) {
       var application = express();
       application.kotoumi({
@@ -102,5 +82,40 @@ suite('REST API', function() {
         });
     });
   });
+
+  test('creation of REST handler', function() {
+    var requestBuilders = nodemock
+          .mock('search')
+            .takes({ request: true })
+            .returns({ requestMessage: true });
+    var responseBuilders = nodemock
+          .mock('search')
+            .takes({ responseMessage: true })
+            .returns({ response: true });
+
+    var onReceive = {};
+    var connection = nodemock
+          .mock('emitMessage')
+            .takes('search', { requestMessage: true }, function() {})
+            .ctrl(2, onReceive);
+    var handler = expressKotoumi
+          .createRESTHandler(type,
+                             requestBuilders,
+                             responseBuilders,
+                             connection);
+
+    var fakeRequest = { request: true };
+    var fakeResponse = nodemock
+          .mock('contentType')
+            .takes('application/json')
+          .mock('send')
+            .takes({ response: true }, 200);
+
+    handler(fakeRequest, fakeResponse);
+    connection.assertThrows();
+
+    onReceive.trigger({ responseMessage: true });
+    fakeResponse.assertThrows();
+  });
 });
 
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Zurück zum Archiv-Index