[Groonga-commit] groonga/express-kotoumi [master] Split express adaptor and rest adaptor

Back to archive index

YUKI Hiroshi null+****@clear*****
Mon Jan 21 12:55:28 JST 2013


YUKI Hiroshi	2013-01-21 12:55:28 +0900 (Mon, 21 Jan 2013)

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

  Log:
    Split express adaptor and rest adaptor

  Added files:
    test/express-adaptor.js
  Modified files:
    index.js
    lib/rest-adaptor.js
    test/rest-api.test.js

  Modified: index.js (+13 -1)
===================================================================
--- index.js    2013-01-21 12:45:33 +0900 (d89d5ca)
+++ index.js    2013-01-21 12:55:28 +0900 (33ef200)
@@ -1 +1,13 @@
-var expressAdaptor = require('./lib/express-adaptor');
+var express = require('express');
+var restAdaptor = require('./lib/rest-adaptor');
+
+express.application.kotoumi = function(params) {
+  params = params || {};
+
+  params.connection = params.connection || new Connection(params);
+
+  params.prefix = params.prefix || '';
+  params.prefix = params.prefix.replace(/\/$/, '');
+
+  restAdaptor.registerHandlers(this, params);
+}

  Modified: lib/rest-adaptor.js (+2 -2)
===================================================================
--- lib/rest-adaptor.js    2013-01-21 12:45:33 +0900 (aa321ef)
+++ lib/rest-adaptor.js    2013-01-21 12:55:28 +0900 (8508356)
@@ -25,7 +25,7 @@ function createRESTHandler(type,
 }
 exports.createRESTHandler = createRESTHandler;
 
-express.application.kotoumi = function(params) {
+exports.registerHandlers = function(application, params) {
   params = params || {};
   var connection = params.connection || new Connection(params);
 
@@ -41,7 +41,7 @@ express.application.kotoumi = function(params) {
 
 //  this.get(prefix + '/status/:target', createHandler('status'));
 
-  this.get(prefix + '/tables/:tableName', createHandler('search'));
+  application.get(prefix + '/tables/:tableName', createHandler('search'));
 
 //  this.put(prefix + '/tables/:tableName', createHandler('createTable'));
 //  this.del(prefix + '/tables/:tableName', createHandler('removeTable'));

  Added: test/express-adaptor.js (+73 -0) 100644
===================================================================
--- /dev/null
+++ test/express-adaptor.js    2013-01-21 12:55:28 +0900 (a681a5c)
@@ -0,0 +1,73 @@
+var assert = require('chai').assert;
+var nodemock = require('nodemock');
+
+var utils = require('./test-utils');
+
+var express = require('express');
+var adaptor = require('../index');
+var Connection = require('../lib/backend-adaptor').Connection;
+
+suite('Adaption for express application', function() {
+  suite('registeration', function() {
+    function createHandlerFactory(type) {
+      return function() {
+        return function(request, response) {
+          response.contentType('text/plain');
+          response.send(type + ' OK', 200);
+        };
+      };
+    }
+    var handlersFactory = {
+      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({
+        prefix:     '',
+        connection: 'fake connection',
+        handlers:   handlersFactory
+      });
+      server = utils.setupServer(application);
+
+      utils
+        .get('/tables/foobar')
+        .next(function(response) {
+          assert.equal('search OK', response.body);
+          done();
+        })
+        .error(function(error) {
+          done(error);
+        });
+    });
+
+    test('under specified path', function(done) {
+      var application = express();
+      application.kotoumi({
+        prefix:     '/path/to/kotoumi',
+        connection: 'fake connection',
+        handlers:   handlersFactory
+      });
+      server = utils.setupServer(application);
+
+      utils
+        .get('/path/to/kotoumi/tables/foobar')
+        .next(function(response) {
+          assert.equal('search OK', response.body);
+          done();
+        })
+        .error(function(error) {
+          done(error);
+        });
+    });
+  });
+});
+

  Modified: test/rest-api.test.js (+6 -6)
===================================================================
--- test/rest-api.test.js    2013-01-21 12:45:33 +0900 (713b149)
+++ test/rest-api.test.js    2013-01-21 12:55:28 +0900 (c06deee)
@@ -4,7 +4,7 @@ var nodemock = require('nodemock');
 var utils = require('./test-utils');
 
 var express = require('express');
-var expressKotoumi = require('../lib/rest-adaptor');
+var restAdaptor = require('../lib/rest-adaptor');
 var Connection = require('../lib/backend-adaptor').Connection;
 
 suite('REST API', function() {
@@ -13,7 +13,7 @@ suite('REST API', function() {
           .takes('fake connection')
           .returns(function() {});
     var application = express();
-    application.kotoumi({
+    restAdaptor.registerHandlers(application, {
       prefix:     '',
       connection: 'fake connection',
       handlers:   mockedHandlers
@@ -44,7 +44,7 @@ suite('REST API', function() {
 
     test('to the document root', function(done) {
       var application = express();
-      application.kotoumi({
+      restAdaptor.registerHandlers(application, {
         prefix:     '',
         connection: 'fake connection',
         handlers:   handlersFactory
@@ -64,7 +64,7 @@ suite('REST API', function() {
 
     test('under specified path', function(done) {
       var application = express();
-      application.kotoumi({
+      restAdaptor.registerHandlers(application, {
         prefix:     '/path/to/kotoumi',
         connection: 'fake connection',
         handlers:   handlersFactory
@@ -98,7 +98,7 @@ suite('REST API', function() {
           .mock('emitMessage')
             .takes('search', { requestMessage: true }, function() {})
             .ctrl(2, onReceive);
-    var handler = expressKotoumi
+    var handler = restAdaptor
           .createRESTHandler('search',
                              requestBuilders,
                              responseBuilders,
@@ -141,7 +141,7 @@ suite('REST API', function() {
             emitMessageCalledArguments: []
           };
       var application = express();
-      application.kotoumi({
+      restAdaptor.registerHandlers(application, {
         prefix:     '',
         connection: connection
       });
-------------- next part --------------
HTML����������������������������...
下载 



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