diff --git a/test/unit/fixture/dedupe_only_postalcode_differs.js b/test/unit/fixture/dedupe_only_postalcode_differs.js new file mode 100644 index 00000000..2cbeb4d6 --- /dev/null +++ b/test/unit/fixture/dedupe_only_postalcode_differs.js @@ -0,0 +1,27 @@ +module.exports = [ + { + '_id': '101914069', + 'layer': 'venue', + 'source': 'openstreetmap', + 'name': { + 'default': 'A place' + }, + 'parent': { + 'country_a': ['USA'] + } + }, + { + '_id': '323', + 'layer': 'venue', + 'source': 'openstreetmap', + 'name': { + 'default': 'A place' + }, + 'address_parts': { + 'zip': '97005' + }, + 'parent': { + 'country_a': ['USA'] + } + } +]; diff --git a/test/unit/middleware/dedupe.js b/test/unit/middleware/dedupe.js index 674a2b10..b1b6e9ef 100644 --- a/test/unit/middleware/dedupe.js +++ b/test/unit/middleware/dedupe.js @@ -1,6 +1,7 @@ var data = require('../fixture/dedupe_elasticsearch_results'); var nonAsciiData = require('../fixture/dedupe_elasticsearch_nonascii_results'); var customLayerData = require('../fixture/dedupe_elasticsearch_custom_layer_results'); +var onlyPostalcodeDiffers = require('../fixture/dedupe_only_postalcode_differs'); var dedupe = require('../../../middleware/dedupe')(); module.exports.tests = {}; @@ -75,6 +76,24 @@ module.exports.tests.dedupe = function(test, common) { t.end(); }); }); + + test('test records with no address except one has postalcode', function(t) { + var req = { + clean: { + size: 20 + } + }; + var res = { + data: onlyPostalcodeDiffers + }; + var expected = onlyPostalcodeDiffers[1]; // non-canonical record + + dedupe(req, res, function () { + t.equal(res.data.length, 1, 'only one result displayed'); + t.equal(res.data[0], expected, 'record with postalcode is preferred'); + t.end(); + }); + }); };