mirror of https://github.com/pelias/api.git
Stephen Hess
9 years ago
2 changed files with 256 additions and 0 deletions
@ -0,0 +1,49 @@
|
||||
var _ = require('lodash'); |
||||
|
||||
function setup() { |
||||
return function generatePermutations(req, res, next) { |
||||
if (_.isUndefined(req.clean) || _.isEmpty(req.clean.parsed_text)) { |
||||
return next(); |
||||
} |
||||
|
||||
req.clean.permutations = []; |
||||
|
||||
if (req.clean.parsed_text.hasOwnProperty('number')) { |
||||
req.clean.permutations.push(req.clean.parsed_text); |
||||
|
||||
if (req.clean.parsed_text.hasOwnProperty('street')) { |
||||
req.clean.permutations.push({ |
||||
street: req.clean.parsed_text.street, |
||||
city: req.clean.parsed_text.city, |
||||
state: req.clean.parsed_text.state |
||||
}); |
||||
|
||||
} |
||||
|
||||
if (req.clean.parsed_text.hasOwnProperty('city')) { |
||||
req.clean.permutations.push({ |
||||
city: req.clean.parsed_text.city, |
||||
state: req.clean.parsed_text.state |
||||
}); |
||||
|
||||
} |
||||
|
||||
if (req.clean.parsed_text.hasOwnProperty('state')) { |
||||
req.clean.permutations.push({ |
||||
state: req.clean.parsed_text.state |
||||
}); |
||||
} |
||||
|
||||
} |
||||
|
||||
// { number: '102',
|
||||
// street: 'south charles st',
|
||||
// city: 'red lion',
|
||||
// state: 'pa' }
|
||||
|
||||
next(); |
||||
}; |
||||
|
||||
} |
||||
|
||||
module.exports = setup; |
@ -0,0 +1,207 @@
|
||||
var generatePermutations = require('../../../middleware/generatePermutations')(); |
||||
|
||||
module.exports.tests = {}; |
||||
|
||||
module.exports.tests.confidenceScore = function(test, common) { |
||||
test('undefined req.clean should not throw exception', function(t) { |
||||
var req = {}; |
||||
var res = {}; |
||||
var next_called = false; |
||||
|
||||
function testIt() { |
||||
generatePermutations(req, res, function() { next_called = true; }); |
||||
} |
||||
|
||||
t.doesNotThrow(testIt, 'an exception should not have been thrown'); |
||||
t.ok(next_called); |
||||
t.end(); |
||||
|
||||
}); |
||||
|
||||
test('undefined req.clean.parsed_text should not throw exception', function(t) { |
||||
var req = { |
||||
clean: {} |
||||
}; |
||||
var res = {}; |
||||
var next_called = false; |
||||
|
||||
function testIt() { |
||||
generatePermutations(req, res, function() { next_called = true; }); |
||||
} |
||||
|
||||
t.doesNotThrow(testIt, 'an exception should not have been thrown'); |
||||
t.ok(next_called); |
||||
t.equal(req.clean.permutations, undefined); |
||||
t.end(); |
||||
|
||||
}); |
||||
|
||||
test('empty req.clean.parsed_text should not throw exception', function(t) { |
||||
var req = { |
||||
clean: { |
||||
parsed_text: {} |
||||
} |
||||
}; |
||||
var res = {}; |
||||
var next_called = false; |
||||
|
||||
function testIt() { |
||||
generatePermutations(req, res, function() { next_called = true; }); |
||||
} |
||||
|
||||
t.doesNotThrow(testIt, 'an exception should not have been thrown'); |
||||
t.ok(next_called); |
||||
t.equal(req.clean.permutations, undefined); |
||||
t.end(); |
||||
|
||||
}); |
||||
|
||||
test('parsed_text with number should add permutations for less granular searches', function(t) { |
||||
var req = { |
||||
clean: { |
||||
parsed_text: { |
||||
number: '1234', |
||||
street: 'street name', |
||||
city: 'city name', |
||||
state: 'state name' |
||||
} |
||||
} |
||||
}; |
||||
var res = {}; |
||||
var next_called = false; |
||||
|
||||
function testIt() { |
||||
generatePermutations(req, res, function() { next_called = true; }); |
||||
} |
||||
|
||||
var expected_permutations = [ |
||||
{ |
||||
number: '1234', |
||||
street: 'street name', |
||||
city: 'city name', |
||||
state: 'state name' |
||||
}, |
||||
{ |
||||
street: 'street name', |
||||
city: 'city name', |
||||
state: 'state name' |
||||
}, |
||||
{ |
||||
city: 'city name', |
||||
state: 'state name' |
||||
}, |
||||
{ |
||||
state: 'state name' |
||||
} |
||||
]; |
||||
|
||||
testIt(); |
||||
|
||||
t.deepEquals(req.clean.permutations, expected_permutations); |
||||
t.ok(next_called); |
||||
t.end(); |
||||
|
||||
}); |
||||
|
||||
//
|
||||
// test('empty res and req should not throw exception', function(t) {
|
||||
// function testIt() {
|
||||
// confidenceScore({}, {}, function() {});
|
||||
// }
|
||||
//
|
||||
// t.doesNotThrow(testIt, 'an exception should not have been thrown');
|
||||
// t.end();
|
||||
// });
|
||||
//
|
||||
// test('res.results without parsed_text should not throw exception', function(t) {
|
||||
// var req = {};
|
||||
// var res = {
|
||||
// data: [{
|
||||
// name: 'foo'
|
||||
// }],
|
||||
// meta: [10]
|
||||
// };
|
||||
//
|
||||
// function testIt() {
|
||||
// confidenceScore(req, res, function() {});
|
||||
// }
|
||||
//
|
||||
// t.doesNotThrow(testIt, 'an exception should not have been thrown');
|
||||
// t.end();
|
||||
// });
|
||||
//
|
||||
// test('hit without address should not error', function(t) {
|
||||
// var req = {
|
||||
// clean: {
|
||||
// text: 'test name3',
|
||||
// parsed_text: {
|
||||
// postalcode: 12345
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
// var res = {
|
||||
// data: [{
|
||||
// name: {
|
||||
// default: 'foo'
|
||||
// }
|
||||
// }],
|
||||
// meta: {
|
||||
// scores: [10]
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// function testIt() {
|
||||
// confidenceScore(req, res, function() {});
|
||||
// }
|
||||
//
|
||||
// t.doesNotThrow(testIt, 'an exception should not have been thrown with no address');
|
||||
// t.end();
|
||||
// });
|
||||
//
|
||||
//
|
||||
// test('res.results without parsed_text should not throw exception', function(t) {
|
||||
// var req = {
|
||||
// clean: { text: 'test name1' }
|
||||
// };
|
||||
// var res = {
|
||||
// data: [{
|
||||
// _score: 10,
|
||||
// found: true,
|
||||
// value: 1,
|
||||
// center_point: { lat: 100.1, lon: -50.5 },
|
||||
// name: { default: 'test name1' },
|
||||
// parent: {
|
||||
// country: ['country1'],
|
||||
// region: ['state1'],
|
||||
// county: ['city1']
|
||||
// }
|
||||
// }, {
|
||||
// _score: 20,
|
||||
// value: 2,
|
||||
// center_point: { lat: 100.2, lon: -51.5 },
|
||||
// name: { default: 'test name2' },
|
||||
// parent: {
|
||||
// country: ['country2'],
|
||||
// region: ['state2'],
|
||||
// county: ['city2']
|
||||
// }
|
||||
// }],
|
||||
// meta: {scores: [10]}
|
||||
// };
|
||||
//
|
||||
// confidenceScore(req, res, function() {});
|
||||
// t.equal(res.data[0].confidence, 0.6, 'score was set');
|
||||
// t.end();
|
||||
// });
|
||||
|
||||
}; |
||||
|
||||
module.exports.all = function (tape, common) { |
||||
function test(name, testFunction) { |
||||
return tape('[middleware] confidenceScore: ' + name, testFunction); |
||||
} |
||||
|
||||
for( var testCase in module.exports.tests ){ |
||||
module.exports.tests[testCase](test, common); |
||||
} |
||||
}; |
Loading…
Reference in new issue