diff --git a/test/unit/controller/coarse_reverse.js b/test/unit/controller/coarse_reverse.js index bb170a37..d99f2fc1 100644 --- a/test/unit/controller/coarse_reverse.js +++ b/test/unit/controller/coarse_reverse.js @@ -533,6 +533,92 @@ module.exports.tests.success_conditions = (test, common) => { }); + test('no requested layers should use everything', (t) => { + // this test is used to test coarse reverse fallback for when non-coarse reverse + // was requested but no non-coarse results were found + + // by plan'ing the number of tests, we can verify that next() was called w/o + // additional bookkeeping + t.plan(5); + + const service = (point, do_not_track, callback) => { + t.equals(do_not_track, 'do_not_track value'); + const results = { + neighbourhood: [ + { + id: 10, + name: 'neighbourhood name', + abbr: 'neighbourhood abbr' + } + ] + }; + + callback(undefined, results); + }; + + const logger = require('pelias-mock-logger')(); + + const should_execute = () => { return true; }; + const controller = proxyquire('../../../controller/coarse_reverse', { + 'pelias-logger': logger, + '../helper/logging': { + isDNT: () => { + return 'do_not_track value'; + } + } + })(service, should_execute); + + const req = { + clean: { + layers: [], + point: { + lat: 12.121212, + lon: 21.212121 + } + } + }; + + const res = { }; + + // verify that next was called + const next = () => { + t.pass('next() should have been called'); + }; + + controller(req, res, next); + + const expected = { + meta: {}, + data: [ + { + _id: '10', + _type: 'neighbourhood', + layer: 'neighbourhood', + source: 'whosonfirst', + source_id: '10', + name: { + 'default': 'neighbourhood name' + }, + phrase: { + 'default': 'neighbourhood name' + }, + parent: { + neighbourhood: ['neighbourhood name'], + neighbourhood_id: ['10'], + neighbourhood_a: ['neighbourhood abbr'] + } + } + ] + }; + + t.deepEquals(req.clean.layers, [], 'req.clean.layers should be unmodified'); + t.deepEquals(res, expected); + t.notOk(logger.hasErrorMessages()); + + t.end(); + + }); + test('layers specifying only venue, address, or street should not exclude coarse results', (t) => { // this test is used to test coarse reverse fallback for when non-coarse reverse // was requested but no non-coarse results were found