[Groonga-commit] groonga/express-kotoumi [master] test: Update tests for REST adaptor based on new plugin system

Back to archive index

YUKI Hiroshi null+****@clear*****
Tue Feb 5 19:12:39 JST 2013


YUKI Hiroshi	2013-02-05 19:12:39 +0900 (Tue, 05 Feb 2013)

  New Revision: 9be9dd5241027f0f43e2bbfea1341f51fcf21ef5
  https://github.com/groonga/express-kotoumi/commit/9be9dd5241027f0f43e2bbfea1341f51fcf21ef5

  Log:
    test: Update tests for REST adaptor based on new plugin system

  Modified files:
    test/express-adaptor.test.js
    test/frontend-rest-adaptor.test.js

  Modified: test/express-adaptor.test.js (+72 -29)
===================================================================
--- test/express-adaptor.test.js    2013-02-05 19:04:07 +0900 (2dc9f08)
+++ test/express-adaptor.test.js    2013-02-05 19:12:39 +0900 (c635ebe)
@@ -9,22 +9,38 @@ var adaptor = require('../index');
 var Connection = require('../lib/backend/connection').Connection;
 
 suite('Adaption for express application', function() {
-  suite('REST API', function() {
-    function createHandlerFactory(type) {
-      return function() {
-        return function(request, response) {
-          response.contentType('text/plain');
-          response.send(type + ' OK', 200);
-        };
+  suite('REST API registeration', function() {
+    function defineCommand(command, path) {
+      return {
+        method: 'GET',
+        path: path,
+        requestBuilder: function() { return command + ' requested'; },
+        responseBuilder: function() { return command + ' OK'; }
       };
     }
-    var handlersFactory = {
-      search: createHandlerFactory('search')
+    var testPlugin = {
+      api: defineCommand('api', '/path/to/api')
     };
 
+    var connection;
+    var application;
     var server;
 
+    setup(function(done) {
+      connection = utils.createMockedBackendConnection();
+      application = express();
+      utils.setupServer(application)
+        .next(function(newServer) {
+          server = newServer;
+          done();
+        });
+    });
+
     teardown(function() {
+      if (connection) {
+        utils.readyToDestroyMockedConnection(connection);
+        connection = undefined;
+      }
       if (server) {
         server.close();
         server = undefined;
@@ -32,21 +48,34 @@ suite('Adaption for express application', function() {
     });
 
     test('to the document root', function(done) {
-      var fakeConnection = utils.createStubbedBackendConnection();
-      var application = express();
+      var onReceive = {};
+      connection
+        .mock('emitMessage')
+          .takes('api', 'api requested', function() {}, { 'timeout': null })
+          .ctrl(2, onReceive);
+
       application.kotoumi({
         prefix:     '',
-        connection: fakeConnection,
-        handlers:   handlersFactory
+        connection: connection,
+        plugins:    [testPlugin]
       });
 
-      utils.setupServer(application)
-        .next(function(newServer) {
-          server = newServer;
+      var responseBody;
+      Deferred
+        .wait(0.01)
+        .next(function() {
+          utils.get('/path/to/api')
+            .next(function(response) {
+              responseBody = response.body;
+            });
+        })
+        .wait(0.01)
+        .next(function() {
+          onReceive.trigger(null, { body: 'API OK?' });
         })
-        .get('/tables/foobar')
-        .next(function(response) {
-          assert.equal(response.body, 'search OK');
+        .wait(0.01)
+        .next(function() {
+          assert.equal(responseBody, 'api OK');
           done();
         })
         .error(function(error) {
@@ -55,20 +84,34 @@ suite('Adaption for express application', function() {
     });
 
     test('under specified path', function(done) {
-      var fakeConnection = utils.createStubbedBackendConnection();
-      var application = express();
+      var onReceive = {};
+      connection
+        .mock('emitMessage')
+          .takes('api', 'api requested', function() {}, { 'timeout': null })
+          .ctrl(2, onReceive);
+
       application.kotoumi({
         prefix:     '/path/to/kotoumi',
-        connection: fakeConnection,
-        handlers:   handlersFactory
+        connection: connection,
+        plugins:    [testPlugin]
       });
-      utils.setupServer(application)
-        .next(function(newServer) {
-          server = newServer;
+
+      var responseBody;
+      Deferred
+        .wait(0.01)
+        .next(function() {
+          utils.get('/path/to/kotoumi/path/to/api')
+            .next(function(response) {
+              responseBody = response.body;
+            });
         })
-        .get('/path/to/kotoumi/tables/foobar')
-        .next(function(response) {
-          assert.equal(response.body, 'search OK');
+        .wait(0.01)
+        .next(function() {
+          onReceive.trigger(null, { body: 'API OK?' });
+        })
+        .wait(0.01)
+        .next(function() {
+          assert.equal(responseBody, 'api OK');
           done();
         })
         .error(function(error) {

  Modified: test/frontend-rest-adaptor.test.js (+2 -35)
===================================================================
--- test/frontend-rest-adaptor.test.js    2013-02-05 19:04:07 +0900 (f58d656)
+++ test/frontend-rest-adaptor.test.js    2013-02-05 19:12:39 +0900 (9b2617b)
@@ -186,47 +186,14 @@ suite('REST API', function() {
     });
   });
 
-  test('creation of REST handler', function() {
-    var requestBuilders = nodemock
-          .mock('search')
-            .takes({ request: true })
-            .returns({ requestMessage: true });
-
-    var onReceive = {};
-    var connection = nodemock
-          .mock('emitMessage')
-            .takes('search', { requestMessage: true }, function() {}, {})
-            .ctrl(2, onReceive);
-    var handler = restAdaptor
-          .createHandler({
-            command:        'search',
-            requestBuilder: requestBuilders.search,
-            connection:     connection
-          });
-
-    var fakeRequest = { request: true };
-    var fakeResponse = nodemock
-          .mock('contentType')
-            .takes('application/json')
-          .mock('send')
-            .takes({ response: true }, 200);
-
-    handler(fakeRequest, fakeResponse);
-    requestBuilders.assertThrows();
-    connection.assertThrows();
-
-    onReceive.trigger(null, { body: { response: true } });
-    fakeResponse.assertThrows();
-  });
-
-  suite('default handlers', function() {
+  suite('default commands', function() {
     var server;
 
     teardown(function() {
       if (server) {
         server.close();
+        server = undefined;
       }
-      server = undefined;
     });
 
     test('search', function(done) {
-------------- next part --------------
HTML����������������������������...
Download 



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