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