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.
Files changed (225) hide show
  1. package/api/RealtimeAPI.d.ts +268 -0
  2. package/api/RealtimeAPI.d.ts.map +1 -0
  3. package/api/RealtimeAPI.js +626 -343
  4. package/api/RoutingAPI.d.ts +33 -0
  5. package/api/RoutingAPI.d.ts.map +1 -0
  6. package/api/RoutingAPI.js +65 -15
  7. package/api/StopsAPI.d.ts +36 -0
  8. package/api/StopsAPI.d.ts.map +1 -0
  9. package/api/StopsAPI.js +70 -12
  10. package/api/index.d.ts +5 -0
  11. package/api/index.d.ts.map +1 -0
  12. package/api/index.js +10 -3
  13. package/api/typedefs.d.ts +105 -0
  14. package/api/typedefs.d.ts.map +1 -0
  15. package/api/typedefs.js +72 -0
  16. package/common/api/HttpAPI.d.ts +31 -0
  17. package/common/api/HttpAPI.d.ts.map +1 -0
  18. package/common/api/HttpAPI.js +82 -30
  19. package/common/api/WebSocketAPI.d.ts +95 -0
  20. package/common/api/WebSocketAPI.d.ts.map +1 -0
  21. package/common/api/WebSocketAPI.js +313 -168
  22. package/common/controls/Control.d.ts +74 -0
  23. package/common/controls/Control.d.ts.map +1 -0
  24. package/common/controls/Control.js +167 -78
  25. package/common/index.d.ts +3 -0
  26. package/common/index.d.ts.map +1 -0
  27. package/common/index.js +18 -2
  28. package/common/layers/Layer.d.ts +80 -0
  29. package/common/layers/Layer.d.ts.map +1 -0
  30. package/common/layers/Layer.js +251 -134
  31. package/common/mixins/CopyrightMixin.d.ts +22 -0
  32. package/common/mixins/CopyrightMixin.d.ts.map +1 -0
  33. package/common/mixins/CopyrightMixin.js +70 -22
  34. package/common/mixins/MapboxLayerMixin.d.ts +27 -0
  35. package/common/mixins/MapboxLayerMixin.d.ts.map +1 -0
  36. package/common/mixins/MapboxLayerMixin.js +240 -0
  37. package/common/mixins/RealtimeLayerMixin.d.ts +58 -0
  38. package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -0
  39. package/common/mixins/RealtimeLayerMixin.js +698 -429
  40. package/common/mixins/StopFinderMixin.d.ts +40 -0
  41. package/common/mixins/StopFinderMixin.d.ts.map +1 -0
  42. package/common/mixins/StopFinderMixin.js +195 -107
  43. package/common/mixins/UserInteractionsLayerMixin.d.ts +42 -0
  44. package/common/mixins/UserInteractionsLayerMixin.d.ts.map +1 -0
  45. package/common/mixins/UserInteractionsLayerMixin.js +222 -121
  46. package/common/styles/index.d.ts +5 -0
  47. package/common/styles/index.d.ts.map +1 -0
  48. package/common/styles/index.js +24 -4
  49. package/common/styles/realtimeDefaultStyle.d.ts +15 -0
  50. package/common/styles/realtimeDefaultStyle.d.ts.map +1 -0
  51. package/common/styles/realtimeDefaultStyle.js +236 -190
  52. package/common/styles/realtimeDelayStyle.d.ts +11 -0
  53. package/common/styles/realtimeDelayStyle.d.ts.map +1 -0
  54. package/common/styles/realtimeDelayStyle.js +25 -7
  55. package/common/styles/realtimeSimpleStyle.d.ts +3 -0
  56. package/common/styles/realtimeSimpleStyle.d.ts.map +1 -0
  57. package/common/styles/realtimeSimpleStyle.js +23 -17
  58. package/common/typedefs.d.ts +50 -0
  59. package/common/typedefs.d.ts.map +1 -0
  60. package/common/typedefs.js +21 -0
  61. package/common/utils/cleanStopTime.d.ts +7 -0
  62. package/common/utils/cleanStopTime.d.ts.map +1 -0
  63. package/common/utils/cleanStopTime.js +28 -17
  64. package/common/utils/compareDepartures.d.ts +9 -0
  65. package/common/utils/compareDepartures.d.ts.map +1 -0
  66. package/common/utils/compareDepartures.js +34 -22
  67. package/common/utils/createCanvas.d.ts +9 -0
  68. package/common/utils/createCanvas.d.ts.map +1 -0
  69. package/common/utils/createCanvas.js +28 -16
  70. package/common/utils/createTrackerFilters.d.ts +12 -0
  71. package/common/utils/createTrackerFilters.d.ts.map +1 -0
  72. package/common/utils/createTrackerFilters.js +75 -54
  73. package/common/utils/getLayersAsFlatArray.d.ts +3 -0
  74. package/common/utils/getLayersAsFlatArray.d.ts.map +1 -0
  75. package/common/utils/getLayersAsFlatArray.js +15 -13
  76. package/common/utils/getMapboxMapCopyrights.d.ts +8 -0
  77. package/common/utils/getMapboxMapCopyrights.d.ts.map +1 -0
  78. package/common/utils/getMapboxMapCopyrights.js +24 -17
  79. package/common/utils/getMapboxRender.d.ts +5 -0
  80. package/common/utils/getMapboxRender.d.ts.map +1 -0
  81. package/common/utils/getMapboxRender.js +77 -0
  82. package/common/utils/getMaplibreRender.d.ts +5 -0
  83. package/common/utils/getMaplibreRender.d.ts.map +1 -0
  84. package/common/utils/getMaplibreRender.js +38 -0
  85. package/common/utils/getRealtimeModeSuffix.d.ts +8 -0
  86. package/common/utils/getRealtimeModeSuffix.d.ts.map +1 -0
  87. package/common/utils/getRealtimeModeSuffix.js +11 -2
  88. package/common/utils/getUrlWithParams.d.ts +9 -0
  89. package/common/utils/getUrlWithParams.d.ts.map +1 -0
  90. package/common/utils/getUrlWithParams.js +20 -10
  91. package/common/utils/getVehiclePosition.d.ts +14 -0
  92. package/common/utils/getVehiclePosition.d.ts.map +1 -0
  93. package/common/utils/getVehiclePosition.js +63 -39
  94. package/common/utils/index.d.ts +12 -0
  95. package/common/utils/index.d.ts.map +1 -0
  96. package/common/utils/index.js +37 -9
  97. package/common/utils/removeDuplicate.d.ts +10 -0
  98. package/common/utils/removeDuplicate.d.ts.map +1 -0
  99. package/common/utils/removeDuplicate.js +29 -7
  100. package/common/utils/renderTrajectories.d.ts +20 -0
  101. package/common/utils/renderTrajectories.d.ts.map +1 -0
  102. package/common/utils/renderTrajectories.js +111 -78
  103. package/common/utils/sortByDelay.d.ts +3 -0
  104. package/common/utils/sortByDelay.d.ts.map +1 -0
  105. package/common/utils/sortByDelay.js +21 -17
  106. package/common/utils/timeUtils.d.ts +5 -0
  107. package/common/utils/timeUtils.d.ts.map +1 -0
  108. package/common/utils/timeUtils.js +47 -18
  109. package/common/utils/trackerConfig.d.ts +24 -0
  110. package/common/utils/trackerConfig.d.ts.map +1 -0
  111. package/common/utils/trackerConfig.js +171 -118
  112. package/iife.d.ts +3 -0
  113. package/iife.d.ts.map +1 -0
  114. package/iife.js +7 -0
  115. package/index.d.ts +6 -0
  116. package/index.d.ts.map +1 -0
  117. package/index.js +10 -7
  118. package/mapbox/controls/CopyrightControl.d.ts +32 -0
  119. package/mapbox/controls/CopyrightControl.d.ts.map +1 -0
  120. package/mapbox/controls/CopyrightControl.js +72 -28
  121. package/mapbox/controls/index.d.ts +2 -0
  122. package/mapbox/controls/index.d.ts.map +1 -0
  123. package/mapbox/controls/index.js +6 -1
  124. package/mapbox/index.d.ts +5 -0
  125. package/mapbox/index.d.ts.map +1 -0
  126. package/mapbox/index.js +20 -4
  127. package/mapbox/layers/Layer.d.ts +47 -0
  128. package/mapbox/layers/Layer.d.ts.map +1 -0
  129. package/mapbox/layers/Layer.js +137 -54
  130. package/mapbox/layers/RealtimeLayer.d.ts +118 -0
  131. package/mapbox/layers/RealtimeLayer.d.ts.map +1 -0
  132. package/mapbox/layers/RealtimeLayer.js +310 -183
  133. package/mapbox/layers/index.d.ts +3 -0
  134. package/mapbox/layers/index.d.ts.map +1 -0
  135. package/mapbox/layers/index.js +7 -2
  136. package/mapbox/utils.d.ts +8 -0
  137. package/mapbox/utils.d.ts.map +1 -0
  138. package/mapbox/utils.js +54 -29
  139. package/mbt.js +2052 -2109
  140. package/mbt.js.map +3 -3
  141. package/mbt.min.js +18 -18
  142. package/mbt.min.js.map +3 -3
  143. package/ol/controls/CopyrightControl.d.ts +31 -0
  144. package/ol/controls/CopyrightControl.d.ts.map +1 -0
  145. package/ol/controls/CopyrightControl.js +89 -41
  146. package/ol/controls/RoutingControl.d.ts +180 -0
  147. package/ol/controls/RoutingControl.d.ts.map +1 -0
  148. package/ol/controls/RoutingControl.js +666 -371
  149. package/ol/controls/StopFinderControl.d.ts +32 -0
  150. package/ol/controls/StopFinderControl.d.ts.map +1 -0
  151. package/ol/controls/StopFinderControl.js +59 -10
  152. package/ol/controls/index.d.ts +4 -0
  153. package/ol/controls/index.d.ts.map +1 -0
  154. package/ol/controls/index.js +9 -3
  155. package/ol/index.d.ts +6 -0
  156. package/ol/index.d.ts.map +1 -0
  157. package/ol/index.js +21 -5
  158. package/ol/layers/Layer.d.ts +49 -0
  159. package/ol/layers/Layer.d.ts.map +1 -0
  160. package/ol/layers/Layer.js +178 -81
  161. package/ol/layers/MapboxLayer.d.ts +42 -0
  162. package/ol/layers/MapboxLayer.d.ts.map +1 -0
  163. package/ol/layers/MapboxLayer.js +131 -198
  164. package/ol/layers/MapboxStyleLayer.d.ts +146 -0
  165. package/ol/layers/MapboxStyleLayer.d.ts.map +1 -0
  166. package/ol/layers/MapboxStyleLayer.js +382 -186
  167. package/ol/layers/MaplibreLayer.d.ts +27 -0
  168. package/ol/layers/MaplibreLayer.d.ts.map +1 -0
  169. package/ol/layers/MaplibreLayer.js +67 -138
  170. package/ol/layers/RealtimeLayer.d.ts +119 -0
  171. package/ol/layers/RealtimeLayer.d.ts.map +1 -0
  172. package/ol/layers/RealtimeLayer.js +327 -184
  173. package/ol/layers/RoutingLayer.d.ts +24 -0
  174. package/ol/layers/RoutingLayer.d.ts.map +1 -0
  175. package/ol/layers/RoutingLayer.js +111 -56
  176. package/ol/layers/VectorLayer.d.ts +23 -0
  177. package/ol/layers/VectorLayer.d.ts.map +1 -0
  178. package/ol/layers/VectorLayer.js +71 -21
  179. package/ol/layers/WMSLayer.d.ts +38 -0
  180. package/ol/layers/WMSLayer.d.ts.map +1 -0
  181. package/ol/layers/WMSLayer.js +105 -37
  182. package/ol/layers/index.d.ts +9 -0
  183. package/ol/layers/index.d.ts.map +1 -0
  184. package/ol/layers/index.js +19 -8
  185. package/ol/styles/fullTrajectoryDelayStyle.d.ts +4 -0
  186. package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +1 -0
  187. package/ol/styles/fullTrajectoryDelayStyle.js +32 -28
  188. package/ol/styles/fullTrajectoryStyle.d.ts +4 -0
  189. package/ol/styles/fullTrajectoryStyle.d.ts.map +1 -0
  190. package/ol/styles/fullTrajectoryStyle.js +44 -40
  191. package/ol/styles/index.d.ts +3 -0
  192. package/ol/styles/index.d.ts.map +1 -0
  193. package/ol/styles/index.js +7 -2
  194. package/package.json +14 -36
  195. package/setupTests.d.ts +2 -0
  196. package/setupTests.d.ts.map +1 -0
  197. package/setupTests.js +15 -0
  198. package/types/index.d.ts +7 -6
  199. package/types/routing.d.ts +25 -25
  200. package/types/stops.d.ts +19 -19
  201. package/api/RealtimeAPI.test.js +0 -67
  202. package/api/RoutingAPI.test.js +0 -25
  203. package/api/StopsAPI.test.js +0 -22
  204. package/common/api/HttpAPI.test.js +0 -50
  205. package/common/api/WebSocketAPI.test.js +0 -311
  206. package/common/controls/Control.test.js +0 -87
  207. package/common/layers/Layer.test.js +0 -134
  208. package/common/mixins/UserInteractionsLayerMixin.test.js +0 -199
  209. package/common/utils/createTrackerFilters.test.js +0 -79
  210. package/common/utils/getMapboxMapCopyrights.test.js +0 -40
  211. package/common/utils/removeDuplicate.test.js +0 -19
  212. package/common/utils/timeUtils.test.js +0 -10
  213. package/common/utils/trackerConfig.test.js +0 -23
  214. package/mapbox/layers/Layer.test.js +0 -182
  215. package/mapbox/layers/RealtimeLayer.test.js +0 -10
  216. package/ol/controls/CopyrightControl.test.js +0 -165
  217. package/ol/controls/RoutingControl.test.js +0 -146
  218. package/ol/controls/StopFinderControl.test.js +0 -48
  219. package/ol/layers/Layer.test.js +0 -175
  220. package/ol/layers/MapboxLayer.test.js +0 -160
  221. package/ol/layers/MapboxStyleLayer.test.js +0 -226
  222. package/ol/layers/RealtimeLayer.test.js +0 -67
  223. package/ol/layers/RoutingLayer.test.js +0 -39
  224. package/ol/layers/VectorLayer.test.js +0 -76
  225. package/ol/layers/WMSLayer.test.js +0 -57
@@ -1,199 +0,0 @@
1
- import VectorLayer from "ol/layer/Vector";
2
- import VectorSource from "ol/source/Vector";
3
- import BaseLayer from "../layers/Layer";
4
- import mixin from "./UserInteractionsLayerMixin";
5
- const olLayer = new VectorLayer({ source: new VectorSource() });
6
- const Layer = mixin(BaseLayer);
7
- describe("Layer", () => {
8
- test("should initialize.", () => {
9
- const layer = new Layer();
10
- expect(layer).toBeInstanceOf(Layer);
11
- });
12
- test("should define default properties.", () => {
13
- const layer = new Layer();
14
- expect(layer).toBeInstanceOf(Layer);
15
- expect(layer.userInteractions).toEqual(true);
16
- expect(layer.userClickInteractions).toEqual(true);
17
- expect(layer.userHoverInteractions).toEqual(true);
18
- expect(layer.defaultUserInteractions).toBe(true);
19
- expect(layer.userClickCallbacks).toEqual([]);
20
- expect(layer.userHoverCallbacks).toEqual([]);
21
- expect(layer.userClickEventsKeys).toEqual([]);
22
- expect(layer.userHoverEventsKeys).toEqual([]);
23
- });
24
- test("should set userInteractionsXXX to false.", () => {
25
- const options = {
26
- userInteractions: false,
27
- userClickInteractions: false,
28
- userHoverInteractions: false,
29
- defaultUserInteractions: false
30
- };
31
- const layer = new Layer(options);
32
- expect(layer).toBeInstanceOf(Layer);
33
- expect(layer.userInteractions).toBe(false);
34
- expect(layer.userClickInteractions).toBe(false);
35
- expect(layer.userHoverInteractions).toBe(false);
36
- expect(layer.defaultUserInteractions).toBe(false);
37
- });
38
- test("should set onClick using constructor", () => {
39
- const fn = () => {
40
- };
41
- const layer = new Layer({
42
- onClick: fn,
43
- onHover: fn
44
- });
45
- expect(layer.userClickCallbacks[0]).toBe(fn);
46
- expect(layer.userHoverCallbacks[0]).toBe(fn);
47
- expect(layer.userClickEventsKeys.length).toBe(0);
48
- expect(layer.userHoverEventsKeys.length).toBe(0);
49
- });
50
- describe("#attachToMap()", () => {
51
- test("should not add events if no callbacks", () => {
52
- const layer = new Layer({
53
- olLayer
54
- });
55
- expect(layer.map).toBe(void 0);
56
- const obj = {};
57
- layer.attachToMap(obj);
58
- expect(layer.userClickEventsKeys.length).toBe(0);
59
- expect(layer.userHoverEventsKeys.length).toBe(0);
60
- });
61
- test("should add events", () => {
62
- const fn = () => {
63
- };
64
- const layer = new Layer({
65
- olLayer,
66
- onClick: fn,
67
- onHover: fn
68
- });
69
- expect(layer.map).toBe(void 0);
70
- const obj = {};
71
- layer.attachToMap(obj);
72
- expect(layer.userClickEventsKeys.length).toBe(1);
73
- expect(layer.userHoverEventsKeys.length).toBe(1);
74
- });
75
- });
76
- describe("#onClick()", () => {
77
- test("adds function to callback array", () => {
78
- const layer = new Layer();
79
- const fn = jest.fn();
80
- const fn2 = jest.fn();
81
- layer.onClick(fn);
82
- expect(layer.userClickCallbacks).toEqual([fn]);
83
- layer.onClick(fn2);
84
- expect(layer.userClickCallbacks).toEqual([fn, fn2]);
85
- expect(layer.userClickEventsKeys.length).toBe(0);
86
- layer.attachToMap({});
87
- expect(layer.userClickEventsKeys.length).toBe(2);
88
- });
89
- });
90
- describe("#onHover()", () => {
91
- test("adds function to callback array", () => {
92
- const layer = new Layer();
93
- const fn = jest.fn();
94
- const fn2 = jest.fn();
95
- layer.onHover(fn);
96
- expect(layer.userHoverCallbacks).toEqual([fn]);
97
- layer.onHover(fn2);
98
- expect(layer.userHoverCallbacks).toEqual([fn, fn2]);
99
- expect(layer.userHoverEventsKeys.length).toBe(0);
100
- layer.attachToMap({});
101
- expect(layer.userHoverEventsKeys.length).toBe(2);
102
- });
103
- });
104
- describe("#onUserClickCallback()", () => {
105
- const evt = { type: "signleclick", coordinate: [0, 0] };
106
- const getFeatureInfo = (layer, features = []) => ({
107
- features,
108
- layer,
109
- coordinate: evt.coordinate,
110
- event: evt
111
- });
112
- test("calls click callback functions", async (done) => {
113
- const layer = new Layer();
114
- const goodFeatureInfo = getFeatureInfo(layer, [{ name: "test" }]);
115
- const fn = jest.fn();
116
- const fn2 = jest.fn();
117
- const spy = jest.spyOn(layer, "getFeatureInfoAtCoordinate").mockResolvedValue(goodFeatureInfo);
118
- layer.onClick(fn);
119
- layer.onClick(fn2);
120
- layer.attachToMap({});
121
- layer.onUserClickCallback(evt).then((featureInfo) => {
122
- expect(spy).toHaveBeenCalledTimes(1);
123
- expect(spy).toHaveBeenCalledWith(evt.coordinate);
124
- expect(featureInfo).toBe(goodFeatureInfo);
125
- expect(fn).toHaveBeenCalledTimes(1);
126
- expect(fn.mock.calls[0][0]).toBe(goodFeatureInfo.features);
127
- expect(fn.mock.calls[0][1]).toBe(goodFeatureInfo.layer);
128
- expect(fn.mock.calls[0][2]).toBe(goodFeatureInfo.coordinate);
129
- expect(fn2).toHaveBeenCalledTimes(1);
130
- expect(fn2.mock.calls[0][0]).toBe(goodFeatureInfo.features);
131
- expect(fn2.mock.calls[0][1]).toBe(goodFeatureInfo.layer);
132
- expect(fn2.mock.calls[0][2]).toBe(goodFeatureInfo.coordinate);
133
- done();
134
- });
135
- });
136
- describe("returns empty feature info", () => {
137
- test("if an error is thrown in click callback", (done) => {
138
- const layer = new Layer();
139
- layer.onClick(() => {
140
- throw new Error("foo");
141
- });
142
- const goodFeatureInfo = getFeatureInfo(layer, [{ name: "test" }]);
143
- jest.spyOn(layer, "getFeatureInfoAtCoordinate").mockResolvedValue(goodFeatureInfo);
144
- layer.attachToMap({});
145
- layer.onUserClickCallback(evt).then((featureInfo) => {
146
- expect(featureInfo).toEqual(getFeatureInfo(layer));
147
- done();
148
- });
149
- });
150
- });
151
- });
152
- describe("#onUserMoveCallback()", () => {
153
- const evt = { type: "pointermove", coordinate: [0, 0] };
154
- const getFeatureInfo = (layer, features = []) => ({
155
- features,
156
- layer,
157
- coordinate: evt.coordinate,
158
- event: evt
159
- });
160
- test("calls hover callback functions", (done) => {
161
- const layer = new Layer();
162
- const goodFeatureInfo = getFeatureInfo(layer, [{ name: "test" }]);
163
- const fn = jest.fn();
164
- const fn2 = jest.fn();
165
- const spy = jest.spyOn(layer, "getFeatureInfoAtCoordinate").mockResolvedValue(goodFeatureInfo);
166
- layer.onHover(fn);
167
- layer.onHover(fn2);
168
- layer.attachToMap({});
169
- layer.onUserMoveCallback(evt).then((featureInfo) => {
170
- expect(spy).toHaveBeenCalledTimes(1);
171
- expect(spy).toHaveBeenCalledWith(evt.coordinate);
172
- expect(featureInfo).toBe(goodFeatureInfo);
173
- expect(fn).toHaveBeenCalledTimes(1);
174
- expect(fn.mock.calls[0][0]).toBe(goodFeatureInfo.features);
175
- expect(fn.mock.calls[0][1]).toBe(goodFeatureInfo.layer);
176
- expect(fn.mock.calls[0][2]).toBe(goodFeatureInfo.coordinate);
177
- expect(fn2).toHaveBeenCalledTimes(1);
178
- expect(fn2.mock.calls[0][0]).toBe(goodFeatureInfo.features);
179
- expect(fn2.mock.calls[0][1]).toBe(goodFeatureInfo.layer);
180
- expect(fn2.mock.calls[0][2]).toBe(goodFeatureInfo.coordinate);
181
- done();
182
- });
183
- });
184
- describe("returns empty feature info", () => {
185
- test("if an error is thrown in hover callback", (done) => {
186
- const layer = new Layer();
187
- layer.onHover(() => {
188
- throw new Error("foo");
189
- });
190
- jest.spyOn(layer, "getFeatureInfoAtCoordinate").mockResolvedValue(getFeatureInfo(layer, [{ name: "test" }]));
191
- layer.attachToMap({});
192
- layer.onUserMoveCallback(evt).then((featureInfo) => {
193
- expect(featureInfo).toEqual(getFeatureInfo(layer));
194
- done();
195
- });
196
- });
197
- });
198
- });
199
- });
@@ -1,79 +0,0 @@
1
- import createTrackerFilters from "./createTrackerFilters";
2
- const u1 = {
3
- properties: {
4
- routeIdentifier: "001.000827.004:7",
5
- operator: "FoO",
6
- line: {
7
- name: "U1"
8
- }
9
- }
10
- };
11
- const ireta = {
12
- properties: {
13
- routeIdentifier: "0022.000827.004:7",
14
- operator: "BAR",
15
- line: {
16
- name: "IRETA"
17
- }
18
- }
19
- };
20
- const arb = {
21
- properties: {
22
- routeIdentifier: "00333.000827.004:7",
23
- operator: "qux",
24
- line: {
25
- name: "ARB"
26
- }
27
- }
28
- };
29
- const trajectories = [u1, ireta, arb];
30
- describe("#createTrackerFilter()", () => {
31
- test("returns null", () => {
32
- const filterFunc = createTrackerFilters();
33
- expect(filterFunc).toBe(null);
34
- });
35
- describe("using line", () => {
36
- test("as string", () => {
37
- const filterFunc = createTrackerFilters("u1,foo");
38
- expect(trajectories.filter(filterFunc)).toEqual([u1]);
39
- });
40
- test("as array of string", () => {
41
- const filterFunc = createTrackerFilters(["u1", "foo", "IRETA"]);
42
- expect(trajectories.filter(filterFunc)).toEqual([u1, ireta]);
43
- });
44
- });
45
- describe("using route identifier", () => {
46
- test("as string", () => {
47
- const filterFunc = createTrackerFilters(null, "1,foo");
48
- expect(trajectories.filter(filterFunc)).toEqual([u1]);
49
- });
50
- test("as array of string", () => {
51
- const filterFunc = createTrackerFilters(null, ["22", "foo", "1"]);
52
- expect(trajectories.filter(filterFunc)).toEqual([u1, ireta]);
53
- });
54
- });
55
- describe("using operator", () => {
56
- test("as string", () => {
57
- const filterFunc = createTrackerFilters(null, null, "foo");
58
- expect(trajectories.filter(filterFunc)).toEqual([u1]);
59
- });
60
- test("as array of string", () => {
61
- const filterFunc = createTrackerFilters(null, null, ["bar", "foo", "1"]);
62
- expect(trajectories.filter(filterFunc)).toEqual([u1, ireta]);
63
- });
64
- });
65
- describe("using regexLine", () => {
66
- test("as string", () => {
67
- const filterFunc = createTrackerFilters(null, null, null, "^(S|R$|RE|PE|D|IRE|RB|TER)");
68
- expect(trajectories.filter(filterFunc)).toEqual([ireta]);
69
- });
70
- test("as array of string", () => {
71
- const filterFunc = createTrackerFilters(null, null, null, [
72
- "^IR",
73
- "^ARB$",
74
- "foo"
75
- ]);
76
- expect(trajectories.filter(filterFunc)).toEqual([ireta, arb]);
77
- });
78
- });
79
- });
@@ -1,40 +0,0 @@
1
- import getMapboxMapCopyrights from "./getMapboxMapCopyrights";
2
- describe("getMapboxMapCopyrights()", () => {
3
- test("returns an empty array if map is not defined", () => {
4
- expect(getMapboxMapCopyrights().length).toBe(0);
5
- });
6
- test("returns an empty array if map.style is not defined", () => {
7
- expect(getMapboxMapCopyrights({}).length).toBe(0);
8
- });
9
- test("returns non depluicated copyrights in an array", () => {
10
- expect(getMapboxMapCopyrights({
11
- style: {
12
- sourceCaches: {
13
- used: {
14
- used: true,
15
- getSource() {
16
- return {
17
- attribution: '<a href="https://www.openmaptiles.org/" target="_blank">\xA9 OpenMapTiles</a> <a href="https://www.openstreetmap.org/about/" target="_blank">&copy; OpenStreetMap contributors</a>'
18
- };
19
- }
20
- },
21
- "not used": {
22
- used: false
23
- },
24
- "also used": {
25
- used: true,
26
- getSource() {
27
- return {
28
- attribution: '<a href="https://www.openmaptiles.org/" target="_blank">&copy; OpenMapTiles</a> <a href="https://www.imagico.de/" target="_blank">&copy; imagico</a>'
29
- };
30
- }
31
- }
32
- }
33
- }
34
- })).toEqual([
35
- '<a href="https://www.openmaptiles.org/" target="_blank">\xA9 OpenMapTiles</a>',
36
- '<a href="https://www.openstreetmap.org/about/" target="_blank">\xA9 OpenStreetMap contributors</a>',
37
- '<a href="https://www.imagico.de/" target="_blank">\xA9 imagico</a>'
38
- ]);
39
- });
40
- });
@@ -1,19 +0,0 @@
1
- import removeDuplicate from "./removeDuplicate";
2
- describe("removeDuplicate()", () => {
3
- test("removes duplicates", () => {
4
- expect(removeDuplicate([
5
- "a",
6
- " ",
7
- " ",
8
- "b",
9
- "a",
10
- void 0,
11
- null,
12
- "A",
13
- 0,
14
- "c",
15
- "b",
16
- "B"
17
- ])).toEqual(["a", "b", "c"]);
18
- });
19
- });
@@ -1,10 +0,0 @@
1
- import { getUTCDateString, getUTCTimeString } from "./timeUtils";
2
- describe("timeUtils", () => {
3
- test("getUTCDateString should be correct.", () => {
4
- expect(getUTCDateString(new Date(2020, 5, 30))).toBe("20200630");
5
- expect(getUTCDateString(new Date("January 1, 2021 00:15:30 GMT+2:00"))).toBe("20201231");
6
- });
7
- test("getUTCTimeString should be correct.", () => {
8
- expect(getUTCTimeString(new Date(2020, 5, 30, 11, 5, 1, 123))).toBe("11:5:1.123");
9
- });
10
- });
@@ -1,23 +0,0 @@
1
- import { getTypeIndex } from "./trackerConfig";
2
- describe("trackerConfig", () => {
3
- describe("#getTypeIndex()", () => {
4
- test("retrurn the type is it's not a string", () => {
5
- const obj = { foo: "foo" };
6
- expect(getTypeIndex(obj)).toBe(obj);
7
- expect(getTypeIndex(0)).toBe(0);
8
- expect(getTypeIndex(null)).toBe(null);
9
- expect(getTypeIndex(void 0)).toBe(void 0);
10
- });
11
- test("find good index for new tracker values", () => {
12
- expect(getTypeIndex("tram")).toBe(0);
13
- expect(getTypeIndex("subway")).toBe(1);
14
- expect(getTypeIndex("bus")).toBe(3);
15
- expect(getTypeIndex("ferry")).toBe(4);
16
- expect(getTypeIndex("cablecar")).toBe(5);
17
- expect(getTypeIndex("gondola")).toBe(6);
18
- expect(getTypeIndex("funicular")).toBe(7);
19
- expect(getTypeIndex("coach")).toBe(8);
20
- expect(getTypeIndex("rail")).toBe(9);
21
- });
22
- });
23
- });
@@ -1,182 +0,0 @@
1
- import { Map } from "maplibre-gl";
2
- import { toLonLat } from "ol/proj";
3
- import Layer from "./Layer";
4
- let map;
5
- let mapElement;
6
- describe("Layer", () => {
7
- beforeEach(() => {
8
- mapElement = document.createElement("div");
9
- const { style } = mapElement;
10
- style.position = "absolute";
11
- style.left = "0px";
12
- style.top = "0px";
13
- style.width = "400px";
14
- style.height = "400px";
15
- mapElement.setAttribute("id", "map");
16
- document.body.appendChild(mapElement);
17
- map = new Map({
18
- container: document.getElementById("map"),
19
- style: `path/to/style`,
20
- center: toLonLat([831634, 5933959]),
21
- zoom: 9
22
- });
23
- });
24
- afterEach(() => {
25
- document.body.removeChild(mapElement);
26
- });
27
- test("should initialize.", () => {
28
- const layer = new Layer({ name: "Layer" });
29
- expect(layer).toBeInstanceOf(Layer);
30
- });
31
- test("should be visible by default.", () => {
32
- const layer = new Layer({ name: "Layer" });
33
- expect(layer.visible).toBe(true);
34
- });
35
- test("should be invisible if defined.", () => {
36
- const layer = new Layer({ name: "Layer", visible: false });
37
- expect(layer.visible).toBe(false);
38
- });
39
- test("should be invisible if set.", () => {
40
- const layer = new Layer({ name: "Layer" });
41
- layer.visible = false;
42
- expect(layer.visible).toBe(false);
43
- });
44
- test("should visibility stay unchanged", () => {
45
- const layer = new Layer({ name: "Layer", visible: false });
46
- layer.visible = false;
47
- expect(layer.visible).toBe(false);
48
- });
49
- test("should return its name.", () => {
50
- const layer = new Layer({ name: "Layer", visible: false });
51
- expect(layer.name).toEqual("Layer");
52
- });
53
- test("should call terminate on initialization.", () => {
54
- const layer = new Layer({ name: "Layer" });
55
- const spy = jest.spyOn(layer, "detachFromMap");
56
- layer.attachToMap(map);
57
- expect(spy).toHaveBeenCalledTimes(1);
58
- });
59
- test("should listen for click/hover events when layer is visible by default then should not when hidden.", async () => {
60
- global.console.error = jest.fn();
61
- const layer = new Layer({ name: "Layer" });
62
- expect(layer.visible).toBe(true);
63
- const spy = jest.fn();
64
- const spy2 = jest.fn();
65
- layer.onHover(spy);
66
- layer.onClick(spy2);
67
- layer.attachToMap(map);
68
- expect(spy).toHaveBeenCalledTimes(0);
69
- expect(spy2).toHaveBeenCalledTimes(0);
70
- await map.fire("mousemove", {
71
- type: "mousemove",
72
- lngLat: { toArray: () => [0, 0] },
73
- coordinate: [0, 0]
74
- });
75
- await map.fire("click", {
76
- type: "click",
77
- lngLat: { toArray: () => [0, 0] }
78
- });
79
- expect(spy).toHaveBeenCalledTimes(1);
80
- expect(spy2).toHaveBeenCalledTimes(1);
81
- spy.mockReset();
82
- spy2.mockReset();
83
- layer.visible = false;
84
- await map.fire("mousemove", {
85
- type: "mousemove",
86
- lngLat: { toArray: () => [0, 0] }
87
- });
88
- await map.fire("click", {
89
- type: "click",
90
- lngLat: { toArray: () => [0, 0] }
91
- });
92
- expect(spy).toHaveBeenCalledTimes(0);
93
- expect(spy2).toHaveBeenCalledTimes(0);
94
- global.console.error.mockRestore();
95
- });
96
- test("should not listen for click/hover events when layer is not visible by default then should not when visible.", async () => {
97
- global.console.error = jest.fn();
98
- const layer = new Layer({ name: "Layer", visible: false });
99
- expect(layer.visible).toBe(false);
100
- const spy = jest.fn();
101
- const spy2 = jest.fn();
102
- layer.onHover(spy);
103
- layer.onClick(spy2);
104
- layer.attachToMap(map);
105
- expect(spy).toHaveBeenCalledTimes(0);
106
- expect(spy2).toHaveBeenCalledTimes(0);
107
- await map.fire("mousemove", {
108
- type: "mousemove",
109
- lngLat: { toArray: () => [0, 0] },
110
- coordinate: [0, 0]
111
- });
112
- await map.fire("click", {
113
- type: "click",
114
- lngLat: { toArray: () => [0, 0] }
115
- });
116
- expect(spy).toHaveBeenCalledTimes(0);
117
- expect(spy2).toHaveBeenCalledTimes(0);
118
- spy.mockReset();
119
- spy2.mockReset();
120
- layer.visible = true;
121
- await map.fire("mousemove", {
122
- type: "mousemove",
123
- lngLat: { toArray: () => [0, 0] },
124
- coordinate: [0, 0]
125
- });
126
- await map.fire("click", {
127
- type: "click",
128
- lngLat: { toArray: () => [0, 0] }
129
- });
130
- expect(spy).toHaveBeenCalledTimes(1);
131
- expect(spy2).toHaveBeenCalledTimes(1);
132
- global.console.error.mockRestore();
133
- });
134
- test("should not listen for click/hover events after layer.detachFromMap()", async () => {
135
- global.console.error = jest.fn();
136
- const layer = new Layer({ name: "Layer", visible: true });
137
- expect(layer.visible).toBe(true);
138
- const spy = jest.fn();
139
- const spy2 = jest.fn();
140
- layer.onHover(spy);
141
- layer.onClick(spy2);
142
- layer.attachToMap(map);
143
- expect(spy).toHaveBeenCalledTimes(0);
144
- expect(spy2).toHaveBeenCalledTimes(0);
145
- await map.fire("mousemove", {
146
- type: "mousemove",
147
- lngLat: { toArray: () => [0, 0] },
148
- coordinate: [0, 0]
149
- });
150
- await map.fire("click", {
151
- type: "click",
152
- lngLat: { toArray: () => [0, 0] }
153
- });
154
- expect(spy).toHaveBeenCalledTimes(1);
155
- expect(spy2).toHaveBeenCalledTimes(1);
156
- spy.mockReset();
157
- spy2.mockReset();
158
- layer.detachFromMap();
159
- await map.fire("mousemove", {
160
- type: "mousemove",
161
- lngLat: { toArray: () => [0, 0] },
162
- coordinate: [0, 0]
163
- });
164
- await map.fire("click", {
165
- type: "click",
166
- lngLat: { toArray: () => [0, 0] }
167
- });
168
- expect(spy).toHaveBeenCalledTimes(0);
169
- expect(spy2).toHaveBeenCalledTimes(0);
170
- global.console.error.mockRestore();
171
- });
172
- test("should clone", () => {
173
- const layer = new Layer({
174
- name: "Layer",
175
- copyrights: ["bar"]
176
- });
177
- const clone = layer.clone({ name: "clone" });
178
- expect(clone).not.toBe(layer);
179
- expect(clone.name).toBe("clone");
180
- expect(clone).toBeInstanceOf(Layer);
181
- });
182
- });
@@ -1,10 +0,0 @@
1
- import RealtimeLayer from "./RealtimeLayer";
2
- let layer;
3
- describe("RealtimeLayer", () => {
4
- beforeEach(() => {
5
- layer = new RealtimeLayer();
6
- });
7
- test("should be instanced.", () => {
8
- expect(layer).toBeInstanceOf(RealtimeLayer);
9
- });
10
- });