mirror of https://github.com/pelias/api.git
Browse Source
injects label generation function for easier unit testing moved label generation code to separate packagepull/680/head
Stephen Hess
8 years ago
17 changed files with 147 additions and 1466 deletions
@ -1,83 +0,0 @@ |
|||||||
var _ = require('lodash'), |
|
||||||
schemas = require('./labelSchema'); |
|
||||||
|
|
||||||
module.exports = function( record ){ |
|
||||||
var schema = getSchema(record.country_a); |
|
||||||
|
|
||||||
// in virtually all cases, this will be the `name` field
|
|
||||||
var labelParts = getInitialLabel(record); |
|
||||||
|
|
||||||
// iterate the schema
|
|
||||||
for (var field in schema) { |
|
||||||
var valueFunction = schema[field]; |
|
||||||
labelParts.push(valueFunction(record)); |
|
||||||
} |
|
||||||
|
|
||||||
// retain only things that are truthy
|
|
||||||
labelParts = _.compact(labelParts); |
|
||||||
|
|
||||||
// third, dedupe and join with a comma and return
|
|
||||||
return dedupeNameAndFirstLabelElement(labelParts).join(', '); |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
function dedupeNameAndFirstLabelElement(labelParts) { |
|
||||||
// only dedupe if a result has more than a name (the first label part)
|
|
||||||
if (labelParts.length > 1) { |
|
||||||
// first, dedupe the name and 1st label array elements
|
|
||||||
// this is used to ensure that the `name` and first admin hierarchy elements aren't repeated
|
|
||||||
// eg - `["Lancaster", "Lancaster", "PA", "United States"]` -> `["Lancaster", "PA", "United States"]`
|
|
||||||
var deduped = _.uniq([labelParts.shift(), labelParts.shift()]); |
|
||||||
|
|
||||||
// second, unshift the deduped parts back onto the labelParts
|
|
||||||
labelParts.unshift.apply(labelParts, deduped); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
return labelParts; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
function getSchema(country_a) { |
|
||||||
if (country_a && country_a.length && schemas[country_a]) { |
|
||||||
return schemas[country_a]; |
|
||||||
} |
|
||||||
|
|
||||||
return schemas.default; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
// helper function that sets a default label for non-US/CA regions and countries
|
|
||||||
function getInitialLabel(record) { |
|
||||||
if (isRegion(record.layer) && |
|
||||||
isGeonamesOrWhosOnFirst(record.source) && |
|
||||||
isUSAOrCAN(record.country_a)) { |
|
||||||
return []; |
|
||||||
} |
|
||||||
|
|
||||||
if (isCountry(record.layer)) { |
|
||||||
return []; |
|
||||||
} |
|
||||||
|
|
||||||
return [record.name]; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
// this can go away once geonames is no longer supported
|
|
||||||
// https://github.com/pelias/wof-admin-lookup/issues/49
|
|
||||||
function isCountry(layer) { |
|
||||||
return 'country' === layer; |
|
||||||
} |
|
||||||
|
|
||||||
function isRegion(layer) { |
|
||||||
return 'region' === layer; |
|
||||||
} |
|
||||||
|
|
||||||
function isUSAOrCAN(country_a) { |
|
||||||
return 'USA' === country_a || 'CAN' === country_a; |
|
||||||
} |
|
||||||
|
|
||||||
function isGeonamesOrWhosOnFirst(source) { |
|
||||||
return 'geonames' === source || 'whosonfirst' === source; |
|
||||||
|
|
||||||
} |
|
@ -1,78 +0,0 @@ |
|||||||
var _ = require('lodash'); |
|
||||||
|
|
||||||
module.exports = { |
|
||||||
'default': { |
|
||||||
'local': getFirstProperty(['locality', 'localadmin']), |
|
||||||
'country': getFirstProperty(['country']) |
|
||||||
}, |
|
||||||
'GBR': { |
|
||||||
'local': getFirstProperty(['locality', 'localadmin']), |
|
||||||
'regional': getFirstProperty(['macroregion']), |
|
||||||
'country': getFirstProperty(['country']) |
|
||||||
}, |
|
||||||
'USA': { |
|
||||||
'borough': getFirstProperty(['borough']), |
|
||||||
'local': getFirstProperty(['locality', 'localadmin', 'county']), |
|
||||||
'regional': getRegionalValue, |
|
||||||
'country': getUSACountryValue |
|
||||||
}, |
|
||||||
'AUS': { |
|
||||||
'local' : getFirstProperty(['locality', 'localadmin']), |
|
||||||
'regional' : getRegionalValue, |
|
||||||
'country': getFirstProperty(['country']) |
|
||||||
}, |
|
||||||
'CAN': { |
|
||||||
'local': getFirstProperty(['locality']), // no localadmins in CAN
|
|
||||||
'regional': getRegionalValue, |
|
||||||
'country': getFirstProperty(['country']) |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
// find the first field of record that has a non-empty value that's not already in labelParts
|
|
||||||
function getFirstProperty(fields) { |
|
||||||
return function(record) { |
|
||||||
for (var i = 0; i < fields.length; i++) { |
|
||||||
var fieldValue = record[fields[i]]; |
|
||||||
|
|
||||||
if (!_.isEmpty(fieldValue)) { |
|
||||||
return fieldValue; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
// this function is exclusively used for figuring out which field to use for states/provinces
|
|
||||||
// 1. if a state/province is the most granular bit of info entered, the label should contain
|
|
||||||
// the full state/province name, eg: Pennsylvania, USA and Ontario, CA
|
|
||||||
// 2. otherwise, the state/province abbreviation should be used, eg: Lancaster, PA, USA and Bruce, ON, CA
|
|
||||||
// 3. if the abbreviation isn't available, use the full state/province name
|
|
||||||
function getRegionalValue(record) { |
|
||||||
if ('region' === record.layer && record.region) { |
|
||||||
// return full state name when state is the most granular piece of info
|
|
||||||
return record.region; |
|
||||||
|
|
||||||
} else if (record.region_a) { |
|
||||||
// otherwise just return the region code when available
|
|
||||||
return record.region_a; |
|
||||||
|
|
||||||
} else if (record.region) { |
|
||||||
// return the full name when there's no region code available
|
|
||||||
return record.region; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
// this function returns the full name of a country if the result is in the
|
|
||||||
// country layer (for "United States" record). It returns the abbreviation
|
|
||||||
// otherwise (eg - Lancaster, PA, USA).
|
|
||||||
function getUSACountryValue(record) { |
|
||||||
if ('country' === record.layer && record.country) { |
|
||||||
return record.country; |
|
||||||
} |
|
||||||
|
|
||||||
return record.country_a; |
|
||||||
} |
|
@ -0,0 +1,23 @@ |
|||||||
|
function setup(labelGenerator) { |
||||||
|
function middleware(req, res, next) { |
||||||
|
return assignLabel(req, res, next, labelGenerator); |
||||||
|
} |
||||||
|
|
||||||
|
return middleware; |
||||||
|
} |
||||||
|
|
||||||
|
function assignLabel(req, res, next, labelGenerator) { |
||||||
|
|
||||||
|
// do nothing if there's nothing to process
|
||||||
|
if (!res || !res.body || !res.body.features) { |
||||||
|
return next(); |
||||||
|
} |
||||||
|
|
||||||
|
res.body.features.forEach(function (feature) { |
||||||
|
feature.properties.label = labelGenerator(feature.properties); |
||||||
|
}); |
||||||
|
|
||||||
|
next(); |
||||||
|
} |
||||||
|
|
||||||
|
module.exports = setup; |
@ -1,201 +0,0 @@ |
|||||||
|
|
||||||
var generator = require('../../../helper/labelGenerator'); |
|
||||||
|
|
||||||
module.exports.tests = {}; |
|
||||||
|
|
||||||
module.exports.tests.interface = function(test, common) { |
|
||||||
test('interface', function(t) { |
|
||||||
t.equal(typeof generator, 'function', 'valid function'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.tests.australia = function(test, common) { |
|
||||||
test('venue', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'venue name', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'AUS', |
|
||||||
'country': 'Australia' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'venue name, locality name, region name, Australia'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('localadmin value should be used when locality is not available', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'venue name', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'AUS', |
|
||||||
'country': 'Australia' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'venue name, localadmin name, region name, Australia'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('street', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'house number street name', |
|
||||||
'layer': 'address', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'AUS', |
|
||||||
'country': 'Australia' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'house number street name, locality name, region name, Australia'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('neighbourhood', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'neighbourhood name', |
|
||||||
'layer': 'neighbourhood', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'AUS', |
|
||||||
'country': 'Australia' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'neighbourhood name, locality name, region name, Australia'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('locality', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'locality name', |
|
||||||
'layer': 'locality', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'AUS', |
|
||||||
'country': 'Australia' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'locality name, region name, Australia'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('localadmin', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'localadmin name', |
|
||||||
'layer': 'localadmin', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'AUS', |
|
||||||
'country': 'Australia' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'localadmin name, region name, Australia'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('county', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'county name', |
|
||||||
'layer': 'county', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'AUS', |
|
||||||
'country': 'Australia' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'county name, region name, Australia'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('macrocounty', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'macrocounty name', |
|
||||||
'layer': 'macrocounty', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'AUS', |
|
||||||
'country': 'Australia' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'macrocounty name, region name, Australia'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('region', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'region name', |
|
||||||
'layer': 'region', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'AUS', |
|
||||||
'country': 'Australia' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'region name, Australia'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('macroregion', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'macroregion name', |
|
||||||
'layer': 'macroregion', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'AUS', |
|
||||||
'country': 'Australia' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'macroregion name, Australia'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('country', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'Australia', |
|
||||||
'layer': 'country', |
|
||||||
'postalcode': 'postalcode', |
|
||||||
'country_a': 'AUS', |
|
||||||
'country': 'Australia' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'Australia'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.all = function (tape, common) { |
|
||||||
|
|
||||||
function test(name, testFunction) { |
|
||||||
return tape('label generator (AUS): ' + name, testFunction); |
|
||||||
} |
|
||||||
|
|
||||||
for( var testCase in module.exports.tests ){ |
|
||||||
module.exports.tests[testCase](test, common); |
|
||||||
} |
|
||||||
}; |
|
@ -1,205 +0,0 @@ |
|||||||
var generator = require('../../../helper/labelGenerator'); |
|
||||||
|
|
||||||
module.exports.tests = {}; |
|
||||||
|
|
||||||
module.exports.tests.interface = function(test, common) { |
|
||||||
test('interface', function(t) { |
|
||||||
t.equal(typeof generator, 'function', 'valid function'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.tests.canada = function(test, common) { |
|
||||||
test('venue', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'venue name', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'venue name, locality name, region abbr, Canada'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('street', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'house number street name', |
|
||||||
'layer': 'address', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'house number street name, locality name, region abbr, Canada'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('neighbourhood', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'neighbourhood name', |
|
||||||
'layer': 'neighbourhood', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'neighbourhood name, locality name, region abbr, Canada'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('locality', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'locality name', |
|
||||||
'layer': 'locality', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'locality name, region abbr, Canada'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('localadmin', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'localadmin name', |
|
||||||
'layer': 'localadmin', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'localadmin name, region abbr, Canada'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('county', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'county name', |
|
||||||
'layer': 'county', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'county name, region abbr, Canada'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('macrocounty', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'macrocounty name', |
|
||||||
'layer': 'macrocounty', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'macrocounty name, region abbr, Canada'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('region', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'region name', |
|
||||||
'layer': 'region', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'region name, Canada'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('macroregion', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'macroregion name', |
|
||||||
'layer': 'macroregion', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'macroregion name, Canada'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('country', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'Canada', |
|
||||||
'layer': 'country', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'Canada'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('region should be used when region_a is not available', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'locality name', |
|
||||||
'layer': 'region', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'locality name, region name, Canada', 'region should be used'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.all = function (tape, common) { |
|
||||||
|
|
||||||
function test(name, testFunction) { |
|
||||||
return tape('label generator (CAN): ' + name, testFunction); |
|
||||||
} |
|
||||||
|
|
||||||
for( var testCase in module.exports.tests ){ |
|
||||||
module.exports.tests[testCase](test, common); |
|
||||||
} |
|
||||||
}; |
|
@ -1,201 +0,0 @@ |
|||||||
|
|
||||||
var generator = require('../../../helper/labelGenerator'); |
|
||||||
|
|
||||||
module.exports.tests = {}; |
|
||||||
|
|
||||||
module.exports.tests.interface = function(test, common) { |
|
||||||
test('interface', function(t) { |
|
||||||
t.equal(typeof generator, 'function', 'valid function'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.tests.united_kingdom = function(test, common) { |
|
||||||
test('venue', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'venue name', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'GBR', |
|
||||||
'country': 'United Kingdom' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'venue name, locality name, macroregion name, United Kingdom'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('localadmin value should be used when locality is not available', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'venue name', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'GBR', |
|
||||||
'country': 'United Kingdom' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'venue name, localadmin name, macroregion name, United Kingdom'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('street', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'house number street name', |
|
||||||
'layer': 'address', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'GBR', |
|
||||||
'country': 'United Kingdom' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'house number street name, locality name, macroregion name, United Kingdom'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('neighbourhood', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'neighbourhood name', |
|
||||||
'layer': 'neighbourhood', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'GBR', |
|
||||||
'country': 'United Kingdom' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'neighbourhood name, locality name, macroregion name, United Kingdom'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('locality', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'locality name', |
|
||||||
'layer': 'locality', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'GBR', |
|
||||||
'country': 'United Kingdom' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'locality name, macroregion name, United Kingdom'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('localadmin', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'localadmin name', |
|
||||||
'layer': 'localadmin', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'GBR', |
|
||||||
'country': 'United Kingdom' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'localadmin name, macroregion name, United Kingdom'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('county', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'county name', |
|
||||||
'layer': 'county', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'GBR', |
|
||||||
'country': 'United Kingdom' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'county name, macroregion name, United Kingdom'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('macrocounty', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'macrocounty name', |
|
||||||
'layer': 'macrocounty', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'GBR', |
|
||||||
'country': 'United Kingdom' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'macrocounty name, macroregion name, United Kingdom'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('region', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'region name', |
|
||||||
'layer': 'region', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'GBR', |
|
||||||
'country': 'United Kingdom' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'region name, macroregion name, United Kingdom'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('macroregion', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'macroregion name', |
|
||||||
'layer': 'macroregion', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'GBR', |
|
||||||
'country': 'United Kingdom' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'macroregion name, United Kingdom'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('country', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'United Kingdom', |
|
||||||
'layer': 'country', |
|
||||||
'postalcode': 'postalcode', |
|
||||||
'country_a': 'GBR', |
|
||||||
'country': 'United Kingdom' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'United Kingdom'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.all = function (tape, common) { |
|
||||||
|
|
||||||
function test(name, testFunction) { |
|
||||||
return tape('label generator (GBR): ' + name, testFunction); |
|
||||||
} |
|
||||||
|
|
||||||
for( var testCase in module.exports.tests ){ |
|
||||||
module.exports.tests[testCase](test, common); |
|
||||||
} |
|
||||||
}; |
|
@ -1,263 +0,0 @@ |
|||||||
var generator = require('../../../helper/labelGenerator'); |
|
||||||
|
|
||||||
module.exports.tests = {}; |
|
||||||
|
|
||||||
module.exports.tests.interface = function(test, common) { |
|
||||||
test('interface', function(t) { |
|
||||||
t.equal(typeof generator, 'function', 'valid function'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.tests.united_states = function(test, common) { |
|
||||||
test('venue', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'venue name', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'venue name, locality name, region abbr, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('localadmin value should be used when there is no locality', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'venue name', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'venue name, localadmin name, region abbr, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('county value should be used when there is no localadmin', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'venue name', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'venue name, county name, region abbr, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('street', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'house number street name', |
|
||||||
'layer': 'address', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'house number street name, locality name, region abbr, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('neighbourhood', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'neighbourhood name', |
|
||||||
'layer': 'neighbourhood', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'neighbourhood name, locality name, region abbr, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('venue in borough', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'venue name', |
|
||||||
'layer': 'borough', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'borough': 'borough name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'venue name, borough name, locality name, region abbr, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('locality', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'locality name', |
|
||||||
'layer': 'locality', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'locality name, region abbr, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('localadmin', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'localadmin name', |
|
||||||
'layer': 'localadmin', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'localadmin name, region abbr, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('county', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'county name', |
|
||||||
'layer': 'county', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'county name, region abbr, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('macrocounty', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'macrocounty name', |
|
||||||
'layer': 'macrocounty', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'macrocounty name, region abbr, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('region', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'region name', |
|
||||||
'layer': 'region', |
|
||||||
'region_a': 'region abbr', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'region name, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('macroregion', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'macroregion name', |
|
||||||
'layer': 'macroregion', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'macroregion name, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('country', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'United States', |
|
||||||
'layer': 'country', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'United States'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('region should be used when region_a is not available', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'locality name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'locality name, region name, USA', 'region should be used'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.all = function (tape, common) { |
|
||||||
|
|
||||||
function test(name, testFunction) { |
|
||||||
return tape('label generator (USA): ' + name, testFunction); |
|
||||||
} |
|
||||||
|
|
||||||
for( var testCase in module.exports.tests ){ |
|
||||||
module.exports.tests[testCase](test, common); |
|
||||||
} |
|
||||||
}; |
|
@ -1,200 +0,0 @@ |
|||||||
|
|
||||||
var generator = require('../../../helper/labelGenerator'); |
|
||||||
|
|
||||||
module.exports.tests = {}; |
|
||||||
|
|
||||||
module.exports.tests.interface = function(test, common) { |
|
||||||
test('interface', function(t) { |
|
||||||
t.equal(typeof generator, 'function', 'valid function'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.tests.default_country = function(test, common) { |
|
||||||
test('venue', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'venue name', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'country code', |
|
||||||
'country': 'country name' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'venue name, locality name, country name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('localadmin value should be used when locality is not available', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'venue name', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'country code', |
|
||||||
'country': 'country name' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'venue name, localadmin name, country name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('street', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'house number street name', |
|
||||||
'layer': 'address', |
|
||||||
'housenumber': 'house number', |
|
||||||
'street': 'street name', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'country code', |
|
||||||
'country': 'country name' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'house number street name, locality name, country name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('neighbourhood', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'neighbourhood name', |
|
||||||
'layer': 'neighbourhood', |
|
||||||
'neighbourhood': 'neighbourhood name', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'country code', |
|
||||||
'country': 'country name' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'neighbourhood name, locality name, country name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('locality', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'locality name', |
|
||||||
'layer': 'locality', |
|
||||||
'locality': 'locality name', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'country code', |
|
||||||
'country': 'country name' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'locality name, country name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('localadmin', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'localadmin name', |
|
||||||
'layer': 'localadmin', |
|
||||||
'localadmin': 'localadmin name', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'country code', |
|
||||||
'country': 'country name' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'localadmin name, country name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('county', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'county name', |
|
||||||
'layer': 'county', |
|
||||||
'county': 'county name', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'country code', |
|
||||||
'country': 'country name' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'county name, country name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('macrocounty', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'macrocounty name', |
|
||||||
'layer': 'macrocounty', |
|
||||||
'macrocounty': 'macrocounty name', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'country code', |
|
||||||
'country': 'country name' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'macrocounty name, country name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('region', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'region name', |
|
||||||
'layer': 'region', |
|
||||||
'region': 'region name', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'country code', |
|
||||||
'country': 'country name' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'region name, country name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('macroregion', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'macroregion name', |
|
||||||
'layer': 'macroregion', |
|
||||||
'macroregion': 'macroregion name', |
|
||||||
'country_a': 'country code', |
|
||||||
'country': 'country name' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'macroregion name, country name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('country layer labels should only use the `country` field and not the `name`', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'source country name', |
|
||||||
'layer': 'country', |
|
||||||
'country_a': 'country code', |
|
||||||
'country': 'hierarchy country name' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'hierarchy country name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.all = function (tape, common) { |
|
||||||
|
|
||||||
function test(name, testFunction) { |
|
||||||
return tape('label generator: ' + name, testFunction); |
|
||||||
} |
|
||||||
|
|
||||||
for( var testCase in module.exports.tests ){ |
|
||||||
module.exports.tests[testCase](test, common); |
|
||||||
} |
|
||||||
}; |
|
@ -1,127 +0,0 @@ |
|||||||
var generator = require('../../../helper/labelGenerator'); |
|
||||||
|
|
||||||
module.exports.tests = {}; |
|
||||||
|
|
||||||
module.exports.tests.interface = function(test, common) { |
|
||||||
test('interface', function(t) { |
|
||||||
t.equal(typeof generator, 'function', 'valid function'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.tests.canada = function(test, common) { |
|
||||||
test('venue', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'Tim Horton\'s', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': '1', |
|
||||||
'street': 'Main St', |
|
||||||
'neighbourhood': 'College Heights', |
|
||||||
'locality': 'Thunder Bay', |
|
||||||
'region_a': 'ON', |
|
||||||
'region': 'Ontario', |
|
||||||
'country_a': 'CAN', |
|
||||||
'country': 'Canada' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'Tim Horton\'s, Thunder Bay, ON, Canada'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('address', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': '1 Main St', |
|
||||||
'layer': 'venue', |
|
||||||
'housenumber': '1', |
|
||||||
'street': 'Main St', |
|
||||||
'locality': 'Truth or Consequences', |
|
||||||
'region_a': 'NM', |
|
||||||
'region': 'New Mexico', |
|
||||||
'country_a': 'USA', |
|
||||||
'country': 'United States' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'1 Main St, Truth or Consequences, NM, USA'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.tests.france = function(test, common) { |
|
||||||
test('eiffel tower', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'Tour Eiffel', |
|
||||||
'layer': 'venue', |
|
||||||
'neighbourhood': 'Quartier du Gros-Caillou', |
|
||||||
'locality': 'Paris', |
|
||||||
'region': 'Paris', |
|
||||||
'country_a': 'FRA', |
|
||||||
'country': 'France' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'Tour Eiffel, Paris, France'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('France street address', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': '74 rue de rivoli', |
|
||||||
'layer': 'address', |
|
||||||
'housenumber': '74', |
|
||||||
'street': 'Rue de Rivoli', |
|
||||||
'neighbourhood': 'Quartier Saint-Merri', |
|
||||||
'locality': 'Paris', |
|
||||||
'region': 'Paris', |
|
||||||
'country_a': 'FRA', |
|
||||||
'country': 'France' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'74 rue de rivoli, Paris, France'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('France neighbourhood', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'Grange aux Belles Terrage', |
|
||||||
'layer': 'neighbourhood', |
|
||||||
'neighbourhood': 'Grange aux Belles Terrage', |
|
||||||
'locality': 'Paris', |
|
||||||
'region': 'Paris', |
|
||||||
'country_a': 'FRA', |
|
||||||
'country': 'France' |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'Grange aux Belles Terrage, Paris, France'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
test('Luxembourg (the city) in Luxembourg', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'Luxembourg', |
|
||||||
'layer': 'locality', |
|
||||||
'locality': 'Luxembourg', |
|
||||||
'country_a': 'LUX', |
|
||||||
'country': 'Luxembourg' |
|
||||||
}; |
|
||||||
// console.error(generator(doc));
|
|
||||||
t.equal(generator(doc),'Luxembourg, Luxembourg'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.tests.name_only = function(test, common) { |
|
||||||
test('name-only results (no admin fields) should not include extraneous comma', function(t) { |
|
||||||
var doc = { |
|
||||||
'name': 'Result name', |
|
||||||
}; |
|
||||||
t.equal(generator(doc),'Result name'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.all = function (tape, common) { |
|
||||||
|
|
||||||
function test(name, testFunction) { |
|
||||||
return tape('label generator (CAN): ' + name, testFunction); |
|
||||||
} |
|
||||||
|
|
||||||
for( var testCase in module.exports.tests ){ |
|
||||||
module.exports.tests[testCase](test, common); |
|
||||||
} |
|
||||||
}; |
|
@ -1,45 +0,0 @@ |
|||||||
var schemas = require('../../../helper/labelSchema'); |
|
||||||
var alpha3 = require('../mock/alpha3.json'); |
|
||||||
|
|
||||||
module.exports.tests = {}; |
|
||||||
|
|
||||||
module.exports.tests.interface = function(test, common) { |
|
||||||
test('interface', function(t) { |
|
||||||
t.equal(typeof schemas, 'object', 'valid object'); |
|
||||||
t.equal(schemas.hasOwnProperty('default'), true, 'has default defined'); |
|
||||||
t.end(); |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.tests.supported_countries = function(test, common) { |
|
||||||
test('supported countries', function(t) { |
|
||||||
var supported_countries = Object.keys(schemas); |
|
||||||
|
|
||||||
t.notEquals(supported_countries.indexOf('USA'), -1); |
|
||||||
t.notEquals(supported_countries.indexOf('CAN'), -1); |
|
||||||
t.notEquals(supported_countries.indexOf('GBR'), -1); |
|
||||||
t.notEquals(supported_countries.indexOf('AUS'), -1); |
|
||||||
t.notEquals(supported_countries.indexOf('default'), -1); |
|
||||||
t.equals(supported_countries.length, 5); |
|
||||||
|
|
||||||
t.equals(Object.keys(schemas.USA).length, 4); |
|
||||||
t.equals(Object.keys(schemas.CAN).length, 3); |
|
||||||
t.equals(Object.keys(schemas.GBR).length, 3); |
|
||||||
t.equals(Object.keys(schemas.AUS).length, 3); |
|
||||||
t.equals(Object.keys(schemas.default).length, 2); |
|
||||||
|
|
||||||
t.end(); |
|
||||||
|
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
module.exports.all = function (tape, common) { |
|
||||||
|
|
||||||
function test(name, testFunction) { |
|
||||||
return tape('schemas: ' + name, testFunction); |
|
||||||
} |
|
||||||
|
|
||||||
for( var testCase in module.exports.tests ){ |
|
||||||
module.exports.tests[testCase](test, common); |
|
||||||
} |
|
||||||
}; |
|
@ -0,0 +1,107 @@ |
|||||||
|
module.exports.tests = {}; |
||||||
|
|
||||||
|
module.exports.tests.serialization = function(test, common) { |
||||||
|
test('undefined res should not throw an exception', function(t) { |
||||||
|
var assignLabels = require('../../../middleware/assignLabels')(function(){}); |
||||||
|
|
||||||
|
function testIt() { |
||||||
|
assignLabels(undefined, {}, function() {}); |
||||||
|
} |
||||||
|
|
||||||
|
t.doesNotThrow(testIt, 'an exception should not have been thrown'); |
||||||
|
t.end(); |
||||||
|
|
||||||
|
}); |
||||||
|
|
||||||
|
test('res without body should not throw an exception', function(t) { |
||||||
|
var assignLabels = require('../../../middleware/assignLabels')(function(){}); |
||||||
|
|
||||||
|
function testIt() { |
||||||
|
assignLabels({}, {}, function() {}); |
||||||
|
} |
||||||
|
|
||||||
|
t.doesNotThrow(testIt, 'an exception should not have been thrown'); |
||||||
|
t.end(); |
||||||
|
|
||||||
|
}); |
||||||
|
|
||||||
|
test('res.body without features should not throw an exception', function(t) { |
||||||
|
var assignLabels = require('../../../middleware/assignLabels')(function(){}); |
||||||
|
|
||||||
|
function testIt() { |
||||||
|
assignLabels({ body: {} }, {}, function() {}); |
||||||
|
} |
||||||
|
|
||||||
|
t.doesNotThrow(testIt, 'an exception should not have been thrown'); |
||||||
|
t.end(); |
||||||
|
|
||||||
|
}); |
||||||
|
|
||||||
|
test('labels should be assigned to all results', function(t) { |
||||||
|
var labelGenerator = function(properties) { |
||||||
|
if (properties.id === 1) { |
||||||
|
return 'label 1'; |
||||||
|
} |
||||||
|
if (properties.id === 2) { |
||||||
|
return 'label 2'; |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
var assignLabels = require('../../../middleware/assignLabels')(labelGenerator); |
||||||
|
|
||||||
|
var input = { |
||||||
|
body: { |
||||||
|
features: [ |
||||||
|
{ |
||||||
|
properties: { |
||||||
|
id: 1 |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
properties: { |
||||||
|
id: 2 |
||||||
|
} |
||||||
|
} |
||||||
|
] |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
var expected = { |
||||||
|
body: { |
||||||
|
features: [ |
||||||
|
{ |
||||||
|
properties: { |
||||||
|
id: 1, |
||||||
|
label: 'label 1' |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
properties: { |
||||||
|
id: 2, |
||||||
|
label: 'label 2' |
||||||
|
} |
||||||
|
} |
||||||
|
] |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
assignLabels({}, input, function () { |
||||||
|
t.deepEqual(input, expected); |
||||||
|
t.end(); |
||||||
|
}); |
||||||
|
|
||||||
|
}); |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
module.exports.all = function (tape, common) { |
||||||
|
|
||||||
|
function test(name, testFunction) { |
||||||
|
return tape('[middleware] assignLabels: ' + name, testFunction); |
||||||
|
} |
||||||
|
|
||||||
|
for( var testCase in module.exports.tests ){ |
||||||
|
module.exports.tests[testCase](test, common); |
||||||
|
} |
||||||
|
}; |
Loading…
Reference in new issue