-
Notifications
You must be signed in to change notification settings - Fork 270
Expand file tree
/
Copy pathgeocoder.test.js
More file actions
32 lines (26 loc) · 1.25 KB
/
geocoder.test.js
File metadata and controls
32 lines (26 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
'use strict';
describe('geocoder.coordPreserving', () => {
beforeEach(() => {
jest.resetModules();
});
test('passes serviceUrl to nominatim and preserves exact coordinates for coordinate input', async () => {
const reverseMock = jest.fn(() => Promise.resolve([{ name: 'nom-res', center: { lat: 99, lng: 88 } }]));
const geocodeMock = jest.fn(() => Promise.resolve([]));
const nominatimFactory = jest.fn(() => ({ reverse: reverseMock, geocode: geocodeMock }));
jest.doMock('leaflet', () => ({
Control: { Geocoder: { nominatim: nominatimFactory } },
CRS: { EPSG3857: { scale: () => 1 } },
latLng: (lat, lng) => ({ lat: +lat, lng: +lng, toBounds: () => ({}) }),
extend: Object.assign
}));
const geocoder = require('../src/geocoder');
const L = require('leaflet');
const g = geocoder.coordPreserving('https://nominatim.example/');
expect(L.Control.Geocoder.nominatim).toHaveBeenCalledWith({ serviceUrl: 'https://nominatim.example/' });
const results = await g.geocode('34.129382,-118.141254');
expect(results).toHaveLength(1);
expect(results[0].center.lat).toBeCloseTo(34.129382);
expect(results[0].center.lng).toBeCloseTo(-118.141254);
expect(reverseMock).toHaveBeenCalled();
});
});