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