From 905f6434db7510ddb60ba66783bf35ffc020e127 Mon Sep 17 00:00:00 2001 From: Charlotte Vermandel Date: Thu, 1 Dec 2022 14:44:03 +0100 Subject: [PATCH] Fix _geo points renamed in response hits --- .../__tests__/geo-adapter.tests.ts | 52 +++++++++++++++++++ .../geo-reponse-adapter.ts | 13 ++--- 2 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 src/adapter/search-response-adapter/__tests__/geo-adapter.tests.ts diff --git a/src/adapter/search-response-adapter/__tests__/geo-adapter.tests.ts b/src/adapter/search-response-adapter/__tests__/geo-adapter.tests.ts new file mode 100644 index 00000000..9b1f1219 --- /dev/null +++ b/src/adapter/search-response-adapter/__tests__/geo-adapter.tests.ts @@ -0,0 +1,52 @@ +import { adaptGeoResponse } from '../geo-reponse-adapter' + +describe('Geopoint adapter', () => { + test('_geoloc field should be created in hit object with _geo fields', () => { + const hits = [ + { + id: 2, + _geo: { + lat: 1, + lng: 2, + }, + _formatted: { + _geo: { + lat: 1, + lng: 2, + }, + }, + }, + ] + + const adaptedHits = adaptGeoResponse(hits) + + expect(adaptedHits[0]._geoloc).toEqual(hits[0]._geo) + expect(adaptedHits[0]._geo).toEqual(hits[0]._geo) + expect(adaptedHits[0]._formatted._geoloc).toEqual(hits[0]._formatted._geo) + expect(adaptedHits[0]._formatted._geo).toEqual(hits[0]._formatted._geo) + expect(adaptedHits[0].objectID).toBeDefined() + expect(adaptedHits[0]._formatted.objectID).toEqual(adaptedHits[0].objectID) + }) + + test('_geoloc field should not be created in hit object without _geo fields', () => { + const hits = [ + { + id: 2, + }, + { + id: 1, + _formatted: {}, + }, + ] + + const adaptedHits = adaptGeoResponse(hits) + + expect(adaptedHits[0]._geoloc).toBeUndefined() + expect(adaptedHits[0]._geo).toBeUndefined() + expect(adaptedHits[0]._formatted).toBeUndefined() + expect(adaptedHits[1]._geoloc).toBeUndefined() + expect(adaptedHits[1]._geo).toBeUndefined() + expect(adaptedHits[1]._formatted._geoloc).toBeUndefined() + expect(adaptedHits[1]._formatted._geo).toBeUndefined() + }) +}) diff --git a/src/adapter/search-response-adapter/geo-reponse-adapter.ts b/src/adapter/search-response-adapter/geo-reponse-adapter.ts index e490bb71..fbda65e4 100644 --- a/src/adapter/search-response-adapter/geo-reponse-adapter.ts +++ b/src/adapter/search-response-adapter/geo-reponse-adapter.ts @@ -4,14 +4,15 @@ */ export function adaptGeoResponse(hits: any[]): Array> { for (let i = 0; i < hits.length; i++) { + const objectID = `${i + Math.random() * 1000000}` if (hits[i]._geo) { - hits[i]._geoloc = { - lat: hits[i]._geo.lat, - lng: hits[i]._geo.lng, - } + hits[i]._geoloc = hits[i]._geo + hits[i].objectID = objectID + } - hits[i].objectID = `${i + Math.random() * 1000000}` - delete hits[i]._geo + if (hits[i]._formatted?._geo) { + hits[i]._formatted._geoloc = hits[i]._formatted._geo + hits[i]._formatted.objectID = objectID } } return hits