Navigation Menu

Skip to content

Commit

Permalink
test: support /d/load with GET
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Apr 30, 2014
1 parent dbe7058 commit aa0c336
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 2 deletions.
13 changes: 11 additions & 2 deletions lib/adapter/api/groonga/index.js
Expand Up @@ -12,9 +12,18 @@ function normalizeCommandName(commandName) {
return commandName;
}

function handleGetRequest(request, connection) {
function handleGetRequest(request, connection, response) {
var commandName = normalizeCommandName(request.params.commandName);
connection.emit(commandName, request.query);
if (commandName == 'load') {
var loader = new Loader(request, response, connection, this.logger);
loader.run();
if (request.query.values) {
request.emit('data', request.query.values);
}
request.emit('end');
} else {
connection.emit(commandName, request.query);
}
}

function handlePostRequest(request, connection, response) {
Expand Down
83 changes: 83 additions & 0 deletions test/adapter/api/groonga/load.test.js
Expand Up @@ -307,6 +307,89 @@ suite('adapter/api/groonga: load', function() {
});
});
});

suite('GET', function() {
test('object style', function(done) {
var requestBody;
backend.reserveResponse(function(requestPacket) {
requestBody = requestPacket[2].body;
return utils.createReplyPacket(requestPacket, groongaUtils.successMessage);
});
var values = [
{
_key: 'alice',
name: 'Alice',
age: 20
}
];
var path = {
pathname: '/d/load',
query: {
table: 'Users',
values: JSON.stringify(values)
}
};
utils.get(path)
.next(function(response) {
assert.deepEqual(requestBody,
{
table: 'Users',
key: 'alice',
values: {
name: 'Alice',
age: 20
}
});
done();
})
.error(function(error) {
done(error);
});
});

test('array style', function(done) {
var requestBody;
backend.reserveResponse(function(requestPacket) {
requestBody = requestPacket[2].body;
return utils.createReplyPacket(requestPacket, groongaUtils.successMessage);
});
var values = [
[
'_key',
'name',
'age'
],
[
'alice',
'Alice',
20
]
];
var path = {
pathname: '/d/load',
query: {
table: 'Users',
values: JSON.stringify(values)
}
};
utils.get(path)
.next(function(response) {
assert.deepEqual(requestBody,
{
table: 'Users',
key: 'alice',
values: {
name: 'Alice',
age: 20
}
});
done();
})
.error(function(error) {
done(error);
});
});
});
});

suite('failure', function() {
Expand Down
9 changes: 9 additions & 0 deletions test/test-utils.js
Expand Up @@ -7,6 +7,7 @@ var http = require('http');
var Deferred = require('jsdeferred').Deferred;
var client = require('socket.io-client');
var express = require('express');
var url = require('url');

var FluentReceiver = require('../lib/droonga-protocol/receiver').FluentReceiver;
exports.FluentReceiver = FluentReceiver;
Expand Down Expand Up @@ -75,9 +76,17 @@ function setupServer(handlerOrServer) {
exports.setupServer = setupServer;
Deferred.register('setupServer', setupServer);

function normalizePath(path) {
if (typeof path != 'string') {
path = url.format(path);
}
return path;
}

function sendRequest(method, path, postData, headers) {
var deferred = new Deferred();

path = normalizePath(path);
var options = {
host: '127.0.0.1',
port: testServerPort,
Expand Down

0 comments on commit aa0c336

Please sign in to comment.