mobility-toolbox-js 2.0.0-beta.30 → 2.0.0-beta.34
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.
- package/api/RealtimeAPI.d.ts +268 -0
- package/api/RealtimeAPI.d.ts.map +1 -0
- package/api/RealtimeAPI.js +626 -343
- package/api/RoutingAPI.d.ts +33 -0
- package/api/RoutingAPI.d.ts.map +1 -0
- package/api/RoutingAPI.js +65 -15
- package/api/StopsAPI.d.ts +36 -0
- package/api/StopsAPI.d.ts.map +1 -0
- package/api/StopsAPI.js +70 -12
- package/api/index.d.ts +5 -0
- package/api/index.d.ts.map +1 -0
- package/api/index.js +10 -3
- package/api/typedefs.d.ts +105 -0
- package/api/typedefs.d.ts.map +1 -0
- package/api/typedefs.js +72 -0
- package/common/api/HttpAPI.d.ts +31 -0
- package/common/api/HttpAPI.d.ts.map +1 -0
- package/common/api/HttpAPI.js +82 -30
- package/common/api/WebSocketAPI.d.ts +95 -0
- package/common/api/WebSocketAPI.d.ts.map +1 -0
- package/common/api/WebSocketAPI.js +313 -168
- package/common/controls/Control.d.ts +74 -0
- package/common/controls/Control.d.ts.map +1 -0
- package/common/controls/Control.js +167 -78
- package/common/index.d.ts +3 -0
- package/common/index.d.ts.map +1 -0
- package/common/index.js +18 -2
- package/common/layers/Layer.d.ts +80 -0
- package/common/layers/Layer.d.ts.map +1 -0
- package/common/layers/Layer.js +251 -134
- package/common/mixins/CopyrightMixin.d.ts +22 -0
- package/common/mixins/CopyrightMixin.d.ts.map +1 -0
- package/common/mixins/CopyrightMixin.js +70 -22
- package/common/mixins/MapboxLayerMixin.d.ts +27 -0
- package/common/mixins/MapboxLayerMixin.d.ts.map +1 -0
- package/common/mixins/MapboxLayerMixin.js +240 -0
- package/common/mixins/RealtimeLayerMixin.d.ts +58 -0
- package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -0
- package/common/mixins/RealtimeLayerMixin.js +698 -429
- package/common/mixins/StopFinderMixin.d.ts +40 -0
- package/common/mixins/StopFinderMixin.d.ts.map +1 -0
- package/common/mixins/StopFinderMixin.js +195 -107
- package/common/mixins/UserInteractionsLayerMixin.d.ts +42 -0
- package/common/mixins/UserInteractionsLayerMixin.d.ts.map +1 -0
- package/common/mixins/UserInteractionsLayerMixin.js +222 -121
- package/common/styles/index.d.ts +5 -0
- package/common/styles/index.d.ts.map +1 -0
- package/common/styles/index.js +24 -4
- package/common/styles/realtimeDefaultStyle.d.ts +15 -0
- package/common/styles/realtimeDefaultStyle.d.ts.map +1 -0
- package/common/styles/realtimeDefaultStyle.js +236 -190
- package/common/styles/realtimeDelayStyle.d.ts +11 -0
- package/common/styles/realtimeDelayStyle.d.ts.map +1 -0
- package/common/styles/realtimeDelayStyle.js +25 -7
- package/common/styles/realtimeSimpleStyle.d.ts +3 -0
- package/common/styles/realtimeSimpleStyle.d.ts.map +1 -0
- package/common/styles/realtimeSimpleStyle.js +23 -17
- package/common/typedefs.d.ts +50 -0
- package/common/typedefs.d.ts.map +1 -0
- package/common/typedefs.js +21 -0
- package/common/utils/cleanStopTime.d.ts +7 -0
- package/common/utils/cleanStopTime.d.ts.map +1 -0
- package/common/utils/cleanStopTime.js +28 -17
- package/common/utils/compareDepartures.d.ts +9 -0
- package/common/utils/compareDepartures.d.ts.map +1 -0
- package/common/utils/compareDepartures.js +34 -22
- package/common/utils/createCanvas.d.ts +9 -0
- package/common/utils/createCanvas.d.ts.map +1 -0
- package/common/utils/createCanvas.js +28 -16
- package/common/utils/createTrackerFilters.d.ts +12 -0
- package/common/utils/createTrackerFilters.d.ts.map +1 -0
- package/common/utils/createTrackerFilters.js +75 -54
- package/common/utils/getLayersAsFlatArray.d.ts +3 -0
- package/common/utils/getLayersAsFlatArray.d.ts.map +1 -0
- package/common/utils/getLayersAsFlatArray.js +15 -13
- package/common/utils/getMapboxMapCopyrights.d.ts +8 -0
- package/common/utils/getMapboxMapCopyrights.d.ts.map +1 -0
- package/common/utils/getMapboxMapCopyrights.js +24 -17
- package/common/utils/getMapboxRender.d.ts +5 -0
- package/common/utils/getMapboxRender.d.ts.map +1 -0
- package/common/utils/getMapboxRender.js +77 -0
- package/common/utils/getMaplibreRender.d.ts +5 -0
- package/common/utils/getMaplibreRender.d.ts.map +1 -0
- package/common/utils/getMaplibreRender.js +38 -0
- package/common/utils/getRealtimeModeSuffix.d.ts +8 -0
- package/common/utils/getRealtimeModeSuffix.d.ts.map +1 -0
- package/common/utils/getRealtimeModeSuffix.js +11 -2
- package/common/utils/getUrlWithParams.d.ts +9 -0
- package/common/utils/getUrlWithParams.d.ts.map +1 -0
- package/common/utils/getUrlWithParams.js +20 -10
- package/common/utils/getVehiclePosition.d.ts +14 -0
- package/common/utils/getVehiclePosition.d.ts.map +1 -0
- package/common/utils/getVehiclePosition.js +63 -39
- package/common/utils/index.d.ts +12 -0
- package/common/utils/index.d.ts.map +1 -0
- package/common/utils/index.js +37 -9
- package/common/utils/removeDuplicate.d.ts +10 -0
- package/common/utils/removeDuplicate.d.ts.map +1 -0
- package/common/utils/removeDuplicate.js +29 -7
- package/common/utils/renderTrajectories.d.ts +20 -0
- package/common/utils/renderTrajectories.d.ts.map +1 -0
- package/common/utils/renderTrajectories.js +111 -78
- package/common/utils/sortByDelay.d.ts +3 -0
- package/common/utils/sortByDelay.d.ts.map +1 -0
- package/common/utils/sortByDelay.js +21 -17
- package/common/utils/timeUtils.d.ts +5 -0
- package/common/utils/timeUtils.d.ts.map +1 -0
- package/common/utils/timeUtils.js +47 -18
- package/common/utils/trackerConfig.d.ts +24 -0
- package/common/utils/trackerConfig.d.ts.map +1 -0
- package/common/utils/trackerConfig.js +171 -118
- package/iife.d.ts +3 -0
- package/iife.d.ts.map +1 -0
- package/iife.js +7 -0
- package/index.d.ts +6 -0
- package/index.d.ts.map +1 -0
- package/index.js +10 -7
- package/mapbox/controls/CopyrightControl.d.ts +32 -0
- package/mapbox/controls/CopyrightControl.d.ts.map +1 -0
- package/mapbox/controls/CopyrightControl.js +72 -28
- package/mapbox/controls/index.d.ts +2 -0
- package/mapbox/controls/index.d.ts.map +1 -0
- package/mapbox/controls/index.js +6 -1
- package/mapbox/index.d.ts +5 -0
- package/mapbox/index.d.ts.map +1 -0
- package/mapbox/index.js +20 -4
- package/mapbox/layers/Layer.d.ts +47 -0
- package/mapbox/layers/Layer.d.ts.map +1 -0
- package/mapbox/layers/Layer.js +137 -54
- package/mapbox/layers/RealtimeLayer.d.ts +118 -0
- package/mapbox/layers/RealtimeLayer.d.ts.map +1 -0
- package/mapbox/layers/RealtimeLayer.js +310 -183
- package/mapbox/layers/index.d.ts +3 -0
- package/mapbox/layers/index.d.ts.map +1 -0
- package/mapbox/layers/index.js +7 -2
- package/mapbox/utils.d.ts +8 -0
- package/mapbox/utils.d.ts.map +1 -0
- package/mapbox/utils.js +54 -29
- package/mbt.js +2052 -2109
- package/mbt.js.map +3 -3
- package/mbt.min.js +18 -18
- package/mbt.min.js.map +3 -3
- package/ol/controls/CopyrightControl.d.ts +31 -0
- package/ol/controls/CopyrightControl.d.ts.map +1 -0
- package/ol/controls/CopyrightControl.js +89 -41
- package/ol/controls/RoutingControl.d.ts +180 -0
- package/ol/controls/RoutingControl.d.ts.map +1 -0
- package/ol/controls/RoutingControl.js +666 -371
- package/ol/controls/StopFinderControl.d.ts +32 -0
- package/ol/controls/StopFinderControl.d.ts.map +1 -0
- package/ol/controls/StopFinderControl.js +59 -10
- package/ol/controls/index.d.ts +4 -0
- package/ol/controls/index.d.ts.map +1 -0
- package/ol/controls/index.js +9 -3
- package/ol/index.d.ts +6 -0
- package/ol/index.d.ts.map +1 -0
- package/ol/index.js +21 -5
- package/ol/layers/Layer.d.ts +49 -0
- package/ol/layers/Layer.d.ts.map +1 -0
- package/ol/layers/Layer.js +178 -81
- package/ol/layers/MapboxLayer.d.ts +42 -0
- package/ol/layers/MapboxLayer.d.ts.map +1 -0
- package/ol/layers/MapboxLayer.js +131 -198
- package/ol/layers/MapboxStyleLayer.d.ts +146 -0
- package/ol/layers/MapboxStyleLayer.d.ts.map +1 -0
- package/ol/layers/MapboxStyleLayer.js +382 -186
- package/ol/layers/MaplibreLayer.d.ts +27 -0
- package/ol/layers/MaplibreLayer.d.ts.map +1 -0
- package/ol/layers/MaplibreLayer.js +67 -138
- package/ol/layers/RealtimeLayer.d.ts +119 -0
- package/ol/layers/RealtimeLayer.d.ts.map +1 -0
- package/ol/layers/RealtimeLayer.js +327 -184
- package/ol/layers/RoutingLayer.d.ts +24 -0
- package/ol/layers/RoutingLayer.d.ts.map +1 -0
- package/ol/layers/RoutingLayer.js +111 -56
- package/ol/layers/VectorLayer.d.ts +23 -0
- package/ol/layers/VectorLayer.d.ts.map +1 -0
- package/ol/layers/VectorLayer.js +71 -21
- package/ol/layers/WMSLayer.d.ts +38 -0
- package/ol/layers/WMSLayer.d.ts.map +1 -0
- package/ol/layers/WMSLayer.js +105 -37
- package/ol/layers/index.d.ts +9 -0
- package/ol/layers/index.d.ts.map +1 -0
- package/ol/layers/index.js +19 -8
- package/ol/styles/fullTrajectoryDelayStyle.d.ts +4 -0
- package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +1 -0
- package/ol/styles/fullTrajectoryDelayStyle.js +32 -28
- package/ol/styles/fullTrajectoryStyle.d.ts +4 -0
- package/ol/styles/fullTrajectoryStyle.d.ts.map +1 -0
- package/ol/styles/fullTrajectoryStyle.js +44 -40
- package/ol/styles/index.d.ts +3 -0
- package/ol/styles/index.d.ts.map +1 -0
- package/ol/styles/index.js +7 -2
- package/package.json +14 -36
- package/setupTests.d.ts +2 -0
- package/setupTests.d.ts.map +1 -0
- package/setupTests.js +15 -0
- package/types/index.d.ts +7 -6
- package/types/routing.d.ts +25 -25
- package/types/stops.d.ts +19 -19
- package/api/RealtimeAPI.test.js +0 -67
- package/api/RoutingAPI.test.js +0 -25
- package/api/StopsAPI.test.js +0 -22
- package/common/api/HttpAPI.test.js +0 -50
- package/common/api/WebSocketAPI.test.js +0 -311
- package/common/controls/Control.test.js +0 -87
- package/common/layers/Layer.test.js +0 -134
- package/common/mixins/UserInteractionsLayerMixin.test.js +0 -199
- package/common/utils/createTrackerFilters.test.js +0 -79
- package/common/utils/getMapboxMapCopyrights.test.js +0 -40
- package/common/utils/removeDuplicate.test.js +0 -19
- package/common/utils/timeUtils.test.js +0 -10
- package/common/utils/trackerConfig.test.js +0 -23
- package/mapbox/layers/Layer.test.js +0 -182
- package/mapbox/layers/RealtimeLayer.test.js +0 -10
- package/ol/controls/CopyrightControl.test.js +0 -165
- package/ol/controls/RoutingControl.test.js +0 -146
- package/ol/controls/StopFinderControl.test.js +0 -48
- package/ol/layers/Layer.test.js +0 -175
- package/ol/layers/MapboxLayer.test.js +0 -160
- package/ol/layers/MapboxStyleLayer.test.js +0 -226
- package/ol/layers/RealtimeLayer.test.js +0 -67
- package/ol/layers/RoutingLayer.test.js +0 -39
- package/ol/layers/VectorLayer.test.js +0 -76
- package/ol/layers/WMSLayer.test.js +0 -57
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import OlMap from "ol/Map";
|
|
2
|
-
import View from "ol/View";
|
|
3
|
-
import gllib from "maplibre-gl";
|
|
4
|
-
import Layer from "./Layer";
|
|
5
|
-
import MaplibreLayer from "./MaplibreLayer";
|
|
6
|
-
import MapboxStyleLayer from "./MapboxStyleLayer";
|
|
7
|
-
let source;
|
|
8
|
-
let layer;
|
|
9
|
-
let map;
|
|
10
|
-
let onClick;
|
|
11
|
-
const styleLayer = {
|
|
12
|
-
id: "layer"
|
|
13
|
-
};
|
|
14
|
-
describe("MapboxStyleLayer", () => {
|
|
15
|
-
beforeEach(() => {
|
|
16
|
-
onClick = jest.fn();
|
|
17
|
-
source = new MaplibreLayer({
|
|
18
|
-
name: "Layer",
|
|
19
|
-
apiKey: "foo",
|
|
20
|
-
url: "https://foo.com/styles"
|
|
21
|
-
});
|
|
22
|
-
layer = new MapboxStyleLayer({
|
|
23
|
-
name: "mapbox layer",
|
|
24
|
-
visible: true,
|
|
25
|
-
mapboxLayer: source,
|
|
26
|
-
styleLayer,
|
|
27
|
-
onClick
|
|
28
|
-
});
|
|
29
|
-
map = new OlMap({
|
|
30
|
-
target: document.createElement("div"),
|
|
31
|
-
view: new View({ center: [0, 0] })
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
afterEach(() => {
|
|
35
|
-
if (layer.map) {
|
|
36
|
-
layer.detachFromMap(map);
|
|
37
|
-
}
|
|
38
|
-
if (source.map) {
|
|
39
|
-
source.detachFromMap(map);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
test("should be instanced.", () => {
|
|
43
|
-
expect(layer).toBeInstanceOf(MapboxStyleLayer);
|
|
44
|
-
expect(layer.styleLayers[0]).toBe(styleLayer);
|
|
45
|
-
});
|
|
46
|
-
test("should not initalized mapbox map.", () => {
|
|
47
|
-
layer.attachToMap();
|
|
48
|
-
expect(layer.mbMap).toBe();
|
|
49
|
-
layer.detachFromMap();
|
|
50
|
-
});
|
|
51
|
-
test("should initalized mapbox map.", () => {
|
|
52
|
-
source.attachToMap(map);
|
|
53
|
-
layer.attachToMap(map);
|
|
54
|
-
expect(layer.mapboxLayer.mbMap).toBeInstanceOf(gllib.Map);
|
|
55
|
-
layer.detachFromMap();
|
|
56
|
-
source.detachFromMap();
|
|
57
|
-
});
|
|
58
|
-
test("should called terminate on initalization.", () => {
|
|
59
|
-
const spy = jest.spyOn(layer, "detachFromMap");
|
|
60
|
-
layer.attachToMap();
|
|
61
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
62
|
-
layer.detachFromMap(map);
|
|
63
|
-
});
|
|
64
|
-
test("should return coordinates, features and a layer instance.", async () => {
|
|
65
|
-
source.attachToMap(map);
|
|
66
|
-
layer.attachToMap(map);
|
|
67
|
-
const data = await layer.getFeatureInfoAtCoordinate([50, 50]);
|
|
68
|
-
expect(data.coordinate).toEqual([50, 50]);
|
|
69
|
-
expect(data.features).toEqual([]);
|
|
70
|
-
expect(data.layer).toBeInstanceOf(MapboxStyleLayer);
|
|
71
|
-
layer.detachFromMap(map);
|
|
72
|
-
source.detachFromMap(map);
|
|
73
|
-
});
|
|
74
|
-
test("should call onClick callback", async () => {
|
|
75
|
-
const coordinate = [500, 500];
|
|
76
|
-
const features = [];
|
|
77
|
-
const evt = { type: "singleclick", map, coordinate };
|
|
78
|
-
layer.attachToMap(map);
|
|
79
|
-
expect(onClick).toHaveBeenCalledTimes(0);
|
|
80
|
-
await map.dispatchEvent(evt);
|
|
81
|
-
expect(onClick).toHaveBeenCalledTimes(1);
|
|
82
|
-
expect(onClick).toHaveBeenCalledWith(features, layer, coordinate);
|
|
83
|
-
layer.detachFromMap();
|
|
84
|
-
});
|
|
85
|
-
test("should call super class terminate function.", () => {
|
|
86
|
-
layer.attachToMap(map);
|
|
87
|
-
const spy = jest.spyOn(Layer.prototype, "detachFromMap");
|
|
88
|
-
layer.detachFromMap(map);
|
|
89
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
90
|
-
spy.mockRestore();
|
|
91
|
-
});
|
|
92
|
-
test("should call super class terminate if the mapboxLayer associated has been terminated before.", () => {
|
|
93
|
-
layer.attachToMap(map);
|
|
94
|
-
source.detachFromMap(map);
|
|
95
|
-
const spy = jest.spyOn(Layer.prototype, "detachFromMap");
|
|
96
|
-
layer.detachFromMap(map);
|
|
97
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
98
|
-
spy.mockRestore();
|
|
99
|
-
});
|
|
100
|
-
test("should clone", () => {
|
|
101
|
-
const clone = layer.clone({ name: "clone" });
|
|
102
|
-
expect(clone).not.toBe(layer);
|
|
103
|
-
expect(clone.name).toBe("clone");
|
|
104
|
-
expect(clone).toBeInstanceOf(MapboxStyleLayer);
|
|
105
|
-
});
|
|
106
|
-
test("should add layer on load", () => {
|
|
107
|
-
const style = { layers: [] };
|
|
108
|
-
layer.mapboxLayer.mbMap = {
|
|
109
|
-
getStyle: () => style,
|
|
110
|
-
getSource: () => ({}),
|
|
111
|
-
getLayer: () => null,
|
|
112
|
-
setLayoutProperty: () => null,
|
|
113
|
-
addLayer: (styleLayerr) => style.layers.push(styleLayerr)
|
|
114
|
-
};
|
|
115
|
-
layer.onLoad();
|
|
116
|
-
expect(style.layers[0]).toBe(styleLayer);
|
|
117
|
-
});
|
|
118
|
-
describe("should set disabled property to false on load", () => {
|
|
119
|
-
test("when layer uses styleLayer property", () => {
|
|
120
|
-
const styles = { layers: [] };
|
|
121
|
-
layer.mapboxLayer.mbMap = {
|
|
122
|
-
getStyle: () => styles,
|
|
123
|
-
getSource: () => ({}),
|
|
124
|
-
getLayer: () => null,
|
|
125
|
-
setLayoutProperty: () => null,
|
|
126
|
-
addLayer: (styleLayerr) => styles.layers.push(styleLayerr)
|
|
127
|
-
};
|
|
128
|
-
expect(layer).toBeInstanceOf(MapboxStyleLayer);
|
|
129
|
-
layer.onLoad();
|
|
130
|
-
expect(layer.disabled).toBe(false);
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
describe("should set disabled property to true on load", () => {
|
|
134
|
-
test("when layer uses styleLayersFilter property", () => {
|
|
135
|
-
const styles = { layers: [styleLayer] };
|
|
136
|
-
const layer2 = new MapboxStyleLayer({
|
|
137
|
-
name: "mapbox layer",
|
|
138
|
-
mapboxLayer: source,
|
|
139
|
-
styleLayersFilter: () => false
|
|
140
|
-
});
|
|
141
|
-
layer2.mapboxLayer.mbMap = {
|
|
142
|
-
getStyle: () => styles,
|
|
143
|
-
getSource: () => ({}),
|
|
144
|
-
getLayer: () => null,
|
|
145
|
-
setLayoutProperty: () => null,
|
|
146
|
-
addLayer: () => ({})
|
|
147
|
-
};
|
|
148
|
-
layer2.onLoad();
|
|
149
|
-
expect(layer2.disabled).toBe(true);
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
describe("#getFeatureInfoAtCoordinate()", () => {
|
|
153
|
-
beforeEach(() => {
|
|
154
|
-
source.attachToMap(map);
|
|
155
|
-
source.mbMap.isStyleLoaded = jest.fn(() => true);
|
|
156
|
-
source.mbMap.getSource = jest.fn(() => true);
|
|
157
|
-
});
|
|
158
|
-
afterEach(() => {
|
|
159
|
-
source.mbMap.getSource.mockRestore();
|
|
160
|
-
source.mbMap.isStyleLoaded.mockRestore();
|
|
161
|
-
});
|
|
162
|
-
test("should request features on layers ids from styleLayers property", () => {
|
|
163
|
-
source.mbMap.getStyle = jest.fn(() => ({
|
|
164
|
-
layers: [{ id: "foo" }, { id: "layer" }, { id: "bar" }]
|
|
165
|
-
}));
|
|
166
|
-
layer.attachToMap(map);
|
|
167
|
-
layer.mapboxLayer.getFeatureInfoAtCoordinate = jest.fn(() => Promise.resolve({ features: [] }));
|
|
168
|
-
layer.getFeatureInfoAtCoordinate([0, 0]).then(() => {
|
|
169
|
-
});
|
|
170
|
-
expect(layer.mapboxLayer.getFeatureInfoAtCoordinate).toHaveBeenCalledWith([0, 0], { layers: ["layer"], validate: false });
|
|
171
|
-
layer.mapboxLayer.getFeatureInfoAtCoordinate.mockRestore();
|
|
172
|
-
source.mbMap.getStyle.mockRestore();
|
|
173
|
-
});
|
|
174
|
-
test("should request features on layers ids from styleLayersFilter property", () => {
|
|
175
|
-
source.mbMap.getStyle = jest.fn(() => ({
|
|
176
|
-
layers: [{ id: "foo" }, { id: "layer" }, { id: "bar" }, { id: "foo2" }]
|
|
177
|
-
}));
|
|
178
|
-
const layer2 = new MapboxStyleLayer({
|
|
179
|
-
name: "mapbox layer",
|
|
180
|
-
visible: true,
|
|
181
|
-
mapboxLayer: source,
|
|
182
|
-
styleLayer,
|
|
183
|
-
styleLayersFilter: ({ id }) => /foo/.test(id)
|
|
184
|
-
});
|
|
185
|
-
layer2.attachToMap(map);
|
|
186
|
-
layer2.mapboxLayer.getFeatureInfoAtCoordinate = jest.fn(() => Promise.resolve({ features: [] }));
|
|
187
|
-
layer2.getFeatureInfoAtCoordinate([0, 0]).then(() => {
|
|
188
|
-
});
|
|
189
|
-
expect(layer2.mapboxLayer.getFeatureInfoAtCoordinate).toHaveBeenCalledWith([0, 0], {
|
|
190
|
-
layers: ["foo", "foo2"],
|
|
191
|
-
validate: false
|
|
192
|
-
});
|
|
193
|
-
layer2.mapboxLayer.getFeatureInfoAtCoordinate.mockRestore();
|
|
194
|
-
source.mbMap.getStyle.mockRestore();
|
|
195
|
-
});
|
|
196
|
-
test("should request features on layers ids from queryRenderedLayersFilter property", () => {
|
|
197
|
-
source.mbMap.getStyle = jest.fn(() => ({
|
|
198
|
-
layers: [
|
|
199
|
-
{ id: "foo" },
|
|
200
|
-
{ id: "bar2" },
|
|
201
|
-
{ id: "layer" },
|
|
202
|
-
{ id: "bar" },
|
|
203
|
-
{ id: "foo2" }
|
|
204
|
-
]
|
|
205
|
-
}));
|
|
206
|
-
const layer2 = new MapboxStyleLayer({
|
|
207
|
-
name: "mapbox layer",
|
|
208
|
-
visible: true,
|
|
209
|
-
mapboxLayer: source,
|
|
210
|
-
styleLayer,
|
|
211
|
-
styleLayersFilter: ({ id }) => /foo/.test(id),
|
|
212
|
-
queryRenderedLayersFilter: ({ id }) => /bar/.test(id)
|
|
213
|
-
});
|
|
214
|
-
layer2.attachToMap(map);
|
|
215
|
-
layer2.mapboxLayer.getFeatureInfoAtCoordinate = jest.fn(() => Promise.resolve({ features: [] }));
|
|
216
|
-
layer2.getFeatureInfoAtCoordinate([0, 0]).then(() => {
|
|
217
|
-
});
|
|
218
|
-
expect(layer2.mapboxLayer.getFeatureInfoAtCoordinate).toHaveBeenCalledWith([0, 0], {
|
|
219
|
-
layers: ["bar2", "bar"],
|
|
220
|
-
validate: false
|
|
221
|
-
});
|
|
222
|
-
layer2.mapboxLayer.getFeatureInfoAtCoordinate.mockRestore();
|
|
223
|
-
source.mbMap.getStyle.mockRestore();
|
|
224
|
-
});
|
|
225
|
-
});
|
|
226
|
-
});
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import fetch from "jest-fetch-mock";
|
|
2
|
-
import Map from "ol/Map";
|
|
3
|
-
import View from "ol/View";
|
|
4
|
-
import WS from "jest-websocket-mock";
|
|
5
|
-
import RealtimeLayer from "./RealtimeLayer";
|
|
6
|
-
let layer;
|
|
7
|
-
let onClick;
|
|
8
|
-
let olMap;
|
|
9
|
-
let server;
|
|
10
|
-
describe("RealtimeLayer", () => {
|
|
11
|
-
beforeEach(() => {
|
|
12
|
-
server = new WS("ws://localhost:1234");
|
|
13
|
-
global.fetch = fetch;
|
|
14
|
-
fetch.resetMocks();
|
|
15
|
-
onClick = jest.fn();
|
|
16
|
-
layer = new RealtimeLayer({
|
|
17
|
-
url: "ws://localhost:1234",
|
|
18
|
-
apiKey: "apiKey",
|
|
19
|
-
onClick
|
|
20
|
-
});
|
|
21
|
-
olMap = new Map({
|
|
22
|
-
view: new View({
|
|
23
|
-
center: [831634, 5933959],
|
|
24
|
-
zoom: 9
|
|
25
|
-
})
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
afterEach(() => {
|
|
29
|
-
server.close();
|
|
30
|
-
WS.clean();
|
|
31
|
-
});
|
|
32
|
-
test("should be instanced.", () => {
|
|
33
|
-
expect(layer).toBeInstanceOf(RealtimeLayer);
|
|
34
|
-
});
|
|
35
|
-
test("should called terminate on initalization.", () => {
|
|
36
|
-
const spy = jest.spyOn(layer, "detachFromMap");
|
|
37
|
-
fetch.mockResponseOnce(JSON.stringify(global.fetchTrajectoriesResponse));
|
|
38
|
-
layer.attachToMap(olMap);
|
|
39
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
40
|
-
});
|
|
41
|
-
test("should clone", () => {
|
|
42
|
-
const clone = layer.clone({ name: "clone" });
|
|
43
|
-
expect(clone).not.toBe(layer);
|
|
44
|
-
expect(clone.name).toBe("clone");
|
|
45
|
-
expect(clone).toBeInstanceOf(RealtimeLayer);
|
|
46
|
-
});
|
|
47
|
-
test("should use the sort function.", () => {
|
|
48
|
-
const fn = () => true;
|
|
49
|
-
const laye = new RealtimeLayer({
|
|
50
|
-
url: "ws://localhost:1234",
|
|
51
|
-
apiKey: "apiKey",
|
|
52
|
-
sort: fn
|
|
53
|
-
});
|
|
54
|
-
expect(laye).toBeInstanceOf(RealtimeLayer);
|
|
55
|
-
expect(laye.sort).toBe(fn);
|
|
56
|
-
});
|
|
57
|
-
test("should use filter function.", () => {
|
|
58
|
-
const fn = () => true;
|
|
59
|
-
const laye = new RealtimeLayer({
|
|
60
|
-
url: "ws://localhost:1234",
|
|
61
|
-
apiKey: "apiKey",
|
|
62
|
-
filter: fn
|
|
63
|
-
});
|
|
64
|
-
expect(laye).toBeInstanceOf(RealtimeLayer);
|
|
65
|
-
expect(laye.filter).toBe(fn);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import fetch from "jest-fetch-mock";
|
|
2
|
-
import Map from "ol/Map";
|
|
3
|
-
import View from "ol/View";
|
|
4
|
-
import RoutingLayer from "./RoutingLayer";
|
|
5
|
-
let layer;
|
|
6
|
-
let onClick;
|
|
7
|
-
let olMap;
|
|
8
|
-
describe("RoutingLayer", () => {
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
global.fetch = fetch;
|
|
11
|
-
fetch.resetMocks();
|
|
12
|
-
onClick = jest.fn();
|
|
13
|
-
layer = new RoutingLayer({
|
|
14
|
-
onClick,
|
|
15
|
-
apiKey: "apiKey"
|
|
16
|
-
});
|
|
17
|
-
olMap = new Map({
|
|
18
|
-
view: new View({
|
|
19
|
-
center: [831634, 5933959],
|
|
20
|
-
zoom: 9
|
|
21
|
-
})
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
test("should be instanced.", () => {
|
|
25
|
-
expect(layer).toBeInstanceOf(RoutingLayer);
|
|
26
|
-
});
|
|
27
|
-
test("should called terminate on initalization.", () => {
|
|
28
|
-
const spy = jest.spyOn(layer, "detachFromMap");
|
|
29
|
-
fetch.mockResponseOnce(JSON.stringify(global.fetchTrajectoriesResponse));
|
|
30
|
-
layer.attachToMap(olMap);
|
|
31
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
32
|
-
});
|
|
33
|
-
test("should clone", () => {
|
|
34
|
-
const clone = layer.clone({ name: "clone" });
|
|
35
|
-
expect(clone).not.toBe(layer);
|
|
36
|
-
expect(clone.name).toBe("clone");
|
|
37
|
-
expect(clone).toBeInstanceOf(RoutingLayer);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import OLVectorLayer from "ol/layer/Vector";
|
|
2
|
-
import VectorSource from "ol/source/Vector";
|
|
3
|
-
import View from "ol/View";
|
|
4
|
-
import Feature from "ol/Feature";
|
|
5
|
-
import Point from "ol/geom/Point";
|
|
6
|
-
import Map from "ol/Map";
|
|
7
|
-
import VectorLayer from "./VectorLayer";
|
|
8
|
-
const feature1 = new Feature({
|
|
9
|
-
attribute: "bar",
|
|
10
|
-
geometry: new Point([500, 500])
|
|
11
|
-
});
|
|
12
|
-
const olLayer = new OLVectorLayer({
|
|
13
|
-
source: new VectorSource({
|
|
14
|
-
features: [
|
|
15
|
-
feature1,
|
|
16
|
-
new Feature({
|
|
17
|
-
attribute: "foo",
|
|
18
|
-
geometry: new Point([50, 50])
|
|
19
|
-
})
|
|
20
|
-
]
|
|
21
|
-
})
|
|
22
|
-
});
|
|
23
|
-
let layer;
|
|
24
|
-
let map;
|
|
25
|
-
let onClick;
|
|
26
|
-
describe("VectorLayer", () => {
|
|
27
|
-
beforeEach(() => {
|
|
28
|
-
onClick = jest.fn();
|
|
29
|
-
layer = new VectorLayer({
|
|
30
|
-
name: "Layer",
|
|
31
|
-
olLayer,
|
|
32
|
-
onClick
|
|
33
|
-
});
|
|
34
|
-
map = new Map({
|
|
35
|
-
view: new View({ resolution: 5 }),
|
|
36
|
-
target: document.body
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
test("should be instanced.", () => {
|
|
40
|
-
expect(layer).toBeInstanceOf(VectorLayer);
|
|
41
|
-
expect(layer.hitTolerance).toBe(5);
|
|
42
|
-
});
|
|
43
|
-
test("should called terminate on initalization.", () => {
|
|
44
|
-
const spy = jest.spyOn(layer, "detachFromMap");
|
|
45
|
-
layer.attachToMap();
|
|
46
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
47
|
-
});
|
|
48
|
-
test("should call getFeatureInfoAtCoordinate on click then the callback", async () => {
|
|
49
|
-
const coordinate = [500, 500];
|
|
50
|
-
const px = [10, 10];
|
|
51
|
-
const features = [feature1];
|
|
52
|
-
const evt = { type: "singleclick", map, coordinate };
|
|
53
|
-
const spy = jest.spyOn(layer, "getFeatureInfoAtCoordinate");
|
|
54
|
-
const spy2 = jest.spyOn(map, "getPixelFromCoordinate").mockReturnValue(px);
|
|
55
|
-
const spy3 = jest.spyOn(map, "getFeaturesAtPixel").mockReturnValue(features);
|
|
56
|
-
layer.attachToMap(map);
|
|
57
|
-
expect(onClick).toHaveBeenCalledTimes(0);
|
|
58
|
-
await map.dispatchEvent(evt);
|
|
59
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
60
|
-
expect(spy).toHaveBeenCalledWith(coordinate);
|
|
61
|
-
expect(spy2).toHaveBeenCalledTimes(1);
|
|
62
|
-
expect(spy2).toHaveBeenCalledWith(coordinate);
|
|
63
|
-
expect(spy3).toHaveBeenCalledTimes(1);
|
|
64
|
-
expect(spy3.mock.calls[0][0]).toBe(px);
|
|
65
|
-
expect(spy3.mock.calls[0][1].layerFilter(layer.olLayer)).toBe(true);
|
|
66
|
-
expect(spy3.mock.calls[0][1].layerFilter({})).toBe(false);
|
|
67
|
-
expect(onClick).toHaveBeenCalledTimes(1);
|
|
68
|
-
expect(onClick).toHaveBeenCalledWith(features, layer, coordinate);
|
|
69
|
-
});
|
|
70
|
-
test("should clone", () => {
|
|
71
|
-
const clone = layer.clone({ name: "clone" });
|
|
72
|
-
expect(clone).not.toBe(layer);
|
|
73
|
-
expect(clone.name).toBe("clone");
|
|
74
|
-
expect(clone).toBeInstanceOf(VectorLayer);
|
|
75
|
-
});
|
|
76
|
-
});
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import OLView from "ol/View";
|
|
2
|
-
import ImageLayer from "ol/layer/Image";
|
|
3
|
-
import ImageWMS from "ol/source/ImageWMS";
|
|
4
|
-
import fetch from "jest-fetch-mock";
|
|
5
|
-
import Map from "ol/Map";
|
|
6
|
-
import WMSLayer from "./WMSLayer";
|
|
7
|
-
describe("WMSLayer", () => {
|
|
8
|
-
let map;
|
|
9
|
-
let layer;
|
|
10
|
-
beforeEach(() => {
|
|
11
|
-
map = new Map({
|
|
12
|
-
view: new OLView({ resolution: 5 }),
|
|
13
|
-
target: document.body
|
|
14
|
-
});
|
|
15
|
-
layer = new WMSLayer({
|
|
16
|
-
olLayer: new ImageLayer({
|
|
17
|
-
source: new ImageWMS({
|
|
18
|
-
url: "http://dummy",
|
|
19
|
-
params: { LAYERS: "layers" }
|
|
20
|
-
})
|
|
21
|
-
})
|
|
22
|
-
});
|
|
23
|
-
layer.attachToMap(map);
|
|
24
|
-
fetch.mockResponseOnce(JSON.stringify({ features: [] }));
|
|
25
|
-
global.fetch = fetch;
|
|
26
|
-
});
|
|
27
|
-
afterEach(() => {
|
|
28
|
-
layer.detachFromMap();
|
|
29
|
-
});
|
|
30
|
-
test("should initialize.", () => {
|
|
31
|
-
expect(layer).toBeInstanceOf(WMSLayer);
|
|
32
|
-
});
|
|
33
|
-
test("should called terminate on initalization.", () => {
|
|
34
|
-
const spy = jest.spyOn(layer, "detachFromMap");
|
|
35
|
-
layer.attachToMap();
|
|
36
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
37
|
-
});
|
|
38
|
-
test("should return a promise resolving features.", async () => {
|
|
39
|
-
const data = await layer.getFeatureInfoAtCoordinate([50, 50]);
|
|
40
|
-
const params = new URL(fetch.mock.calls[0][0]).searchParams;
|
|
41
|
-
expect(params.get("REQUEST")).toBe("GetFeatureInfo");
|
|
42
|
-
expect(params.get("I")).toBe("50");
|
|
43
|
-
expect(params.get("J")).toBe("50");
|
|
44
|
-
expect(data.features).toEqual([]);
|
|
45
|
-
});
|
|
46
|
-
test("should return a layer instance and a coordinate.", async () => {
|
|
47
|
-
const data = await layer.getFeatureInfoAtCoordinate([50, 50]);
|
|
48
|
-
expect(data.coordinate).toEqual([50, 50]);
|
|
49
|
-
expect(data.layer).toBeInstanceOf(WMSLayer);
|
|
50
|
-
});
|
|
51
|
-
test("should clone", () => {
|
|
52
|
-
const clone = layer.clone({ name: "clone" });
|
|
53
|
-
expect(clone).not.toBe(layer);
|
|
54
|
-
expect(clone.name).toBe("clone");
|
|
55
|
-
expect(clone).toBeInstanceOf(WMSLayer);
|
|
56
|
-
});
|
|
57
|
-
});
|