mirror of https://github.com/pelias/api.git
Peter Johnson
10 years ago
10 changed files with 171 additions and 53 deletions
@ -1,9 +1,17 @@
|
||||
|
||||
/** cluster webserver across all cores **/ |
||||
|
||||
var cluster = require('cluster'), |
||||
app = require('./app'); |
||||
app = require('./app'), |
||||
multicore = false, |
||||
port = ( process.env.PORT || 3100 ); |
||||
|
||||
cluster(app) |
||||
.use(cluster.stats()) |
||||
.listen( process.env.PORT || 3100 ); |
||||
/** cluster webserver across all cores **/ |
||||
if( multicore ){ |
||||
// @todo: not finished yet
|
||||
// cluster(app)
|
||||
// .use(cluster.stats())
|
||||
// .listen( process.env.PORT || 3100 );
|
||||
} |
||||
else { |
||||
console.log( 'listening on ' + port ); |
||||
app.listen( process.env.PORT || 3100 ); |
||||
} |
@ -0,0 +1,64 @@
|
||||
|
||||
var setup = require('../../../controller/suggest'), |
||||
mockBackend = require('../mock/backend'), |
||||
mockQuery = require('../mock/query'); |
||||
|
||||
module.exports.tests = {}; |
||||
|
||||
module.exports.tests.interface = function(test, common) { |
||||
test('valid interface', function(t) { |
||||
t.equal(typeof setup, 'function', 'setup is a function'); |
||||
t.equal(typeof setup(), 'function', 'setup returns a controller'); |
||||
t.end(); |
||||
}); |
||||
}; |
||||
|
||||
// functionally test controller (backend success)
|
||||
module.exports.tests.functional_success = function(test, common) { |
||||
test('functional test', function(t) { |
||||
var backend = mockBackend( 'client/suggest/ok/1', function( cmd ){ |
||||
t.deepEqual(cmd, { body: { a: 'b' }, index: 'pelias' }, 'correct backend command'); |
||||
}); |
||||
var controller = setup( backend, mockQuery() ); |
||||
var res = { |
||||
status: function( code ){ |
||||
t.equal(code, 200, 'status set'); |
||||
return res; |
||||
}, |
||||
json: function( json ){ |
||||
t.equal(typeof json, 'object', 'returns json'); |
||||
t.equal(typeof json.date, 'number', 'date set'); |
||||
t.true(Array.isArray(json.body), 'body is array'); |
||||
t.deepEqual(json.body, [ { value: 1 }, { value: 2 } ], 'values correctly mapped'); |
||||
t.end(); |
||||
} |
||||
}; |
||||
controller( { clean: { a: 'b' } }, res ); |
||||
}); |
||||
}; |
||||
|
||||
// functionally test controller (backend failure)
|
||||
module.exports.tests.functional_failure = function(test, common) { |
||||
test('functional test', function(t) { |
||||
var backend = mockBackend( 'client/suggest/fail/1', function( cmd ){ |
||||
t.deepEqual(cmd, { body: { a: 'b' }, index: 'pelias' }, 'correct backend command'); |
||||
}); |
||||
var controller = setup( backend, mockQuery() ); |
||||
var next = function( message ){ |
||||
t.equal(message,'a backend error occurred','error passed to errorHandler'); |
||||
t.end(); |
||||
}; |
||||
controller( { clean: { a: 'b' } }, undefined, next ); |
||||
}); |
||||
}; |
||||
|
||||
module.exports.all = function (tape, common) { |
||||
|
||||
function test(name, testFunction) { |
||||
return tape('GET /suggest ' + name, testFunction); |
||||
} |
||||
|
||||
for( var testCase in module.exports.tests ){ |
||||
module.exports.tests[testCase](test, common); |
||||
} |
||||
}; |
@ -0,0 +1,28 @@
|
||||
|
||||
var responses = {}; |
||||
responses['client/suggest/ok/1'] = function( cmd, cb ){ |
||||
return cb( undefined, suggestEnvelope([ { value: 1 }, { value: 2 } ]) ); |
||||
}; |
||||
responses['client/suggest/fail/1'] = function( cmd, cb ){ |
||||
return cb( 'a backend error occurred' ); |
||||
}; |
||||
|
||||
function setup( key, cmdCb ){ |
||||
function backend( a, b ){ |
||||
return { |
||||
client: { |
||||
suggest: function( cmd, cb ){ |
||||
if( 'function' === typeof cmdCb ){ cmdCb( cmd ); } |
||||
return responses[key].apply( this, arguments ); |
||||
} |
||||
} |
||||
}; |
||||
} |
||||
return backend; |
||||
} |
||||
|
||||
function suggestEnvelope( options ){ |
||||
return { pelias: [{ options: options }]}; |
||||
} |
||||
|
||||
module.exports = setup; |
@ -0,0 +1,10 @@
|
||||
|
||||
function setup(){ |
||||
return query; |
||||
} |
||||
|
||||
function query( clean ){ |
||||
return clean; |
||||
} |
||||
|
||||
module.exports = setup; |
Loading…
Reference in new issue