mirror of https://github.com/pelias/api.git
Peter Johnson @insertcoffee
10 years ago
13 changed files with 957 additions and 10 deletions
@ -0,0 +1,42 @@
|
||||
|
||||
function setup( backend, query ){ |
||||
|
||||
// allow overriding of dependencies
|
||||
backend = backend || require('../src/backend'); |
||||
query = query || require('../query/search'); |
||||
|
||||
function controller( req, res, next ){ |
||||
|
||||
// backend command
|
||||
var cmd = { |
||||
index: 'pelias', |
||||
body: query( req.clean ) |
||||
}; |
||||
|
||||
// query backend
|
||||
backend().client.search( cmd, function( err, data ){ |
||||
|
||||
var docs = []; |
||||
|
||||
// handle backend errors
|
||||
if( err ){ return next( err ); } |
||||
|
||||
if( data && data.hits && data.hits.total){ |
||||
docs = data.hits.hits.map( function( hit ){ |
||||
return hit._source; |
||||
}); |
||||
} |
||||
|
||||
// respond
|
||||
return res.status(200).json({ |
||||
date: new Date().getTime(), |
||||
body: docs |
||||
}); |
||||
}); |
||||
|
||||
} |
||||
|
||||
return controller; |
||||
} |
||||
|
||||
module.exports = setup; |
@ -0,0 +1,719 @@
|
||||
# valid search query |
||||
|
||||
*Generated: Wed Sep 17 2014 17:51:29 GMT-0400 (EDT)* |
||||
## Request |
||||
```javascript |
||||
{ |
||||
"protocol": "http:", |
||||
"host": "localhost", |
||||
"method": "GET", |
||||
"port": 3100, |
||||
"path": "/search?input=lake&lat=29.49136&lon=-82.50622" |
||||
} |
||||
``` |
||||
|
||||
## Response |
||||
```javascript |
||||
Status: 200 |
||||
{ |
||||
"x-powered-by": "mapzen", |
||||
"charset": "utf8", |
||||
"cache-control": "public,max-age=60", |
||||
"server": "Pelias/0.0.0", |
||||
"access-control-allow-origin": "*", |
||||
"access-control-allow-methods": "GET", |
||||
"access-control-allow-headers": "X-Requested-With,content-type", |
||||
"access-control-allow-credentials": "true", |
||||
"content-type": "application/json; charset=utf-8", |
||||
"content-length": "9257", |
||||
"etag": "W/\"OND3fubDpKm+gxn7v+gcfQ==\"", |
||||
"date": "Wed, 17 Sep 2014 21:51:29 GMT", |
||||
"connection": "close" |
||||
} |
||||
``` |
||||
```javascript |
||||
{ |
||||
"date": 1410990689582, |
||||
"body": [ |
||||
{ |
||||
"name": { |
||||
"default": "Bluff Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Georgia", |
||||
"admin2": "Charlton County", |
||||
"center_point": { |
||||
"lat": "30.87884", |
||||
"lon": "-82.1479" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"bluff lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4047948", |
||||
"geo": "-82.1479,30.87884" |
||||
}, |
||||
"output": "Bluff Lake, Charlton County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Lake Midget" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Polk County", |
||||
"center_point": { |
||||
"lat": "28.04302", |
||||
"lon": "-81.57802" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"lake midget" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4047858", |
||||
"geo": "-81.57802,28.04302" |
||||
}, |
||||
"output": "Lake Midget, Polk County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Seagrove Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Georgia", |
||||
"admin2": "Ware County", |
||||
"center_point": { |
||||
"lat": "30.70884", |
||||
"lon": "-82.17151" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"seagrove lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4221821", |
||||
"geo": "-82.17151,30.70884" |
||||
}, |
||||
"output": "Seagrove Lake, Ware County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Wilkerson Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Georgia", |
||||
"admin2": "Clinch County", |
||||
"center_point": { |
||||
"lat": "30.76827", |
||||
"lon": "-82.80764" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"wilkerson lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4231020", |
||||
"geo": "-82.80764,30.76827" |
||||
}, |
||||
"output": "Wilkerson Lake, Clinch County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Sunset Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Georgia", |
||||
"admin2": "Lowndes County", |
||||
"center_point": { |
||||
"lat": "30.65978", |
||||
"lon": "-83.25091" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"sunset lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4225258", |
||||
"geo": "-83.25091,30.65978" |
||||
}, |
||||
"output": "Sunset Lake, Lowndes County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Lake Wilson" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Osceola County", |
||||
"center_point": { |
||||
"lat": "28.3353", |
||||
"lon": "-81.59836" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"lake wilson" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4178484", |
||||
"geo": "-81.59836,28.3353" |
||||
}, |
||||
"output": "Lake Wilson, Osceola County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Lake Willisara" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Orange County", |
||||
"center_point": { |
||||
"lat": "28.50804", |
||||
"lon": "-81.3612" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"lake willisara" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4178413", |
||||
"geo": "-81.3612,28.50804" |
||||
}, |
||||
"output": "Lake Willisara, Orange County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Church Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Putnam County", |
||||
"center_point": { |
||||
"lat": "29.65132", |
||||
"lon": "-81.86765" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"church lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4150918", |
||||
"geo": "-81.86765,29.65132" |
||||
}, |
||||
"output": "Church Lake, Putnam County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Lake Citrus" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Pinellas County", |
||||
"center_point": { |
||||
"lat": "27.99792", |
||||
"lon": "-82.75207" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"lake citrus" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4151171", |
||||
"geo": "-82.75207,27.99792" |
||||
}, |
||||
"output": "Lake Citrus, Pinellas County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Clear Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Lake County", |
||||
"center_point": { |
||||
"lat": "28.60427", |
||||
"lon": "-81.78748" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"clear lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4151287", |
||||
"geo": "-81.78748,28.60427" |
||||
}, |
||||
"output": "Clear Lake, Lake County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Clear Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Putnam County", |
||||
"center_point": { |
||||
"lat": "29.62033", |
||||
"lon": "-81.96045" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"clear lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4151296", |
||||
"geo": "-81.96045,29.62033" |
||||
}, |
||||
"output": "Clear Lake, Putnam County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Clearview Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Lake County", |
||||
"center_point": { |
||||
"lat": "28.93511", |
||||
"lon": "-81.88448" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"clearview lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4151315", |
||||
"geo": "-81.88448,28.93511" |
||||
}, |
||||
"output": "Clearview Lake, Lake County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Clear Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Alachua County", |
||||
"center_point": { |
||||
"lat": "29.65102", |
||||
"lon": "-82.39114" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"clear lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4151324", |
||||
"geo": "-82.39114,29.65102" |
||||
}, |
||||
"output": "Clear Lake, Alachua County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Clearwater Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Marion County", |
||||
"center_point": { |
||||
"lat": "29.07267", |
||||
"lon": "-82.504" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"clearwater lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4151333", |
||||
"geo": "-82.504,29.07267" |
||||
}, |
||||
"output": "Clearwater Lake, Marion County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Lake Clifton" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Volusia County", |
||||
"center_point": { |
||||
"lat": "29.1606", |
||||
"lon": "-81.34513" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"lake clifton" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4151377", |
||||
"geo": "-81.34513,29.1606" |
||||
}, |
||||
"output": "Lake Clifton, Volusia County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Lake Clough" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Volusia County", |
||||
"center_point": { |
||||
"lat": "28.99362", |
||||
"lon": "-81.23336" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"lake clough" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4151386", |
||||
"geo": "-81.23336,28.99362" |
||||
}, |
||||
"output": "Lake Clough, Volusia County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Connell Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Citrus County", |
||||
"center_point": { |
||||
"lat": "28.86965", |
||||
"lon": "-82.3506" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"connell lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4151719", |
||||
"geo": "-82.3506,28.86965" |
||||
}, |
||||
"output": "Connell Lake, Citrus County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Cook Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Lake County", |
||||
"center_point": { |
||||
"lat": "28.83482", |
||||
"lon": "-81.78047" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"cook lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4151764", |
||||
"geo": "-81.78047,28.83482" |
||||
}, |
||||
"output": "Cook Lake, Lake County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Cooper Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Putnam County", |
||||
"center_point": { |
||||
"lat": "29.62934", |
||||
"lon": "-81.94266" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"cooper lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4151827", |
||||
"geo": "-81.94266,29.62934" |
||||
}, |
||||
"output": "Cooper Lake, Putnam County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Lake Corrine" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Orange County", |
||||
"center_point": { |
||||
"lat": "28.57264", |
||||
"lon": "-81.32241" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"lake corrine" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4152000", |
||||
"geo": "-81.32241,28.57264" |
||||
}, |
||||
"output": "Lake Corrine, Orange County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Cove Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Dixie County", |
||||
"center_point": { |
||||
"lat": "29.81069", |
||||
"lon": "-83.00354" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"cove lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4152097", |
||||
"geo": "-83.00354,29.81069" |
||||
}, |
||||
"output": "Cove Lake, Dixie County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Crooked Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Orange County", |
||||
"center_point": { |
||||
"lat": "28.5929", |
||||
"lon": "-81.48204" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"crooked lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4152358", |
||||
"geo": "-81.48204,28.5929" |
||||
}, |
||||
"output": "Crooked Lake, Orange County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Lake Crosby" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Bradford County", |
||||
"center_point": { |
||||
"lat": "29.94273", |
||||
"lon": "-82.15715" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"lake crosby" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4152376", |
||||
"geo": "-82.15715,29.94273" |
||||
}, |
||||
"output": "Lake Crosby, Bradford County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Lake Crowell" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Orange County", |
||||
"center_point": { |
||||
"lat": "28.41965", |
||||
"lon": "-81.49589" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"lake crowell" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4152440", |
||||
"geo": "-81.49589,28.41965" |
||||
}, |
||||
"output": "Lake Crowell, Orange County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Crystal Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Polk County", |
||||
"center_point": { |
||||
"lat": "27.86861", |
||||
"lon": "-81.71079" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"crystal lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4152466", |
||||
"geo": "-81.71079,27.86861" |
||||
}, |
||||
"output": "Crystal Lake, Polk County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Crystal Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Seminole County", |
||||
"center_point": { |
||||
"lat": "28.77055", |
||||
"lon": "-81.31479" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"crystal lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4152475", |
||||
"geo": "-81.31479,28.77055" |
||||
}, |
||||
"output": "Crystal Lake, Seminole County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Cypress Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Lake County", |
||||
"center_point": { |
||||
"lat": "28.43075", |
||||
"lon": "-81.76247" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"cypress lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4152637", |
||||
"geo": "-81.76247,28.43075" |
||||
}, |
||||
"output": "Cypress Lake, Lake County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Deer Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Marion County", |
||||
"center_point": { |
||||
"lat": "29.20003", |
||||
"lon": "-81.83805" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"deer lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4153052", |
||||
"geo": "-81.83805,29.20003" |
||||
}, |
||||
"output": "Deer Lake, Marion County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Lake Deer" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Polk County", |
||||
"center_point": { |
||||
"lat": "28.02571", |
||||
"lon": "-81.76317" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"lake deer" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4153070", |
||||
"geo": "-81.76317,28.02571" |
||||
}, |
||||
"output": "Lake Deer, Polk County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Dempsey Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Suwannee County", |
||||
"center_point": { |
||||
"lat": "30.37031", |
||||
"lon": "-83.18977" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"dempsey lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4153160", |
||||
"geo": "-83.18977,30.37031" |
||||
}, |
||||
"output": "Dempsey Lake, Suwannee County, United States" |
||||
} |
||||
} |
||||
] |
||||
} |
||||
``` |
||||
|
||||
## Tests |
||||
|
||||
### âś“ 200 ok |
||||
```javascript |
||||
response.statusCode.should.equal 200 |
||||
``` |
||||
|
||||
### âś“ valid response |
||||
```javascript |
||||
now = new Date().getTime() |
||||
should.exist json |
||||
should.not.exist json.error |
||||
should.exist json.date |
||||
json.date.should.be.within now-2000, now+2000 |
||||
should.exist json.body |
||||
json.body.should.be.instanceof Array |
||||
``` |
||||
|
@ -0,0 +1,33 @@
|
||||
var logger = require('../src/logger'); |
||||
|
||||
// Build pelias search query
|
||||
function generate( params ){ |
||||
|
||||
var cmd = { |
||||
"query":{ |
||||
"filtered" : { |
||||
"query" : { |
||||
"match" : { |
||||
"name.default": params.input |
||||
} |
||||
}, |
||||
"filter" : { |
||||
"geo_distance" : { |
||||
"distance" : "200km", |
||||
"center_point" : { |
||||
"lat": params.lat,
|
||||
"lon": params.lon
|
||||
} |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
"size": params.size |
||||
}; |
||||
|
||||
logger.log( 'cmd', JSON.stringify( cmd, null, 2 ) ); |
||||
return cmd; |
||||
|
||||
} |
||||
|
||||
module.exports = generate; |
@ -0,0 +1,14 @@
|
||||
#> valid search query |
||||
path: '/search?input=lake&lat=29.49136&lon=-82.50622' |
||||
|
||||
#? 200 ok |
||||
response.statusCode.should.equal 200 |
||||
|
||||
#? valid response |
||||
now = new Date().getTime() |
||||
should.exist json |
||||
should.not.exist json.error |
||||
should.exist json.date |
||||
json.date.should.be.within now-2000, now+2000 |
||||
should.exist json.body |
||||
json.body.should.be.instanceof Array |
@ -0,0 +1,64 @@
|
||||
|
||||
var setup = require('../../../controller/search'), |
||||
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/search/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/search/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 /search ' + name, testFunction); |
||||
} |
||||
|
||||
for( var testCase in module.exports.tests ){ |
||||
module.exports.tests[testCase](test, common); |
||||
} |
||||
}; |
@ -0,0 +1,55 @@
|
||||
|
||||
var generate = require('../../../query/search'); |
||||
|
||||
module.exports.tests = {}; |
||||
|
||||
module.exports.tests.interface = function(test, common) { |
||||
test('valid interface', function(t) { |
||||
t.equal(typeof generate, 'function', 'valid function'); |
||||
t.end(); |
||||
}); |
||||
}; |
||||
|
||||
module.exports.tests.query = function(test, common) { |
||||
test('valid query', function(t) { |
||||
var query = generate({ |
||||
input: 'test', size: 10, |
||||
lat: 0, lon: 0, |
||||
layers: ['test'] |
||||
}); |
||||
var expected = { |
||||
query: { |
||||
filtered : { |
||||
query : { |
||||
match : { |
||||
"name.default": 'test' |
||||
} |
||||
}, |
||||
filter : { |
||||
geo_distance : { |
||||
distance : '200km', |
||||
center_point : { |
||||
lat: 0,
|
||||
lon: 0 |
||||
} |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
size: 10 |
||||
}; |
||||
t.deepEqual(query, expected, 'valid search query'); |
||||
t.end(); |
||||
}); |
||||
}; |
||||
|
||||
module.exports.all = function (tape, common) { |
||||
|
||||
function test(name, testFunction) { |
||||
return tape('search query ' + name, testFunction); |
||||
} |
||||
|
||||
for( var testCase in module.exports.tests ){ |
||||
module.exports.tests[testCase](test, common); |
||||
} |
||||
}; |
Loading…
Reference in new issue