Browse Source

Merge branch 'rename-doc-to-place'

pull/211/head
Julian Simioni 9 years ago
parent
commit
472c8a4a05
  1. 9
      DOCS.md
  2. 10
      app.js
  3. 8
      controller/place.js
  4. 1
      sanitiser/place.js
  5. 6
      test/ciao/place/msuccess.coffee
  6. 6
      test/ciao/place/success.coffee
  7. 9
      test/unit/controller/place.js
  8. 6
      test/unit/run.js
  9. 18
      test/unit/sanitiser/place.js

9
DOCS.md

@ -89,14 +89,15 @@ The reverse geocoding endpoint; matches a point on the planet to the name of tha
* `details` (default: `true`)
## /doc
## /place
The endpoint for retrieving one or more elasticsearch documents with specific ids.
The endpoint for retrieving one or more places with specific ids. These correspond
directly with Elasticsearch documents.
#### Required Parameters
* one of `id` or `ids`
* `id`:
* unique id of the document to be retrieved
* unique id of the places to be retrieved
* should be in the form of type:id, for example: `geoname:4163334`
* `ids`:
* if multiple docs are to be fetched in bulk, an array of ids
* if multiple places are to be fetched in bulk, an array of ids

10
app.js

@ -15,7 +15,7 @@ app.use( require('./middleware/jsonp') );
/** ----------------------- sanitisers ----------------------- **/
var sanitisers = {};
sanitisers.doc = require('./sanitiser/doc');
sanitisers.place = require('./sanitiser/place');
sanitisers.suggest = require('./sanitiser/suggest');
sanitisers.search = require('./sanitiser/search');
sanitisers.coarse = require('./sanitiser/coarse');
@ -25,7 +25,7 @@ sanitisers.reverse = require('./sanitiser/reverse');
var controllers = {};
controllers.index = require('./controller/index');
controllers.doc = require('./controller/doc');
controllers.place = require('./controller/place');
controllers.search = require('./controller/search');
/** ----------------------- routes ----------------------- **/
@ -33,8 +33,8 @@ controllers.search = require('./controller/search');
// api root
app.get( '/', controllers.index() );
// doc API
app.get( '/doc', sanitisers.doc.middleware, controllers.doc() );
// place API
app.get( '/place', sanitisers.place.middleware, controllers.place() );
// suggest APIs
app.get( '/suggest', sanitisers.search.middleware, controllers.search() );
@ -54,4 +54,4 @@ app.use( require('./middleware/404') );
app.use( require('./middleware/408') );
app.use( require('./middleware/500') );
module.exports = app;
module.exports = app;

8
controller/doc.js → controller/place.js

@ -1,14 +1,11 @@
var service = { mget: require('../service/mget') };
var geojsonify = require('../helper/geojsonify').search;
function setup( backend ){
// allow overriding of dependencies
backend = backend || require('../src/backend');
function controller( req, res, next ){
var query = req.clean.ids.map( function(id) {
return {
_index: 'pelias',
@ -18,7 +15,6 @@ function setup( backend ){
});
service.mget( backend, query, function( err, docs ){
// error handler
if( err ){ return next( err ); }
@ -30,9 +26,7 @@ function setup( backend ){
// respond
return res.status(200).json( geojson );
});
}
return controller;

1
sanitiser/doc.js → sanitiser/place.js

@ -1,4 +1,3 @@
var _sanitize = require('../sanitiser/_sanitize'),
sanitizers = {
id: require('../sanitiser/_id'),

6
test/ciao/doc/msuccess.coffee → test/ciao/place/msuccess.coffee

@ -1,6 +1,6 @@
#> valid doc query
path: '/doc?id=geoname:4221195&id=geoname:4193595'
#> valid place query
path: '/place?id=geoname:4221195&id=geoname:4193595'
#? 200 ok
response.statusCode.should.equal 200
@ -13,4 +13,4 @@ json.date.should.be.within now-5000, now+5000
#? valid geojson
json.type.should.equal 'FeatureCollection'
json.features.should.be.instanceof Array
json.features.should.be.instanceof Array

6
test/ciao/doc/success.coffee → test/ciao/place/success.coffee

@ -1,6 +1,6 @@
#> valid doc query
path: '/doc?id=geoname:4221195'
#> valid place query
path: '/place?id=geoname:4221195'
#? 200 ok
response.statusCode.should.equal 200
@ -13,4 +13,4 @@ json.date.should.be.within now-5000, now+5000
#? valid geojson
json.type.should.equal 'FeatureCollection'
json.features.should.be.instanceof Array
json.features.should.be.instanceof Array

9
test/unit/controller/doc.js → test/unit/controller/place.js

@ -1,5 +1,4 @@
var setup = require('../../../controller/doc'),
var setup = require('../../../controller/place'),
mockBackend = require('../mock/backend');
module.exports.tests = {};
@ -15,7 +14,7 @@ module.exports.tests.interface = function(test, common) {
// functionally test controller (backend success)
module.exports.tests.functional_success = function(test, common) {
// expected geojson features for 'client/doc/ok/1' fixture
// expected geojson features for 'client/place/ok/1' fixture
var expected = [{
type: 'Feature',
geometry: {
@ -93,7 +92,7 @@ module.exports.tests.functional_success = function(test, common) {
text: 'test name2, city2, state2'
}
}];
test('functional success (with details)', function(t) {
var backend = mockBackend( 'client/mget/ok/1', function( cmd ){
t.deepEqual(cmd, { body: { docs: [ { _id: 123, _index: 'pelias', _type: 'a' } ] } }, 'correct backend command');
@ -141,4 +140,4 @@ module.exports.all = function (tape, common) {
for( var testCase in module.exports.tests ){
module.exports.tests[testCase](test, common);
}
};
};

6
test/unit/run.js

@ -4,14 +4,14 @@ var common = {};
var tests = [
require('./controller/index'),
require('./controller/doc'),
require('./controller/place'),
require('./controller/search'),
require('./service/mget'),
require('./service/search'),
require('./sanitiser/suggest'),
require('./sanitiser/search'),
require('./sanitiser/reverse'),
require('./sanitiser/doc'),
require('./sanitiser/place'),
require('./sanitiser/coarse'),
require('./query/indeces'),
require('./query/sort'),
@ -25,4 +25,4 @@ var tests = [
tests.map(function(t) {
t.all(tape, common);
});
});

18
test/unit/sanitiser/doc.js → test/unit/sanitiser/place.js

@ -1,13 +1,13 @@
var doc = require('../../../sanitiser/doc'),
_sanitize = doc.sanitize,
middleware = doc.middleware,
var place = require('../../../sanitiser/place'),
_sanitize = place.sanitize,
middleware = place.middleware,
indeces = require('../../../query/indeces'),
delimiter = ':',
defaultLengthError = function(input) { return 'invalid param \''+ input + '\': text length, must be >0'; },
defaultFormatError = 'invalid: must be of the format type:id for ex: \'geoname:4163334\'',
defaultError = 'invalid param \'id\': text length, must be >0',
defaultMissingTypeError = function(input) {
defaultMissingTypeError = function(input) {
var type = input.split(delimiter)[0];
return type + ' is invalid. It must be one of these values - [' + indeces.join(', ') + ']'; },
defaultClean = { ids: [ { id: '123', type: 'geoname' } ], details: true },
@ -111,7 +111,7 @@ module.exports.tests.sanitize_details = function(test, common) {
t.equal(clean.details, false, 'default details set (to false)');
t.end();
});
});
});
});
var valid_values = ['true', true, 1];
@ -121,7 +121,7 @@ module.exports.tests.sanitize_details = function(test, common) {
t.equal(clean.details, true, 'details set to true');
t.end();
});
});
});
});
var valid_false_values = ['false', false, 0];
@ -131,7 +131,7 @@ module.exports.tests.sanitize_details = function(test, common) {
t.equal(clean.details, false, 'details set to false');
t.end();
});
});
});
});
test('test default behavior', function(t) {
@ -190,10 +190,10 @@ module.exports.tests.middleware_success = function(test, common) {
module.exports.all = function (tape, common) {
function test(name, testFunction) {
return tape('SANTIZE /doc ' + name, testFunction);
return tape('SANTIZE /place ' + name, testFunction);
}
for( var testCase in module.exports.tests ){
module.exports.tests[testCase](test, common);
}
};
};
Loading…
Cancel
Save