mirror of https://github.com/pelias/api.git
Peter Johnson
7 years ago
committed by
GitHub
17 changed files with 298 additions and 82 deletions
@ -0,0 +1,47 @@ |
|||||||
|
'use strict'; |
||||||
|
|
||||||
|
const _ = require('lodash'); |
||||||
|
|
||||||
|
function getStringValue(property) { |
||||||
|
// numeric value, cast to string
|
||||||
|
if (_.isNumber(property)) { |
||||||
|
return _.toString(property); |
||||||
|
} |
||||||
|
|
||||||
|
// isEmpty check works for all types of values: strings, arrays, objects
|
||||||
|
if (_.isEmpty(property)) { |
||||||
|
return ''; |
||||||
|
} |
||||||
|
|
||||||
|
if (_.isString(property)) { |
||||||
|
return property; |
||||||
|
} |
||||||
|
|
||||||
|
// array value, take first item in array (at this time only used for admin & name values)
|
||||||
|
if (_.isArray(property)) { |
||||||
|
return property[0]; |
||||||
|
} |
||||||
|
|
||||||
|
return _.toString(property); |
||||||
|
} |
||||||
|
|
||||||
|
function getArrayValue(property) { |
||||||
|
// numeric value, cast to array
|
||||||
|
if (_.isNumber(property)) { |
||||||
|
return [property]; |
||||||
|
} |
||||||
|
|
||||||
|
// isEmpty check works for all types of values: strings, arrays, objects
|
||||||
|
if (_.isEmpty(property)) { |
||||||
|
return []; |
||||||
|
} |
||||||
|
|
||||||
|
if (_.isArray(property)) { |
||||||
|
return property; |
||||||
|
} |
||||||
|
|
||||||
|
return [property]; |
||||||
|
} |
||||||
|
|
||||||
|
module.exports.getStringValue = getStringValue; |
||||||
|
module.exports.getArrayValue = getArrayValue; |
@ -0,0 +1,44 @@ |
|||||||
|
const field = require('../../../helper/fieldValue'); |
||||||
|
|
||||||
|
module.exports.tests = {}; |
||||||
|
|
||||||
|
module.exports.tests.getStringValue = function(test) { |
||||||
|
test('getStringValue', function(t) { |
||||||
|
t.equal(field.getStringValue([]), '', 'empty array'); |
||||||
|
t.equal(field.getStringValue(''), '', 'empty string'); |
||||||
|
t.equal(field.getStringValue('foo'), 'foo', 'string'); |
||||||
|
t.equal(field.getStringValue(['foo','bar']), 'foo', 'array'); |
||||||
|
t.equal(field.getStringValue(['']), '', 'array with empty string'); |
||||||
|
t.equal(field.getStringValue(-0), '-0', 'number'); |
||||||
|
t.equal(field.getStringValue(+0), '0', 'number'); |
||||||
|
|
||||||
|
// note: this behaviour is not desirable, it was inherited during a refactor
|
||||||
|
// see: https://github.com/pelias/api/pull/1102
|
||||||
|
t.equal(field.getStringValue({foo: 'bar'}), '[object Object]', '_.toString'); |
||||||
|
t.end(); |
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
module.exports.tests.getArrayValue = function(test) { |
||||||
|
test('getArrayValue', function(t) { |
||||||
|
t.deepEqual(field.getArrayValue([]), [], 'empty array'); |
||||||
|
t.deepEqual(field.getArrayValue(''), [], 'empty string'); |
||||||
|
t.deepEqual(field.getArrayValue('foo'), ['foo'], 'string'); |
||||||
|
t.deepEqual(field.getArrayValue(['foo','bar']), ['foo','bar'], 'array'); |
||||||
|
t.deepEqual(field.getArrayValue(['']), [''], 'array with empty string'); |
||||||
|
t.deepEqual(field.getArrayValue(-0), [0], 'number'); |
||||||
|
t.deepEqual(field.getArrayValue(+0), [0], 'number'); |
||||||
|
t.deepEqual(field.getArrayValue({foo: 'bar'}), [{foo: 'bar'}], '[*]'); |
||||||
|
t.end(); |
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
module.exports.all = function (tape, common) { |
||||||
|
function test(name, testFunction) { |
||||||
|
return tape('fieldValue: ' + name, testFunction); |
||||||
|
} |
||||||
|
|
||||||
|
for( var testCase in module.exports.tests ){ |
||||||
|
module.exports.tests[testCase](test, common); |
||||||
|
} |
||||||
|
}; |
Loading…
Reference in new issue