@masterportal/masterportalapi 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/.editorconfig +15 -0
  2. package/.eslintignore +6 -0
  3. package/.eslintrc +184 -0
  4. package/.husky/pre-push +4 -0
  5. package/CHANGELOG.md +217 -0
  6. package/License.txt +21 -0
  7. package/README.md +24 -0
  8. package/babel.config.json +6 -0
  9. package/example/README.md +7 -0
  10. package/example/config/localGeoJSON.js +956 -0
  11. package/example/config/portal.json +35 -0
  12. package/example/config/services.json +79 -0
  13. package/example/index.html +27 -0
  14. package/example/index.js +210 -0
  15. package/example/style.scss +59 -0
  16. package/jest.config.js +18 -0
  17. package/jest.setup.js +5 -0
  18. package/jsdoc.json +15 -0
  19. package/package.json +62 -0
  20. package/public/marker.svg +1 -0
  21. package/public/stringMarker.js +5 -0
  22. package/src/crs.js +122 -0
  23. package/src/defaults.js +38 -0
  24. package/src/index.js +30 -0
  25. package/src/layer/geojson/index.js +109 -0
  26. package/src/layer/geojson/style.js +61 -0
  27. package/src/layer/lib.js +32 -0
  28. package/src/layer/oaf.js +207 -0
  29. package/src/layer/terrain.js +72 -0
  30. package/src/layer/tileset.js +71 -0
  31. package/src/layer/vector.js +48 -0
  32. package/src/layer/vectorBase.js +39 -0
  33. package/src/layer/wfs.js +218 -0
  34. package/src/layer/wms.js +185 -0
  35. package/src/lib/coordsToPairs.js +15 -0
  36. package/src/lib/getInitialLayers.js +22 -0
  37. package/src/lib/load3DScript.js +22 -0
  38. package/src/lib/oafUtil.js +22 -0
  39. package/src/lib/setBackgroundImage.js +23 -0
  40. package/src/lib/wfsUtil.js +75 -0
  41. package/src/lib/zoomTo.js +40 -0
  42. package/src/maps/api.js +5 -0
  43. package/src/maps/map.js +35 -0
  44. package/src/maps/mapView.js +54 -0
  45. package/src/maps/ol/olMap.js +124 -0
  46. package/src/maps/olcs/3dUtils/fixedOverlaySynchronizer.js +39 -0
  47. package/src/maps/olcs/3dUtils/wmsRasterSynchronizer.js +348 -0
  48. package/src/maps/olcs/olcsMap.js +212 -0
  49. package/src/rawLayerList.js +88 -0
  50. package/src/searchAddress/gazetteerUrl.js +22 -0
  51. package/src/searchAddress/index.js +13 -0
  52. package/src/searchAddress/parse.js +196 -0
  53. package/src/searchAddress/search.js +184 -0
  54. package/src/searchAddress/searchGazetteer.js +52 -0
  55. package/src/searchAddress/showGeographicIdentifier.js +20 -0
  56. package/src/searchAddress/types.js +17 -0
  57. package/test/.eslintrc +7 -0
  58. package/test/crs.test.js +109 -0
  59. package/test/layer/geojson/index.test.js +133 -0
  60. package/test/layer/geojson/style.test.js +46 -0
  61. package/test/layer/lib.test.js +83 -0
  62. package/test/layer/oaf.test.js +245 -0
  63. package/test/layer/resources/oafFeatures.js +105 -0
  64. package/test/layer/resources/wfsFeatures.js +26 -0
  65. package/test/layer/resources/wfsFilter.js +17 -0
  66. package/test/layer/terrain.test.js +106 -0
  67. package/test/layer/tileset.test.js +116 -0
  68. package/test/layer/vector.test.js +76 -0
  69. package/test/layer/vectorBase.test.js +48 -0
  70. package/test/layer/wfs.test.js +388 -0
  71. package/test/layer/wms.test.js +256 -0
  72. package/test/lib/coordsToPairs.test.js +9 -0
  73. package/test/lib/getInitialLayers.test.js +28 -0
  74. package/test/lib/oafUtil.test.js +24 -0
  75. package/test/lib/setBackgroundImage.test.js +49 -0
  76. package/test/lib/wfsUtil.test.js +28 -0
  77. package/test/lib/zoomTo.test.js +74 -0
  78. package/test/map.test.js +258 -0
  79. package/test/mapView.test.js +59 -0
  80. package/test/rawLayerList.test.js +48 -0
  81. package/test/searchAddress/gazetteerSearchResults/address.js +175 -0
  82. package/test/searchAddress/gazetteerSearchResults/district.js +71 -0
  83. package/test/searchAddress/gazetteerSearchResults/houseNumber.js +32 -0
  84. package/test/searchAddress/gazetteerSearchResults/index.js +19 -0
  85. package/test/searchAddress/gazetteerSearchResults/parcel.js +44 -0
  86. package/test/searchAddress/gazetteerSearchResults/street.js +46 -0
  87. package/test/searchAddress/gazetteerSearchResults/streetKey.js +51 -0
  88. package/test/searchAddress/gazetteerUrl.test.js +22 -0
  89. package/test/searchAddress/parse.test.js +110 -0
  90. package/test/searchAddress/search.test.js +150 -0
  91. package/test/searchAddress/searchGazetteer.test.js +58 -0
  92. package/test/searchAddress/showGeographicIdentifier.test.js +22 -0
@@ -0,0 +1,256 @@
1
+ import {Map, Attribution} from "ol";
2
+ import TileLayer from "ol/layer/Tile";
3
+ import ImageLayer from "ol/layer/Image";
4
+ import TileWMS from "ol/source/TileWMS.js";
5
+ import ImageWMS from "ol/source/ImageWMS.js";
6
+ import TileGrid from "ol/tilegrid/TileGrid";
7
+ import * as wms from "../../src/layer/wms";
8
+
9
+ describe("wms.js", function () {
10
+ describe("generateSessionId", function () {
11
+ it("returns a number", function () {
12
+ const sid = wms.generateSessionId();
13
+
14
+ expect(typeof sid).toBe("number");
15
+ });
16
+ });
17
+
18
+ describe("addOptionalParams", () => {
19
+ let params;
20
+
21
+ beforeEach(() => {
22
+ params = {
23
+ CACHEID: "yeah",
24
+ FORMAT: "a",
25
+ LAYERS: "b",
26
+ VERSION: "c",
27
+ TRANSPARENT: "d",
28
+ SINGLETILE: "e"
29
+ };
30
+ });
31
+
32
+ it("adds the parameter TIME", () => {
33
+ const extendedParams = wms.addOptionalParams(params, {TIME: "The time"});
34
+
35
+ expect(extendedParams.CACHEID).toEqual("yeah");
36
+ expect(extendedParams.FORMAT).toEqual("a");
37
+ expect(extendedParams.LAYERS).toEqual("b");
38
+ expect(extendedParams.VERSION).toEqual("c");
39
+ expect(extendedParams.TRANSPARENT).toEqual("d");
40
+ expect(extendedParams.SINGLETILE).toEqual("e");
41
+ expect(extendedParams.TIME).toEqual("The time");
42
+ expect(extendedParams.STYLES).not.toBeDefined();
43
+ });
44
+ it("adds the parameter STYLES", () => {
45
+ const extendedParams = wms.addOptionalParams(params, {STYLES: "The style"});
46
+
47
+ expect(extendedParams.CACHEID).toEqual("yeah");
48
+ expect(extendedParams.FORMAT).toEqual("a");
49
+ expect(extendedParams.LAYERS).toEqual("b");
50
+ expect(extendedParams.VERSION).toEqual("c");
51
+ expect(extendedParams.TRANSPARENT).toEqual("d");
52
+ expect(extendedParams.SINGLETILE).toEqual("e");
53
+ expect(extendedParams.STYLES).toEqual("The style");
54
+ expect(extendedParams.TIME).not.toBeDefined();
55
+ });
56
+ });
57
+
58
+ describe("makeParams", function () {
59
+ it("does not set tile height/width for singleTile parameter object", function () {
60
+ const singleTileParams = wms.makeParams({singleTile: true, tilesize: 256});
61
+
62
+ expect(singleTileParams.SINGLETILE).toBe(true);
63
+ expect(singleTileParams.WIDTH).not.toBeDefined();
64
+ expect(singleTileParams.HEIGHT).not.toBeDefined();
65
+ });
66
+
67
+ it("does set tile height/width for multiTile parameter object", function () {
68
+ const multiTileParams = wms.makeParams({singleTile: false, tilesize: 256});
69
+
70
+ expect(multiTileParams.SINGLETILE).toBe(false);
71
+ expect(multiTileParams.WIDTH).toBe(256);
72
+ expect(multiTileParams.HEIGHT).toBe(256);
73
+ });
74
+
75
+ it("defaults the format to image/png", function () {
76
+ const params = wms.makeParams({});
77
+
78
+ expect(params.FORMAT).toEqual("image/png");
79
+ });
80
+
81
+ it("sets a session id", function () {
82
+ const params = wms.makeParams({});
83
+
84
+ expect(typeof params.CACHEID).toEqual("number");
85
+ });
86
+
87
+ it("copies the query parameters correctly", function () {
88
+ const params = wms.makeParams({
89
+ format: "image/jpeg",
90
+ layers: "atlas,things",
91
+ version: "1.1.1",
92
+ transparent: true
93
+ });
94
+
95
+ expect(params.FORMAT).toEqual("image/jpeg");
96
+ expect(params.LAYERS).toEqual("atlas,things");
97
+ expect(params.VERSION).toEqual("1.1.1");
98
+ expect(params.TRANSPARENT).toBe(true);
99
+ });
100
+ });
101
+
102
+ describe("createLayerSource", function () {
103
+ it("creates a TileWMS for multi tile requests", function () {
104
+ const source = wms.createLayerSource({singleTile: false});
105
+
106
+ expect(source).toBeInstanceOf(TileWMS);
107
+ });
108
+
109
+ it("creates an ImageWMS for single tile requests", function () {
110
+ const source = wms.createLayerSource({singleTile: true});
111
+
112
+ expect(source).toBeInstanceOf(ImageWMS);
113
+ });
114
+ });
115
+ describe("createLayerSource with a tileGrid", function () {
116
+ function attrFunction () {
117
+ return [new Attribution({
118
+ html: "© " +
119
+ "<a href=\"http://www.geo.admin.ch/internet/geoportal/" +
120
+ "en/home.html\">" +
121
+ "Pixelmap 1:1000000 / geo.admin.ch</a>"
122
+ })];
123
+ }
124
+ it("creates a TileWMS without tileGrid, options are undefined", function () {
125
+ const options = undefined,
126
+ source = wms.createLayerSource({singleTile: false, tilesize: "10"}, options);
127
+
128
+ expect(source).toBeInstanceOf(TileWMS);
129
+ expect(source.getTileGrid()).toEqual(null);
130
+ });
131
+ it("creates a TileWMS without tileGrid, options without resolutions", function () {
132
+ const options = {
133
+ origin: [442800, 5809000]
134
+ },
135
+ source = wms.createLayerSource({singleTile: false, tilesize: "10"}, options);
136
+
137
+ expect(source).toBeInstanceOf(TileWMS);
138
+ expect(source.getTileGrid()).toEqual(null);
139
+ });
140
+ it("creates a TileWMS containing a tileGrid", function () {
141
+ const options = {
142
+ resolutions: [2000, 1000],
143
+ origin: [442800, 5809000]
144
+ },
145
+ rawLayer = {
146
+ singleTile: false,
147
+ tilesize: "10",
148
+ gutter: "1",
149
+ serverType: "geoserver",
150
+ url: "https://url.de",
151
+ olAttribution: attrFunction
152
+ },
153
+ source = wms.createLayerSource(rawLayer, options);
154
+
155
+ expect(source).toBeInstanceOf(TileWMS);
156
+ expect(source.getTileGrid()).toBeInstanceOf(TileGrid);
157
+ expect(source.getTileGrid().getOrigin()).toEqual(options.origin);
158
+ expect(source.getTileGrid().getResolutions()).toEqual(options.resolutions);
159
+ expect(source.getTileGrid().getTileSize()).toEqual(parseInt(rawLayer.tilesize, 10));
160
+ expect(source.getAttributions()).toBe(attrFunction);
161
+ expect(source.getUrls()).toEqual([rawLayer.url]);
162
+ /* eslint-disable no-underscore-dangle */
163
+ expect(source.gutter_).toEqual(rawLayer.gutter);
164
+ });
165
+
166
+ it("creates an ImageWMS for single tile requests, contains no tileGrid", function () {
167
+ const rawLayer = {
168
+ singleTile: true,
169
+ serverType: "geoserver",
170
+ url: "https://url.de",
171
+ olAttribution: attrFunction
172
+ },
173
+ source = wms.createLayerSource(rawLayer);
174
+
175
+ expect(source).toBeInstanceOf(ImageWMS);
176
+ expect(source.getAttributions()).toBe(attrFunction);
177
+ expect(source.getUrl()).toEqual(rawLayer.url);
178
+ /* eslint-disable no-underscore-dangle */
179
+ expect(source.serverType_).toEqual(rawLayer.serverType);
180
+ });
181
+ });
182
+
183
+ describe("createLayer", function () {
184
+ it("creates a TileLayer for multi tile requests", function () {
185
+ const layer = wms.createLayer({singleTile: false});
186
+
187
+ expect(layer).toBeInstanceOf(TileLayer);
188
+ });
189
+
190
+ it("creates an ImageLayer for single tile requests", function () {
191
+ const layer = wms.createLayer({singleTile: true});
192
+
193
+ expect(layer).toBeInstanceOf(ImageLayer);
194
+ });
195
+ });
196
+ describe("createLayer with additional params and options", function () {
197
+ it("creates a TileLayer for multi tile requests", function () {
198
+ const options = {
199
+ resolutions: [2000, 1000],
200
+ origin: [442800, 5809000]
201
+ },
202
+ layerParams = {
203
+ name: "name",
204
+ layers: "layer1, layer2"
205
+ },
206
+ layer = wms.createLayer({singleTile: false, tilesize: "10"}, layerParams, options);
207
+
208
+ expect(layer).toBeInstanceOf(TileLayer);
209
+ expect(layer.get("name")).toEqual("name");
210
+ expect(layer.get("layers")).toEqual("layer1, layer2");
211
+ expect(layer.getSource().getTileGrid()).toBeInstanceOf(TileGrid);
212
+ expect(layer.getSource().getTileGrid().getOrigin()).toEqual(options.origin);
213
+ expect(layer.getSource().getTileGrid().getResolutions()).toEqual(options.resolutions);
214
+ });
215
+
216
+ it("creates an ImageLayer for single tile requests", function () {
217
+ const layerParams = {
218
+ name: "name",
219
+ layers: "layer1, layer2"
220
+ },
221
+ layer = wms.createLayer({singleTile: true}, layerParams);
222
+
223
+ expect(layer).toBeInstanceOf(ImageLayer);
224
+ expect(layer.get("name")).toEqual("name");
225
+ expect(layer.get("layers")).toEqual("layer1, layer2");
226
+ });
227
+ });
228
+
229
+ describe("updateSource", function () {
230
+ function getLayerSessionId (layer) {
231
+ return layer.getSource().getParams().SESSIONID;
232
+ }
233
+
234
+ it("changes a layer's source's param's sessionid", function () {
235
+ const layer = wms.createLayer({}),
236
+ oldSession = getLayerSessionId(layer);
237
+
238
+ wms.updateSource(layer);
239
+
240
+ expect(oldSession).not.toEqual(getLayerSessionId(layer));
241
+ });
242
+ });
243
+
244
+ describe("getGfiURL", function () {
245
+ it("creates an URL for the given layer/map/coordinate", function () {
246
+ const layer = wms.createLayer({url: "example.com", typ: "WMS"}),
247
+ map = new Map(),
248
+ gfiURL = wms.getGfiURL(layer, map, [0, 0]);
249
+
250
+ expect(gfiURL).toContain("example.com");
251
+ expect(gfiURL).toContain("REQUEST=GetFeatureInfo");
252
+ // doesn't work here due to missing initialization; works in manual tests
253
+ // expect(gfiURL).toContain("X=0&Y=0");
254
+ });
255
+ });
256
+ });
@@ -0,0 +1,9 @@
1
+ import coordsToPairs from "../../src/lib/coordsToPairs";
2
+
3
+ describe("coordsToPairs.js", function () {
4
+ describe("coordsToPairs", function () {
5
+ it("parses an array of ongoing coordinates to coordinate pairs", function () {
6
+ expect(coordsToPairs(["1.1", "2.2", "3.3", "4.4"])).toEqual([[1.1, 2.2], [3.3, 4.4]]);
7
+ });
8
+ });
9
+ });
@@ -0,0 +1,28 @@
1
+ import getInitialLayers from "../../src/lib/getInitialLayers";
2
+ import defaults from "../../src/defaults";
3
+
4
+ describe("getInitialLayers.js", function () {
5
+ it("returns configured layers if given", function () {
6
+ const config = {layers: [{id: "1"}]},
7
+ initialLayers = getInitialLayers(config);
8
+
9
+ expect(initialLayers).toEqual(config.layers);
10
+ });
11
+
12
+ it("returns default initialization if no layers configured, but lgv services are in use", function () {
13
+ const config1 = {},
14
+ config2 = {layerConf: defaults.layerConf},
15
+ initialLayers1 = getInitialLayers(config1),
16
+ initialLayers2 = getInitialLayers(config2);
17
+
18
+ expect(initialLayers1).toEqual(defaults.layers);
19
+ expect(initialLayers2).toEqual(defaults.layers);
20
+ });
21
+
22
+ it("returns an empty array if neither user-specified nor default usable", function () {
23
+ const config = {layerConf: "example.com/services.json"},
24
+ initialLayers = getInitialLayers(config);
25
+
26
+ expect(initialLayers).toEqual([]);
27
+ });
28
+ });
@@ -0,0 +1,24 @@
1
+ import {getParamsUrl} from "../../src/lib/oafUtil";
2
+
3
+ describe("oafUtil.js", function () {
4
+ describe("getParamsUrl", function () {
5
+ const params = {
6
+ "anzahl_schueler": ">1000",
7
+ "bezirk": "Bergedorf"
8
+ };
9
+
10
+ it("should return the parsed paramsUrl", function () {
11
+ expect(getParamsUrl(params)).toEqual("&anzahl_schueler=>1000&bezirk=Bergedorf");
12
+ });
13
+
14
+ it("should return an empty string", function () {
15
+ expect(getParamsUrl("string")).toEqual("");
16
+ expect(getParamsUrl(0)).toEqual("");
17
+ expect(getParamsUrl(null)).toEqual("");
18
+ expect(getParamsUrl(undefined)).toEqual("");
19
+ expect(getParamsUrl(true)).toEqual("");
20
+ expect(getParamsUrl([])).toEqual("");
21
+ expect(getParamsUrl({})).toEqual("");
22
+ });
23
+ });
24
+ });
@@ -0,0 +1,49 @@
1
+ import setBackgroundImage from "../../src/lib/setBackgroundImage";
2
+ import defaults from "../../src/defaults";
3
+
4
+ describe("setBackgroundImage.js", function () {
5
+ beforeEach(() => {
6
+ document.body.innerHTML = "<div><div id='map'></div><div id='custom'></div></div>";
7
+ });
8
+
9
+ it("uses defaults fallback to get div", function () {
10
+ const backgroundImage = "example.com/background.png";
11
+
12
+ setBackgroundImage({backgroundImage});
13
+
14
+ expect(document.getElementById("map").style.backgroundImage).toContain(backgroundImage);
15
+ expect(document.getElementById("custom").style.backgroundImage).not.toContain(backgroundImage);
16
+ });
17
+
18
+ it("uses custom id if given", function () {
19
+ const backgroundImage = "example.com/background.png";
20
+
21
+ setBackgroundImage({backgroundImage, target: "custom"});
22
+
23
+ expect(document.getElementById("map").style.backgroundImage).not.toContain(backgroundImage);
24
+ expect(document.getElementById("custom").style.backgroundImage).toContain(backgroundImage);
25
+ });
26
+
27
+ it("does nothing if specified div was not found", function () {
28
+ const backgroundImage = "example.com/background.png";
29
+
30
+ setBackgroundImage({backgroundImage, target: "asdf"});
31
+
32
+ expect(document.getElementById("map").style.backgroundImage).not.toContain(backgroundImage);
33
+ expect(document.getElementById("custom").style.backgroundImage).not.toContain(backgroundImage);
34
+ });
35
+
36
+ it("preserves empty string as input to set explicitly no background image", function () {
37
+ const backgroundImage = "";
38
+
39
+ setBackgroundImage({backgroundImage});
40
+
41
+ expect(document.getElementById("map").style.backgroundImage).toBe("url()");
42
+ });
43
+
44
+ it("sets the default background image if none was given", function () {
45
+ setBackgroundImage();
46
+
47
+ expect(document.getElementById("map").style.backgroundImage).toContain(defaults.backgroundImage);
48
+ });
49
+ });
@@ -0,0 +1,28 @@
1
+ import {getVersion} from "../../src/lib/wfsUtil";
2
+
3
+ describe("wfsUtil.js", function () {
4
+ describe("getVersion", function () {
5
+ it("should return the right version from option or rawlayers", function () {
6
+ expect(getVersion({version: "1.0.0"}, {version: "1.0.0"})).toEqual("1.0.0");
7
+ expect(getVersion({version: "1.1.0"}, {version: "1.0.0"})).toEqual("1.0.0");
8
+ expect(getVersion({version: "2.0.0"}, {version: "1.0.0"})).toEqual("1.0.0");
9
+ expect(getVersion({version: "1.0.0"}, {version: "1.1.0"})).toEqual("1.1.0");
10
+ expect(getVersion({version: "1.1.0"}, {version: "1.1.0"})).toEqual("1.1.0");
11
+ expect(getVersion({version: "2.0.0"}, {version: "1.1.0"})).toEqual("1.1.0");
12
+ expect(getVersion({version: "1.0.0"}, {version: "2.0.0"})).toEqual("2.0.0");
13
+ expect(getVersion({version: "1.1.0"}, {version: "2.0.0"})).toEqual("2.0.0");
14
+ expect(getVersion({version: "2.0.0"}, {version: "2.0.0"})).toEqual("2.0.0");
15
+ expect(getVersion({}, {version: "2.0.0"})).toEqual("2.0.0");
16
+ expect(getVersion({version: "2.0.0"}, {})).toEqual("2.0.0");
17
+ });
18
+
19
+ it("should return the right version 1.1.0", function () {
20
+ console.warn = jest.fn();
21
+ expect(getVersion({}, {})).toEqual("1.1.0");
22
+ expect(getVersion({version: "2.1.1"}, {})).toEqual("1.1.0");
23
+ expect(getVersion({}, {version: "2.1.1"})).toEqual("1.1.0");
24
+ expect(getVersion({version: "2.1.1"}, {version: "2.1.1"})).toEqual("1.1.0");
25
+ expect(console.warn).toHaveBeenCalled();
26
+ });
27
+ });
28
+ });
@@ -0,0 +1,74 @@
1
+ import zoomTo, {zoomToSearchResult} from "../../src/lib/zoomTo";
2
+
3
+ describe("zoomTo.js", function () {
4
+ describe("zoomTo", function () {
5
+ it("forwards its parameters to View's fit function", function () {
6
+ const fitMock = jest.fn(),
7
+ geometry = {},
8
+ params = {},
9
+ map = {
10
+ getView: () => ({
11
+ fit: fitMock
12
+ })
13
+ };
14
+
15
+ zoomTo(map, geometry, params);
16
+
17
+ expect(fitMock).toHaveBeenCalledWith(geometry, params);
18
+ });
19
+
20
+ it("does not require params", function () {
21
+ const fitMock = jest.fn(),
22
+ geometry = {},
23
+ map = {
24
+ getView: () => ({
25
+ fit: fitMock
26
+ })
27
+ };
28
+
29
+ zoomTo(map, geometry);
30
+
31
+ expect(fitMock).toHaveBeenCalledWith(geometry, expect.any(Object));
32
+ });
33
+ });
34
+
35
+ describe("zoomToSearchResult", function () {
36
+ it("transforms polygon search result and zooms to it", function () {
37
+ const fitMock = jest.fn(),
38
+ searchResult = {
39
+ geometry: {
40
+ type: "Polygon",
41
+ coordinates: [1, 2, 3, 4]
42
+ }
43
+ },
44
+ map = {
45
+ getView: () => ({
46
+ fit: fitMock
47
+ })
48
+ };
49
+
50
+ zoomToSearchResult(map, searchResult);
51
+
52
+ expect(fitMock.mock.calls[0][0].getCoordinates()).toEqual([[[1, 2], [3, 4]]]);
53
+ });
54
+
55
+ it("transforms point search result and zooms to it", function () {
56
+ const fitMock = jest.fn(),
57
+ searchResult = {
58
+ geometry: {
59
+ type: "Point",
60
+ coordinates: [1, 2]
61
+ }
62
+ },
63
+ map = {
64
+ getView: () => ({
65
+ fit: fitMock
66
+ })
67
+ };
68
+
69
+ zoomToSearchResult(map, searchResult);
70
+
71
+ expect(fitMock.mock.calls[0][0].getCoordinates()).toEqual([1, 2]);
72
+ });
73
+ });
74
+ });