From a0579d8a03094e9bc19300b95da44e10127a9a09 Mon Sep 17 00:00:00 2001 From: Julian Simioni Date: Mon, 20 Jul 2026 13:16:12 -0400 Subject: [PATCH] chore(fixtures): Unify on using pretty diff and Javascript fixtures These fixtures have been a considerable source of pain and annoyance when working with query code. This is a first step at some quality of life improvements. Some fixtures were written as JSON, which seems like the right call (Elasticsearch queries are JSON), but in practice means we can't have comments, etc, and different fixtures have different syntax. Most are Javascript, and after this commit all of them are. We also use difflet for better visual diffs, which has been available for a while in this repo but never really used. --- .../fixture/autocomplete_custom_boosts.js | 96 ++++++++++++++++ .../fixture/autocomplete_custom_boosts.json | 94 ---------------- .../unit/fixture/search_with_custom_boosts.js | 105 ++++++++++++++++++ .../fixture/search_with_custom_boosts.json | 91 --------------- test/unit/query/autocomplete.js | 36 +++--- .../query/autocomplete_with_custom_boosts.js | 4 +- test/unit/query/search.js | 24 ++-- test/unit/query/search_pelias_parser.js | 24 ++-- test/unit/query/search_with_custom_boosts.js | 4 +- test/unit/run.js | 7 ++ 10 files changed, 254 insertions(+), 231 deletions(-) create mode 100644 test/unit/fixture/autocomplete_custom_boosts.js delete mode 100644 test/unit/fixture/autocomplete_custom_boosts.json create mode 100644 test/unit/fixture/search_with_custom_boosts.js delete mode 100644 test/unit/fixture/search_with_custom_boosts.json diff --git a/test/unit/fixture/autocomplete_custom_boosts.js b/test/unit/fixture/autocomplete_custom_boosts.js new file mode 100644 index 000000000..c1bfc246a --- /dev/null +++ b/test/unit/fixture/autocomplete_custom_boosts.js @@ -0,0 +1,96 @@ +module.exports = { + 'type': 'autocomplete', + 'body': { + 'query': { + 'bool': { + 'must': [ + { + 'multi_match': { + 'fields': ['phrase.default', 'phrase.en'], + 'analyzer': 'peliasQuery', + 'query': 'foo', + 'boost': 1, + 'type': 'phrase', + 'slop': 3 + } + } + ], + 'should': [ + { + 'function_score': { + 'query': { + 'match_all': {} + }, + 'max_boost': 20, + 'functions': [ + { + 'field_value_factor': { + 'modifier': 'log1p', + 'field': 'popularity', + 'missing': 1 + }, + 'weight': 1 + } + ], + 'score_mode': 'first', + 'boost_mode': 'replace' + } + }, + { + 'function_score': { + 'query': { + 'match_all': {} + }, + 'max_boost': 20, + 'functions': [ + { + 'field_value_factor': { + 'modifier': 'log1p', + 'field': 'population', + 'missing': 1 + }, + 'weight': 3 + } + ], + 'score_mode': 'first', + 'boost_mode': 'replace' + } + }, + { + 'function_score': { + 'query': { + 'match_all': {} + }, + 'min_score': 1, + 'boost': 5, + 'max_boost': 50, + 'score_mode': 'sum', + 'boost_mode': 'multiply', + 'functions': [ + { + 'filter': { + 'match': { + 'source': 'openstreetmap' + } + }, + 'weight': 5 + }, + { + 'filter': { + 'match': { + 'layer': 'transit' + } + }, + 'weight': 3 + } + ] + } + } + ] + } + }, + 'size': 10, + 'track_scores': true, + 'sort': ['_score'] + } +}; diff --git a/test/unit/fixture/autocomplete_custom_boosts.json b/test/unit/fixture/autocomplete_custom_boosts.json deleted file mode 100644 index 556f1452b..000000000 --- a/test/unit/fixture/autocomplete_custom_boosts.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "type": "autocomplete", - "body": { - "query": { - "bool": { - "must": [ - { - "multi_match": { - "fields": ["phrase.default", "phrase.en"], - "analyzer": "peliasQuery", - "query": "foo", - "boost": 1, - "type": "phrase", - "slop": 3 - } - } - ], - "should": [ - { - "function_score": { - "query": { - "match_all": {} - }, - "max_boost": 20, - "functions": [ - { - "field_value_factor": { - "modifier": "log1p", - "field": "popularity", - "missing": 1 - }, - "weight": 1 - } - ], - "score_mode": "first", - "boost_mode": "replace" - } - }, - { - "function_score": { - "query": { - "match_all": {} - }, - "max_boost": 20, - "functions": [ - { - "field_value_factor": { - "modifier": "log1p", - "field": "population", - "missing": 1 - }, - "weight": 3 - } - ], - "score_mode": "first", - "boost_mode": "replace" - } - },{ - "function_score": { - "query": { - "match_all": {} - }, - "min_score": 1, - "boost": 5, - "max_boost": 50, - "score_mode": "sum", - "boost_mode": "multiply", - "functions": [{ - "filter": { - "match": { - "source": "openstreetmap" - } - }, - "weight": 5 - },{ - "filter": { - "match": { - "layer": "transit" - } - }, - "weight": 3 - }] - } - } - ] - } - }, - "size": 10, - "track_scores": true, - "sort": [ - "_score" - ] - } -} diff --git a/test/unit/fixture/search_with_custom_boosts.js b/test/unit/fixture/search_with_custom_boosts.js new file mode 100644 index 000000000..905404993 --- /dev/null +++ b/test/unit/fixture/search_with_custom_boosts.js @@ -0,0 +1,105 @@ +module.exports = { + 'type': 'search_pelias_parser', + 'body': { + 'query': { + 'bool': { + 'must': [ + { + 'match': { + 'phrase.default': { + 'query': 'test', + 'minimum_should_match': '1<-1 3<-25%', + 'analyzer': 'peliasQuery' + } + } + } + ], + 'should': [ + { + 'match_phrase': { + 'phrase.default': { + 'query': 'test', + 'analyzer': 'peliasPhrase', + 'boost': 1, + 'slop': 2 + } + } + }, + { + 'function_score': { + 'query': { + 'match_all': {} + }, + 'max_boost': 20, + 'score_mode': 'first', + 'boost_mode': 'replace', + 'functions': [ + { + 'field_value_factor': { + 'modifier': 'log1p', + 'field': 'popularity', + 'missing': 1 + }, + 'weight': 1 + } + ] + } + }, + { + 'function_score': { + 'query': { + 'match_all': {} + }, + 'max_boost': 20, + 'score_mode': 'first', + 'boost_mode': 'replace', + 'functions': [ + { + 'field_value_factor': { + 'modifier': 'log1p', + 'field': 'population', + 'missing': 1 + }, + 'weight': 2 + } + ] + } + }, + { + 'function_score': { + 'query': { + 'match_all': {} + }, + 'min_score': 1, + 'boost': 5, + 'max_boost': 50, + 'score_mode': 'sum', + 'boost_mode': 'multiply', + 'functions': [ + { + 'filter': { + 'match': { + 'source': 'openstreetmap' + } + }, + 'weight': 5 + }, + { + 'filter': { + 'match': { + 'layer': 'transit' + } + }, + 'weight': 3 + } + ] + } + } + ] + } + }, + 'sort': ['_score'], + 'size': 10, + 'track_scores': true + } +}; diff --git a/test/unit/fixture/search_with_custom_boosts.json b/test/unit/fixture/search_with_custom_boosts.json deleted file mode 100644 index 924fda28a..000000000 --- a/test/unit/fixture/search_with_custom_boosts.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "type": "search_pelias_parser", - "body": { - "query": { - "bool": { - "must": [{ - "match": { - "phrase.default": { - "query": "test", - "minimum_should_match": "1<-1 3<-25%", - "analyzer": "peliasQuery" - } - } - }], - "should": [{ - "match_phrase": { - "phrase.default": { - "query": "test", - "analyzer": "peliasPhrase", - "boost": 1, - "slop": 2 - } - } - },{ - "function_score": { - "query": { - "match_all": { } - }, - "max_boost": 20, - "score_mode": "first", - "boost_mode": "replace", - "functions": [{ - "field_value_factor": { - "modifier": "log1p", - "field": "popularity", - "missing": 1 - }, - "weight": 1 - }] - } - },{ - "function_score": { - "query": { - "match_all": { } - }, - "max_boost": 20, - "score_mode": "first", - "boost_mode": "replace", - "functions": [{ - "field_value_factor": { - "modifier": "log1p", - "field": "population", - "missing": 1 - }, - "weight": 2 - }] - } - },{ - "function_score": { - "query": { - "match_all": {} - }, - "min_score": 1, - "boost": 5, - "max_boost": 50, - "score_mode": "sum", - "boost_mode": "multiply", - "functions": [{ - "filter": { - "match": { - "source": "openstreetmap" - } - }, - "weight": 5 - },{ - "filter": { - "match": { - "layer": "transit" - } - }, - "weight": 3 - }] - } - }] - } - }, - "sort": [ "_score" ], - "size": 10, - "track_scores": true - } -} diff --git a/test/unit/query/autocomplete.js b/test/unit/query/autocomplete.js index 4651502f1..09e4deb7f 100644 --- a/test/unit/query/autocomplete.js +++ b/test/unit/query/autocomplete.js @@ -32,7 +32,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_only'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_linguistic_only'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_linguistic_only'); t.end(); }); @@ -48,7 +48,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_multiple_tokens'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_linguistic_multiple_tokens'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_linguistic_multiple_tokens'); t.end(); }); @@ -65,7 +65,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_multiple_tokens_complete_numeric'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_linguistic_multiple_tokens_complete_numeric'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_linguistic_multiple_tokens_complete_numeric'); t.end(); }); @@ -86,7 +86,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_with_admin'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_linguistic_with_admin'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_linguistic_with_admin'); t.end(); }); @@ -105,7 +105,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_final_token'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_linguistic_final_token'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_linguistic_final_token'); t.end(); }); @@ -143,7 +143,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_one_char_token'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_linguistic_one_char_token'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_linguistic_one_char_token'); t.end(); }); @@ -160,7 +160,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_two_char_token'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_linguistic_two_char_token'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_linguistic_two_char_token'); t.end(); }); @@ -176,7 +176,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_three_char_token'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_linguistic_three_char_token'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_linguistic_three_char_token'); t.end(); }); @@ -196,7 +196,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_focus'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_linguistic_focus'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_linguistic_focus'); t.end(); }); @@ -214,7 +214,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_focus_null_island'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_linguistic_focus_null_island'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_linguistic_focus_null_island'); t.end(); }); @@ -231,7 +231,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_with_source_filtering'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'valid autocomplete query with source filtering'); + common.deepEqual(t, compiled.body, expected, 'valid autocomplete query with source filtering'); t.end(); }); @@ -248,7 +248,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_with_layer_filtering'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'valid autocomplete query with layer filtering'); + common.deepEqual(t, compiled.body, expected, 'valid autocomplete query with layer filtering'); t.end(); }); @@ -267,7 +267,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_with_category_filtering'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'valid autocomplete query with category filtering'); + common.deepEqual(t, compiled.body, expected, 'valid autocomplete query with category filtering'); t.end(); }); @@ -289,7 +289,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_single_character_street'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_single_character_street'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_single_character_street'); t.end(); }); @@ -306,7 +306,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_boundary_country'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete: valid boundary.country query'); + common.deepEqual(t, compiled.body, expected, 'autocomplete: valid boundary.country query'); t.end(); }); @@ -326,7 +326,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_bbox_san_francisco'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete_linguistic_bbox_san_francisco'); + common.deepEqual(t, compiled.body, expected, 'autocomplete_linguistic_bbox_san_francisco'); t.end(); }); @@ -345,7 +345,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_linguistic_circle_san_francisco'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'query matches autocomplete_linguistic_circle_san_francisco fixture'); + common.deepEqual(t, compiled.body, expected, 'query matches autocomplete_linguistic_circle_san_francisco fixture'); t.end(); }); @@ -362,7 +362,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/autocomplete_boundary_gid'); t.deepEqual(compiled.type, 'autocomplete', 'query type set'); - t.deepEqual(compiled.body, expected, 'autocomplete: valid boundary.gid query'); + common.deepEqual(t, compiled.body, expected, 'autocomplete: valid boundary.gid query'); t.end(); }); }; diff --git a/test/unit/query/autocomplete_with_custom_boosts.js b/test/unit/query/autocomplete_with_custom_boosts.js index 3cc38ef8d..705ad53a8 100644 --- a/test/unit/query/autocomplete_with_custom_boosts.js +++ b/test/unit/query/autocomplete_with_custom_boosts.js @@ -32,7 +32,7 @@ module.exports.tests.query = function(test, common) { } }; - var expected_query = require('../fixture/autocomplete_custom_boosts.json'); + var expected_query = require('../fixture/autocomplete_custom_boosts'); const autocomplete_query_module = proxyquire('../../../query/autocomplete', { 'pelias-config': config_with_boosts @@ -40,7 +40,7 @@ module.exports.tests.query = function(test, common) { const actual_query = JSON.parse( JSON.stringify( autocomplete_query_module(clean) ) ); - t.deepEqual(actual_query, expected_query, 'autocomplete_custom_boosts'); + common.deepEqual(t, actual_query, expected_query, 'autocomplete_custom_boosts'); t.pass(); t.end(); }); diff --git a/test/unit/query/search.js b/test/unit/query/search.js index 5dac3bd93..069cd52c3 100644 --- a/test/unit/query/search.js +++ b/test/unit/query/search.js @@ -32,7 +32,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_linguistic_focus_bbox'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_linguistic_focus_bbox'); + common.deepEqual(t, compiled.body, expected, 'search_linguistic_focus_bbox'); t.end(); }); @@ -56,7 +56,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_linguistic_bbox'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_linguistic_bbox'); + common.deepEqual(t, compiled.body, expected, 'search_linguistic_bbox'); t.end(); }); @@ -75,7 +75,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_linguistic_only'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_linguistic_only'); + common.deepEqual(t, compiled.body, expected, 'search_linguistic_only'); t.end(); }); @@ -95,7 +95,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_linguistic_focus'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_linguistic_focus'); + common.deepEqual(t, compiled.body, expected, 'search_linguistic_focus'); t.end(); }); @@ -115,7 +115,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_linguistic_focus_null_island'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_linguistic_focus_null_island'); + common.deepEqual(t, compiled.body, expected, 'search_linguistic_focus_null_island'); t.end(); }); @@ -142,7 +142,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_fallback'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'fallbackQuery'); + common.deepEqual(t, compiled.body, expected, 'fallbackQuery'); t.end(); }); @@ -181,7 +181,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_boundary_country'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'search: valid boundary.country query'); + common.deepEqual(t, compiled.body, expected, 'search: valid boundary.country query'); t.end(); }); @@ -201,7 +201,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_boundary_country_multi'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'search: valid multi boundary.country query'); + common.deepEqual(t, compiled.body, expected, 'search: valid multi boundary.country query'); t.end(); }); @@ -220,7 +220,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_with_source_filtering'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'search: valid search query with source filtering'); + common.deepEqual(t, compiled.body, expected, 'search: valid search query with source filtering'); t.end(); }); @@ -239,7 +239,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_with_category_filtering'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'valid search query with category filtering'); + common.deepEqual(t, compiled.body, expected, 'valid search query with category filtering'); t.end(); }); @@ -574,7 +574,7 @@ module.exports.tests.city_country = function(test, common) { var expected = require('../fixture/search_fallback_postalcode_only'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_fallback_postalcode_only'); + common.deepEqual(t, compiled.body, expected, 'search_fallback_postalcode_only'); t.end(); }); @@ -596,7 +596,7 @@ module.exports.tests.boundary_gid = function(test, common) { var expected = require('../fixture/search_boundary_gid'); t.deepEqual(compiled.type, 'search_fallback', 'query type set'); - t.deepEqual(compiled.body, expected, 'search: valid boundary.gid filter'); + common.deepEqual(t, compiled.body, expected, 'search: valid boundary.gid filter'); t.end(); }); diff --git a/test/unit/query/search_pelias_parser.js b/test/unit/query/search_pelias_parser.js index 7c2eba0c9..19b774094 100644 --- a/test/unit/query/search_pelias_parser.js +++ b/test/unit/query/search_pelias_parser.js @@ -35,7 +35,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_linguistic_focus_bbox'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_linguistic_focus_bbox'); + common.deepEqual(t, compiled.body, expected, 'search_linguistic_focus_bbox'); t.end(); }); @@ -53,7 +53,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_linguistic_bbox'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_linguistic_bbox'); + common.deepEqual(t, compiled.body, expected, 'search_linguistic_bbox'); t.end(); }); @@ -67,7 +67,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_linguistic_only'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_linguistic_only'); + common.deepEqual(t, compiled.body, expected, 'search_linguistic_only'); t.end(); }); @@ -82,7 +82,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_linguistic_focus'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_linguistic_focus'); + common.deepEqual(t, compiled.body, expected, 'search_linguistic_focus'); t.end(); }); @@ -97,7 +97,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_linguistic_focus_null_island'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_linguistic_focus_null_island'); + common.deepEqual(t, compiled.body, expected, 'search_linguistic_focus_null_island'); t.end(); }); @@ -120,7 +120,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_full_address'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_full_address'); + common.deepEqual(t, compiled.body, expected, 'search_full_address'); t.end(); }); @@ -140,7 +140,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_partial_address'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_partial_address'); + common.deepEqual(t, compiled.body, expected, 'search_partial_address'); t.end(); }); @@ -162,7 +162,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_regions_address'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'search_regions_address'); + common.deepEqual(t, compiled.body, expected, 'search_regions_address'); t.end(); }); @@ -177,7 +177,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_boundary_country'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'search: valid boundary.country query'); + common.deepEqual(t, compiled.body, expected, 'search: valid boundary.country query'); t.end(); }); @@ -191,7 +191,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_with_source_filtering'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'search: valid search query with source filtering'); + common.deepEqual(t, compiled.body, expected, 'search: valid search query with source filtering'); t.end(); }); @@ -205,7 +205,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_with_category_filtering'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'correct search_with_category_filtering query'); + common.deepEqual(t, compiled.body, expected, 'correct search_with_category_filtering query'); t.end(); }); @@ -220,7 +220,7 @@ module.exports.tests.query = function(test, common) { var expected = require('../fixture/search_pelias_parser_boundary_gid'); t.deepEqual(compiled.type, 'search_pelias_parser', 'query type set'); - t.deepEqual(compiled.body, expected, 'search: valid boundary.gid filter'); + common.deepEqual(t, compiled.body, expected, 'search: valid boundary.gid filter'); t.end(); }); }; diff --git a/test/unit/query/search_with_custom_boosts.js b/test/unit/query/search_with_custom_boosts.js index cd2efdf33..dcd0c54d5 100644 --- a/test/unit/query/search_with_custom_boosts.js +++ b/test/unit/query/search_with_custom_boosts.js @@ -29,14 +29,14 @@ module.exports.tests.query = function(test, common) { } }; - var expected_query = require('../fixture/search_with_custom_boosts.json'); + var expected_query = require('../fixture/search_with_custom_boosts'); const search_query_module = proxyquire('../../../query/search_pelias_parser', { 'pelias-config': config_with_boosts }); const actual_query = JSON.parse( JSON.stringify( search_query_module(clean) ) ); - t.deepEqual(actual_query, expected_query, 'search_with_custom_boosts query as expected'); + common.deepEqual(t, actual_query, expected_query, 'search_with_custom_boosts query as expected'); t.pass(); t.end(); }); diff --git a/test/unit/run.js b/test/unit/run.js index 3bd6db299..580faf000 100644 --- a/test/unit/run.js +++ b/test/unit/run.js @@ -5,6 +5,13 @@ var common = { // a visual deep diff rendered using console.error() diff: function( actual, expected ){ console.error( diff.compare( actual, expected ) ); + }, + // t.deepEqual wrapper that also prints a visual diff on failure + deepEqual: function( t, actual, expected, msg ){ + if( !require('util').isDeepStrictEqual( actual, expected ) ){ + console.error( diff.compare( actual, expected ) ); + } + t.deepEqual( actual, expected, msg ); } };