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����������������������������...下载