var VariableStore = require('pelias-query').Vars; var text_parser = require('../../../query/text_parser'); module.exports.tests = {}; module.exports.tests.interface = function(test, common) { test('valid interface', function(t) { t.equal(typeof text_parser, 'function', 'valid function'); t.end(); }); }; // module.exports.tests.query = function(test, common) { // test('parsed_text without properties should leave vs properties unset', function(t) { // var parsed_text = {}; // var vs = new VariableStore(); // // text_parser(parsed_text, vs); // // t.false(vs.isset('input:query')); // t.false(vs.isset('input:category')); // t.false(vs.isset('input:housenumber')); // t.false(vs.isset('input:street')); // t.false(vs.isset('input:neighbourhood')); // t.false(vs.isset('input:borough')); // t.false(vs.isset('input:postcode')); // t.false(vs.isset('input:locality')); // t.false(vs.isset('input:county')); // t.false(vs.isset('input:region')); // t.false(vs.isset('input:country')); // t.end(); // // }); // // test('parsed_text without properties should leave vs properties unset', function(t) { // var parsed_text = { // query: 'query value', // category: 'category value', // number: 'number value', // street: 'street value', // neighbourhood: 'neighbourhood value', // borough: 'borough value', // postalcode: 'postalcode value', // city: 'city value', // county: 'county value', // state: 'state value', // country: 'country value' // }; // var vs = new VariableStore(); // // text_parser(parsed_text, vs); // // t.equals(vs.var('input:query').toString(), 'query value'); // t.equals(vs.var('input:category').toString(), 'category value'); // t.equals(vs.var('input:housenumber').toString(), 'number value'); // t.equals(vs.var('input:street').toString(), 'street value'); // t.equals(vs.var('input:neighbourhood').toString(), 'neighbourhood value'); // t.equals(vs.var('input:borough').toString(), 'borough value'); // t.equals(vs.var('input:postcode').toString(), 'postalcode value'); // t.equals(vs.var('input:locality').toString(), 'city value'); // t.equals(vs.var('input:county').toString(), 'county value'); // t.equals(vs.var('input:region').toString(), 'state value'); // t.equals(vs.var('input:country').toString(), 'country value'); // t.end(); // // }); // // }; module.exports.tests.housenumber_special_cases = function(test, common) { test('numeric query with street but no number should reassign query to housenumber', function(t) { var parsed_text = { query: '17', // no house number set street: 'street value' }; var vs = new VariableStore(); text_parser(parsed_text, vs); t.false(vs.isset('input:query')); t.equals(vs.var('input:housenumber').toString(), '17'); t.equals(vs.var('input:street').toString(), 'street value'); t.end(); }); test('numeric query with street but without number should not change anything', function(t) { var parsed_text = { query: '17', number: 'housenumber value', street: 'street value' // no number or street }; var vs = new VariableStore(); text_parser(parsed_text, vs); t.equals(vs.var('input:query').toString(), '17'); t.equals(vs.var('input:housenumber').toString(), 'housenumber value'); t.equals(vs.var('input:street').toString(), 'street value'); t.end(); }); test('numeric query with number but without street should not change anything', function(t) { var parsed_text = { query: '17', number: 'number value' // no number or street }; var vs = new VariableStore(); text_parser(parsed_text, vs); t.equals(vs.var('input:query').toString(), '17'); t.equals(vs.var('input:housenumber').toString(), 'number value'); t.false(vs.isset('input:street')); t.end(); }); test('numeric query without street or number should not change anything', function(t) { var parsed_text = { query: '17' // no number or street }; var vs = new VariableStore(); text_parser(parsed_text, vs); t.equals(vs.var('input:query').toString(), '17'); t.false(vs.isset('input:housenumber')); t.false(vs.isset('input:street')); t.end(); }); test('non-numeric query with street but no number should not change anything', function(t) { var parsed_text = { query: '13 this is 15 not a number 17', street: 'street value' }; var vs = new VariableStore(); text_parser(parsed_text, vs); t.equals(vs.var('input:query').toString(), '13 this is 15 not a number 17'); t.false(vs.isset('input:housenumber')); t.equals(vs.var('input:street').toString(), 'street value'); t.end(); }); }; module.exports.all = function (tape, common) { function test(name, testFunction) { return tape('text_parser ' + name, testFunction); } for( var testCase in module.exports.tests ){ module.exports.tests[testCase](test, common); } };