react-spatial 1.1.6 → 1.2.0-beta.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.
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js +28 -26
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js.map +1 -1
- package/components/BaseLayerToggler/BaseLayerToggler.test.js +48 -80
- package/components/BaseLayerToggler/BaseLayerToggler.test.js.map +1 -1
- package/components/BasicMap/BasicMap.test.js +62 -73
- package/components/BasicMap/BasicMap.test.js.map +1 -1
- package/components/RouteSchedule/RouteSchedule.test.js +0 -3
- package/components/RouteSchedule/RouteSchedule.test.js.map +1 -1
- package/components/Search/Search.test.js +0 -4
- package/components/Search/Search.test.js.map +1 -1
- package/components/StopsFinder/StopsFinder.test.js +0 -4
- package/components/StopsFinder/StopsFinder.test.js.map +1 -1
- package/components/TrackerControl/TrackerControl.test.js +0 -4
- package/components/TrackerControl/TrackerControl.test.js.map +1 -1
- package/package.json +6 -3
- package/utils/KML.test.js +0 -3
- package/utils/KML.test.js.map +1 -1
- package/utils/KMLFormat.test.js +0 -3
- package/utils/KMLFormat.test.js.map +1 -1
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
/* eslint-disable react/jsx-props-no-spreading */
|
|
2
1
|
import React from 'react';
|
|
3
|
-
import { configure, mount } from 'enzyme';
|
|
4
|
-
import Adapter from 'enzyme-adapter-react-16';
|
|
5
|
-
import 'jest-canvas-mock';
|
|
6
|
-
import renderer from 'react-test-renderer';
|
|
7
2
|
import { Layer } from 'mobility-toolbox-js/ol';
|
|
3
|
+
import { fireEvent, render } from '@testing-library/react';
|
|
8
4
|
import BaseLayerSwitcher from './BaseLayerSwitcher';
|
|
9
5
|
|
|
10
|
-
configure({ adapter: new Adapter() });
|
|
11
|
-
|
|
12
6
|
describe('BaseLayerSwitcher', function () {
|
|
13
7
|
var layers;
|
|
14
8
|
var layerImages = {
|
|
@@ -37,49 +31,57 @@ describe('BaseLayerSwitcher', function () {
|
|
|
37
31
|
|
|
38
32
|
describe('matches snapshots', function () {
|
|
39
33
|
test('using default properties.', function () {
|
|
40
|
-
var
|
|
34
|
+
var ref = render(
|
|
41
35
|
React.createElement( BaseLayerSwitcher, { layers: layers, layerImages: layerImages })
|
|
42
36
|
);
|
|
43
|
-
var
|
|
44
|
-
expect(
|
|
37
|
+
var container = ref.container;
|
|
38
|
+
expect(container.innerHTML).toMatchSnapshot();
|
|
45
39
|
});
|
|
46
40
|
});
|
|
47
41
|
|
|
48
42
|
test('the correct baselayer is visible on mount', function () {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
);
|
|
52
|
-
expect(comp.props().layers[0].visible).toBe(true);
|
|
43
|
+
render(React.createElement( BaseLayerSwitcher, { layers: layers, layerImages: layerImages }));
|
|
44
|
+
expect(layers[0].visible).toBe(true);
|
|
53
45
|
});
|
|
54
46
|
|
|
55
|
-
test('removes open class and switches layer on click', function () {
|
|
56
|
-
var
|
|
47
|
+
test('removes open class and switches layer on click', async function () {
|
|
48
|
+
var ref = render(
|
|
57
49
|
React.createElement( BaseLayerSwitcher, { layers: layers, layerImages: layerImages })
|
|
58
50
|
);
|
|
59
|
-
|
|
60
|
-
|
|
51
|
+
var container = ref.container;
|
|
52
|
+
await fireEvent.click(container.querySelector('.rs-opener'));
|
|
53
|
+
await fireEvent.click(
|
|
54
|
+
container.querySelectorAll('.rs-base-layer-switcher-button')[3]
|
|
55
|
+
);
|
|
61
56
|
expect(
|
|
62
|
-
|
|
57
|
+
layers.filter(function (layer) {
|
|
63
58
|
return layer.isBaseLayer;
|
|
64
59
|
})[2].visible
|
|
65
60
|
).toBe(true);
|
|
66
|
-
expect(
|
|
61
|
+
expect(!!container.querySelector('.rs-base-layer-switcher rs-open')).toBe(
|
|
62
|
+
false
|
|
63
|
+
);
|
|
67
64
|
});
|
|
68
65
|
|
|
69
|
-
test('toggles base map instead of opening when only two base layers', function () {
|
|
70
|
-
var
|
|
66
|
+
test('toggles base map instead of opening when only two base layers', async function () {
|
|
67
|
+
var ref = render(
|
|
68
|
+
React.createElement( BaseLayerSwitcher, { layers: layers.slice(0, 2) })
|
|
69
|
+
);
|
|
70
|
+
var container = ref.container;
|
|
71
71
|
expect(
|
|
72
|
-
|
|
72
|
+
layers.filter(function (layer) {
|
|
73
73
|
return layer.isBaseLayer;
|
|
74
74
|
})[0].visible
|
|
75
75
|
).toBe(true);
|
|
76
|
-
|
|
76
|
+
await fireEvent.click(container.querySelector('.rs-opener'));
|
|
77
77
|
expect(
|
|
78
|
-
|
|
78
|
+
layers.filter(function (layer) {
|
|
79
79
|
return layer.isBaseLayer;
|
|
80
80
|
})[1].visible
|
|
81
81
|
).toBe(true);
|
|
82
|
-
expect(
|
|
82
|
+
expect(!!container.querySelector('.rs-base-layer-switcher rs-open')).toBe(
|
|
83
|
+
false
|
|
84
|
+
);
|
|
83
85
|
});
|
|
84
86
|
});
|
|
85
87
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseLayerSwitcher.test.js","sources":["../../../src/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"BaseLayerSwitcher.test.js","sources":["../../../src/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js"],"sourcesContent":["import React from 'react';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport { fireEvent, render } from '@testing-library/react';\nimport BaseLayerSwitcher from './BaseLayerSwitcher';\n\ndescribe('BaseLayerSwitcher', () => {\n let layers;\n const layerImages = {\n layerFoo: 'foo',\n layerBar: 'bar',\n layerFoobar: 'foobar',\n };\n\n beforeEach(() => {\n layers = [\n new Layer({\n name: 'bl1',\n isBaseLayer: true,\n }),\n new Layer({\n name: 'bl2',\n isBaseLayer: true,\n visible: false,\n }),\n new Layer({\n name: 'bl3',\n isBaseLayer: true,\n visible: false,\n }),\n ];\n });\n\n describe('matches snapshots', () => {\n test('using default properties.', () => {\n const { container } = render(\n <BaseLayerSwitcher layers={layers} layerImages={layerImages} />,\n );\n expect(container.innerHTML).toMatchSnapshot();\n });\n });\n\n test('the correct baselayer is visible on mount', () => {\n render(<BaseLayerSwitcher layers={layers} layerImages={layerImages} />);\n expect(layers[0].visible).toBe(true);\n });\n\n test('removes open class and switches layer on click', async () => {\n const { container } = render(\n <BaseLayerSwitcher layers={layers} layerImages={layerImages} />,\n );\n await fireEvent.click(container.querySelector('.rs-opener'));\n await fireEvent.click(\n container.querySelectorAll('.rs-base-layer-switcher-button')[3],\n );\n expect(\n layers.filter((layer) => {\n return layer.isBaseLayer;\n })[2].visible,\n ).toBe(true);\n expect(!!container.querySelector('.rs-base-layer-switcher rs-open')).toBe(\n false,\n );\n });\n\n test('toggles base map instead of opening when only two base layers', async () => {\n const { container } = render(\n <BaseLayerSwitcher layers={layers.slice(0, 2)} />,\n );\n expect(\n layers.filter((layer) => {\n return layer.isBaseLayer;\n })[0].visible,\n ).toBe(true);\n await fireEvent.click(container.querySelector('.rs-opener'));\n expect(\n layers.filter((layer) => {\n return layer.isBaseLayer;\n })[1].visible,\n ).toBe(true);\n expect(!!container.querySelector('.rs-base-layer-switcher rs-open')).toBe(\n false,\n );\n });\n});\n"],"names":["let","const"],"mappings":"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"}
|
|
@@ -1,20 +1,15 @@
|
|
|
1
1
|
/* eslint-disable react/jsx-props-no-spreading */
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { configure, shallow, mount } from 'enzyme';
|
|
4
|
-
import Adapter from 'enzyme-adapter-react-16';
|
|
5
|
-
import 'jest-canvas-mock';
|
|
6
3
|
import OLMap from 'ol/Map';
|
|
4
|
+
import { fireEvent, render, screen } from '@testing-library/react';
|
|
7
5
|
import { Layer } from 'mobility-toolbox-js/ol';
|
|
8
|
-
import renderer from 'react-test-renderer';
|
|
9
6
|
import BaseLayerToggler from './BaseLayerToggler';
|
|
10
7
|
import LayerService from '../../LayerService';
|
|
11
8
|
|
|
12
|
-
configure({ adapter: new Adapter() });
|
|
13
|
-
|
|
14
9
|
var shallowComp = function (layers, props) {
|
|
15
10
|
var map = new OLMap({});
|
|
16
11
|
var layerService = new LayerService(layers);
|
|
17
|
-
return
|
|
12
|
+
return render(
|
|
18
13
|
React.createElement( BaseLayerToggler, Object.assign({},
|
|
19
14
|
{ layerService: layerService, map: map }, (props || {})))
|
|
20
15
|
);
|
|
@@ -22,7 +17,7 @@ var shallowComp = function (layers, props) {
|
|
|
22
17
|
var mountComp = function (layers, props) {
|
|
23
18
|
var map = new OLMap({});
|
|
24
19
|
var layerService = new LayerService(layers);
|
|
25
|
-
return
|
|
20
|
+
return render(
|
|
26
21
|
React.createElement( BaseLayerToggler, Object.assign({},
|
|
27
22
|
{ layerService: layerService, map: map }, (props || {})))
|
|
28
23
|
);
|
|
@@ -31,12 +26,12 @@ var mountComp = function (layers, props) {
|
|
|
31
26
|
var expectSnapshot = function (layers, props) {
|
|
32
27
|
var map = new OLMap({});
|
|
33
28
|
var layerService = new LayerService(layers);
|
|
34
|
-
var
|
|
29
|
+
var ref = render(
|
|
35
30
|
React.createElement( BaseLayerToggler, Object.assign({},
|
|
36
31
|
{ layerService: layerService, map: map }, (props || {})))
|
|
37
32
|
);
|
|
38
|
-
var
|
|
39
|
-
expect(
|
|
33
|
+
var container = ref.container;
|
|
34
|
+
expect(container.innerHTML).toMatchSnapshot();
|
|
40
35
|
};
|
|
41
36
|
|
|
42
37
|
describe('BaseLayerToggler', function () {
|
|
@@ -66,93 +61,66 @@ describe('BaseLayerToggler', function () {
|
|
|
66
61
|
});
|
|
67
62
|
|
|
68
63
|
test('initialize correctly the state', function () {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
expect(comp.state.idx).toBe(1);
|
|
72
|
-
expect(comp.state.layers.length).toBe(3);
|
|
73
|
-
expect(comp.state.layerVisible).toBe(comp.state.layers[0]);
|
|
64
|
+
shallowComp(layers);
|
|
65
|
+
expect(layers[0].visible).toBe(true);
|
|
74
66
|
});
|
|
75
67
|
|
|
76
|
-
test('goes forward through all available layer except the current layer displayed on the map.', function () {
|
|
77
|
-
var
|
|
78
|
-
var
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
wrapper.find('.rs-base-layer-next').simulate('click');
|
|
85
|
-
expect(comp.state.layerVisible).toBe(layerVisible);
|
|
86
|
-
expect(comp.state.idx).toBe(2);
|
|
68
|
+
test('goes forward through all available layer except the current layer displayed on the map.', async function () {
|
|
69
|
+
var ref = shallowComp(layers);
|
|
70
|
+
var container = ref.container;
|
|
71
|
+
expect(layers[0].visible).toBe(true);
|
|
72
|
+
await fireEvent.click(
|
|
73
|
+
container.querySelector('.rs-base-layer-toggle-button')
|
|
74
|
+
);
|
|
75
|
+
expect(layers[1].visible).toBe(true);
|
|
87
76
|
|
|
88
77
|
// Layer at index 0 is displayed on the map so we must ignore it
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
78
|
+
await fireEvent.click(container.querySelector('.rs-base-layer-next'));
|
|
79
|
+
await fireEvent.click(
|
|
80
|
+
container.querySelector('.rs-base-layer-toggle-button')
|
|
81
|
+
);
|
|
82
|
+
expect(layers[2].visible).toBe(true);
|
|
83
|
+
|
|
84
|
+
await fireEvent.click(container.querySelector('.rs-base-layer-next'));
|
|
85
|
+
await fireEvent.click(
|
|
86
|
+
container.querySelector('.rs-base-layer-toggle-button')
|
|
87
|
+
);
|
|
88
|
+
expect(layers[0].visible).toBe(true);
|
|
92
89
|
});
|
|
93
90
|
|
|
94
|
-
test('goes backward through all available layer except the current layer displayed on the map.', function () {
|
|
95
|
-
var
|
|
96
|
-
var
|
|
97
|
-
|
|
98
|
-
expect(comp.state.layers.length).toBe(3);
|
|
99
|
-
expect(comp.state.layerVisible).toBe(layerVisible);
|
|
100
|
-
expect(comp.state.idx).toBe(1);
|
|
101
|
-
|
|
102
|
-
wrapper.find('.rs-base-layer-previous').simulate('click');
|
|
103
|
-
expect(comp.state.layerVisible).toBe(layerVisible);
|
|
104
|
-
expect(comp.state.idx).toBe(2);
|
|
91
|
+
test('goes backward through all available layer except the current layer displayed on the map.', async function () {
|
|
92
|
+
var ref = shallowComp(layers);
|
|
93
|
+
var container = ref.container;
|
|
94
|
+
expect(layers[0].visible).toBe(true);
|
|
105
95
|
|
|
106
96
|
// Layer at index 0 is displayed on the map so we must ignore it
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
expect(
|
|
118
|
-
expect(comp.state.idx).toBe(1);
|
|
119
|
-
comp.state.layers[0].setVisible(false);
|
|
120
|
-
|
|
121
|
-
expect(comp.state.layers.length).toBe(3);
|
|
122
|
-
expect(comp.state.layerVisible).toBe(comp.state.layers[1]);
|
|
123
|
-
expect(comp.state.idx).toBe(0);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
test('display on the map the layer clicked', function () {
|
|
127
|
-
var wrapper = mountComp(layers);
|
|
128
|
-
var comp = wrapper.instance();
|
|
129
|
-
expect(comp.state.layers.length).toBe(3);
|
|
130
|
-
expect(comp.state.layers[0].visible).toBe(true);
|
|
131
|
-
wrapper.find('.rs-base-layer-toggle-button').simulate('click');
|
|
132
|
-
wrapper.update();
|
|
133
|
-
expect(comp.state.layers[0].visible).toBe(false);
|
|
134
|
-
expect(comp.state.layers[1].visible).toBe(true);
|
|
135
|
-
expect(comp.state.layerVisible).toBe(comp.state.layers[1]);
|
|
136
|
-
expect(comp.state.idx).toBe(0); // Toggle
|
|
97
|
+
await fireEvent.click(container.querySelector('.rs-base-layer-previous'));
|
|
98
|
+
await fireEvent.click(
|
|
99
|
+
container.querySelector('.rs-base-layer-toggle-button')
|
|
100
|
+
);
|
|
101
|
+
expect(layers[2].visible).toBe(true);
|
|
102
|
+
|
|
103
|
+
await fireEvent.click(container.querySelector('.rs-base-layer-next'));
|
|
104
|
+
await fireEvent.click(
|
|
105
|
+
container.querySelector('.rs-base-layer-toggle-button')
|
|
106
|
+
);
|
|
107
|
+
expect(layers[1].visible).toBe(true);
|
|
137
108
|
});
|
|
138
109
|
|
|
139
110
|
test('hide baseLayerToggler if only one baselayer', function () {
|
|
140
|
-
var
|
|
141
|
-
|
|
111
|
+
var ref = mountComp([layers[0]]);
|
|
112
|
+
var container = ref.container;
|
|
113
|
+
expect(container.innerHTML).toBe('');
|
|
142
114
|
});
|
|
143
115
|
|
|
144
116
|
test('should use children', function () {
|
|
145
|
-
|
|
117
|
+
shallowComp(layers, {
|
|
146
118
|
prevButtonContent: 'prev',
|
|
147
119
|
nextButtonContent: 'next',
|
|
148
120
|
});
|
|
149
|
-
expect(wrapper.find('.rs-base-layer-item').exists()).toBe(false);
|
|
150
|
-
|
|
151
|
-
var next = wrapper.find('.rs-base-layer-next').text();
|
|
152
|
-
var prev = wrapper.find('.rs-base-layer-previous').text();
|
|
153
121
|
|
|
154
|
-
expect(
|
|
155
|
-
expect(
|
|
122
|
+
expect(screen.getByText('next')).not.toBeNull();
|
|
123
|
+
expect(screen.getByText('prev')).not.toBeNull();
|
|
156
124
|
});
|
|
157
125
|
});
|
|
158
126
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseLayerToggler.test.js","sources":["../../../src/components/BaseLayerToggler/BaseLayerToggler.test.js"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\nimport { configure, shallow, mount } from 'enzyme';\nimport Adapter from 'enzyme-adapter-react-16';\nimport 'jest-canvas-mock';\nimport OLMap from 'ol/Map';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport renderer from 'react-test-renderer';\nimport BaseLayerToggler from './BaseLayerToggler';\nimport LayerService from '../../LayerService';\n\nconfigure({ adapter: new Adapter() });\n\nconst shallowComp = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n return shallow(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n};\nconst mountComp = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n return mount(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n};\n\nconst expectSnapshot = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n const component = renderer.create(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n};\n\ndescribe('BaseLayerToggler', () => {\n let layers;\n\n beforeEach(() => {\n layers = [\n new Layer({\n name: 'bl1',\n isBaseLayer: true,\n }),\n new Layer({\n name: 'bl2',\n isBaseLayer: true,\n visible: false,\n }),\n new Layer({\n name: 'bl3',\n isBaseLayer: true,\n visible: false,\n }),\n ];\n });\n describe('matches snapshots', () => {\n test('using default properties.', () => {\n expectSnapshot(layers);\n });\n });\n\n test('initialize correctly the state', () => {\n const wrapper = shallowComp(layers);\n const comp = wrapper.instance();\n expect(comp.state.idx).toBe(1);\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layerVisible).toBe(comp.state.layers[0]);\n });\n\n test('goes forward through all available layer except the current layer displayed on the map.', () => {\n const wrapper = shallowComp(layers);\n const comp = wrapper.instance();\n const layerVisible = comp.state.layers[0];\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(1);\n\n wrapper.find('.rs-base-layer-next').simulate('click');\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(2);\n\n // Layer at index 0 is displayed on the map so we must ignore it\n wrapper.find('.rs-base-layer-next').simulate('click');\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(1);\n });\n\n test('goes backward through all available layer except the current layer displayed on the map.', () => {\n const wrapper = shallowComp(layers);\n const comp = wrapper.instance();\n const layerVisible = comp.state.layers[0];\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(1);\n\n wrapper.find('.rs-base-layer-previous').simulate('click');\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(2);\n\n // Layer at index 0 is displayed on the map so we must ignore it\n wrapper.find('.rs-base-layer-previous').simulate('click');\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(1);\n });\n\n test('displays always a baseLayer on the map.', () => {\n const wrapper = shallowComp(layers);\n const comp = wrapper.instance();\n const layerVisible = comp.state.layers[0];\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(1);\n comp.state.layers[0].setVisible(false);\n\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layerVisible).toBe(comp.state.layers[1]);\n expect(comp.state.idx).toBe(0);\n });\n\n test('display on the map the layer clicked', () => {\n const wrapper = mountComp(layers);\n const comp = wrapper.instance();\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layers[0].visible).toBe(true);\n wrapper.find('.rs-base-layer-toggle-button').simulate('click');\n wrapper.update();\n expect(comp.state.layers[0].visible).toBe(false);\n expect(comp.state.layers[1].visible).toBe(true);\n expect(comp.state.layerVisible).toBe(comp.state.layers[1]);\n expect(comp.state.idx).toBe(0); // Toggle\n });\n\n test('hide baseLayerToggler if only one baselayer', () => {\n const wrapper = mountComp([layers[0]]);\n expect(wrapper.find('.rs-base-layer-item').exists()).toBe(false);\n });\n\n test('should use children', () => {\n const wrapper = shallowComp(layers, {\n prevButtonContent: 'prev',\n nextButtonContent: 'next',\n });\n expect(wrapper.find('.rs-base-layer-item').exists()).toBe(false);\n\n const next = wrapper.find('.rs-base-layer-next').text();\n const prev = wrapper.find('.rs-base-layer-previous').text();\n\n expect(next).toBe('next');\n expect(prev).toBe('prev');\n });\n});\n"],"names":["const","let"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseLayerToggler.test.js","sources":["../../../src/components/BaseLayerToggler/BaseLayerToggler.test.js"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\nimport OLMap from 'ol/Map';\nimport { fireEvent, render, screen } from '@testing-library/react';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport BaseLayerToggler from './BaseLayerToggler';\nimport LayerService from '../../LayerService';\n\nconst shallowComp = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n return render(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n};\nconst mountComp = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n return render(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n};\n\nconst expectSnapshot = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n const { container } = render(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n expect(container.innerHTML).toMatchSnapshot();\n};\n\ndescribe('BaseLayerToggler', () => {\n let layers;\n\n beforeEach(() => {\n layers = [\n new Layer({\n name: 'bl1',\n isBaseLayer: true,\n }),\n new Layer({\n name: 'bl2',\n isBaseLayer: true,\n visible: false,\n }),\n new Layer({\n name: 'bl3',\n isBaseLayer: true,\n visible: false,\n }),\n ];\n });\n describe('matches snapshots', () => {\n test('using default properties.', () => {\n expectSnapshot(layers);\n });\n });\n\n test('initialize correctly the state', () => {\n shallowComp(layers);\n expect(layers[0].visible).toBe(true);\n });\n\n test('goes forward through all available layer except the current layer displayed on the map.', async () => {\n const { container } = shallowComp(layers);\n expect(layers[0].visible).toBe(true);\n await fireEvent.click(\n container.querySelector('.rs-base-layer-toggle-button'),\n );\n expect(layers[1].visible).toBe(true);\n\n // Layer at index 0 is displayed on the map so we must ignore it\n await fireEvent.click(container.querySelector('.rs-base-layer-next'));\n await fireEvent.click(\n container.querySelector('.rs-base-layer-toggle-button'),\n );\n expect(layers[2].visible).toBe(true);\n\n await fireEvent.click(container.querySelector('.rs-base-layer-next'));\n await fireEvent.click(\n container.querySelector('.rs-base-layer-toggle-button'),\n );\n expect(layers[0].visible).toBe(true);\n });\n\n test('goes backward through all available layer except the current layer displayed on the map.', async () => {\n const { container } = shallowComp(layers);\n expect(layers[0].visible).toBe(true);\n\n // Layer at index 0 is displayed on the map so we must ignore it\n await fireEvent.click(container.querySelector('.rs-base-layer-previous'));\n await fireEvent.click(\n container.querySelector('.rs-base-layer-toggle-button'),\n );\n expect(layers[2].visible).toBe(true);\n\n await fireEvent.click(container.querySelector('.rs-base-layer-next'));\n await fireEvent.click(\n container.querySelector('.rs-base-layer-toggle-button'),\n );\n expect(layers[1].visible).toBe(true);\n });\n\n test('hide baseLayerToggler if only one baselayer', () => {\n const { container } = mountComp([layers[0]]);\n expect(container.innerHTML).toBe('');\n });\n\n test('should use children', () => {\n shallowComp(layers, {\n prevButtonContent: 'prev',\n nextButtonContent: 'next',\n });\n\n expect(screen.getByText('next')).not.toBeNull();\n expect(screen.getByText('prev')).not.toBeNull();\n });\n});\n"],"names":["const","let"],"mappings":"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"}
|
|
@@ -2,14 +2,13 @@ import 'jest-canvas-mock';
|
|
|
2
2
|
import proj4 from 'proj4';
|
|
3
3
|
import { register } from 'ol/proj/proj4';
|
|
4
4
|
import React from 'react';
|
|
5
|
-
import { configure, shallow, mount } from 'enzyme';
|
|
6
|
-
import Adapter from 'enzyme-adapter-react-16';
|
|
7
5
|
import ResizeObserver from 'resize-observer-polyfill';
|
|
8
6
|
import { Layer } from 'mobility-toolbox-js/ol';
|
|
9
7
|
import MapEvent from 'ol/MapEvent';
|
|
10
8
|
import OLLayer from 'ol/layer/Vector';
|
|
11
9
|
import OLMap from 'ol/Map';
|
|
12
10
|
import OLView from 'ol/View';
|
|
11
|
+
import { render } from '@testing-library/react';
|
|
13
12
|
import BasicMap from './BasicMap';
|
|
14
13
|
|
|
15
14
|
proj4.defs(
|
|
@@ -21,8 +20,6 @@ proj4.defs(
|
|
|
21
20
|
|
|
22
21
|
register(proj4);
|
|
23
22
|
|
|
24
|
-
configure({ adapter: new Adapter() });
|
|
25
|
-
|
|
26
23
|
var extent = [0, 0, 1000, 1000];
|
|
27
24
|
var olLayers = [
|
|
28
25
|
new Layer({
|
|
@@ -40,12 +37,12 @@ describe('BasicMap', function () {
|
|
|
40
37
|
|
|
41
38
|
test('should be rendered', function () {
|
|
42
39
|
var setTarget = jest.spyOn(olMap, 'setTarget');
|
|
43
|
-
|
|
40
|
+
render(React.createElement( BasicMap, { map: olMap }));
|
|
44
41
|
expect(setTarget).toHaveBeenCalled();
|
|
45
42
|
});
|
|
46
43
|
|
|
47
44
|
test('should be rendered with touchAction to none', function () {
|
|
48
|
-
|
|
45
|
+
render(React.createElement( BasicMap, { map: olMap }));
|
|
49
46
|
expect(olMap.getViewport().style.touchAction).toBe('none');
|
|
50
47
|
expect(olMap.getViewport().style.msTouchAction).toBe('none');
|
|
51
48
|
expect(olMap.getViewport().getAttribute('touch-action')).toBe('none');
|
|
@@ -57,24 +54,21 @@ describe('BasicMap', function () {
|
|
|
57
54
|
var evt = new MapEvent('moveend', olMap);
|
|
58
55
|
|
|
59
56
|
// Test componentDidMount
|
|
60
|
-
var
|
|
57
|
+
var ref = render(React.createElement( BasicMap, { map: olMap, onMapMoved: spy }));
|
|
58
|
+
var rerender = ref.rerender;
|
|
61
59
|
olMap.dispatchEvent(evt);
|
|
62
60
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
63
61
|
expect(spy).toHaveBeenCalledWith(evt);
|
|
64
62
|
|
|
65
63
|
// Test componentDidUpdate
|
|
66
|
-
|
|
67
|
-
onMapMoved: spy2,
|
|
68
|
-
});
|
|
64
|
+
rerender(React.createElement( BasicMap, { map: olMap, onMapMoved: spy2 }));
|
|
69
65
|
olMap.dispatchEvent(evt);
|
|
70
66
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
71
67
|
expect(spy2).toHaveBeenCalledTimes(1);
|
|
72
68
|
expect(spy2).toHaveBeenCalledWith(evt);
|
|
73
69
|
|
|
74
70
|
// Test componentDidUpdate
|
|
75
|
-
|
|
76
|
-
onMapMoved: null,
|
|
77
|
-
});
|
|
71
|
+
rerender(React.createElement( BasicMap, { map: olMap, onMapMoved: null }));
|
|
78
72
|
olMap.dispatchEvent(evt);
|
|
79
73
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
80
74
|
expect(spy2).toHaveBeenCalledTimes(1);
|
|
@@ -86,26 +80,21 @@ describe('BasicMap', function () {
|
|
|
86
80
|
var evt = new MapEvent('singleclick', olMap);
|
|
87
81
|
|
|
88
82
|
// Test componentDidMount
|
|
89
|
-
var
|
|
90
|
-
|
|
91
|
-
});
|
|
83
|
+
var ref = render(React.createElement( BasicMap, { map: olMap, onFeaturesClick: spy }));
|
|
84
|
+
var rerender = ref.rerender;
|
|
92
85
|
olMap.dispatchEvent(evt);
|
|
93
86
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
94
87
|
expect(spy).toHaveBeenCalledWith([], evt);
|
|
95
88
|
|
|
96
89
|
// Test componentDidUpdate
|
|
97
|
-
|
|
98
|
-
onFeaturesClick: spy2,
|
|
99
|
-
});
|
|
90
|
+
rerender(React.createElement( BasicMap, { map: olMap, onFeaturesClick: spy2 }));
|
|
100
91
|
olMap.dispatchEvent(evt);
|
|
101
92
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
102
93
|
expect(spy2).toHaveBeenCalledTimes(1);
|
|
103
94
|
expect(spy2).toHaveBeenCalledWith([], evt);
|
|
104
95
|
|
|
105
96
|
// Test componentDidUpdate
|
|
106
|
-
|
|
107
|
-
onFeaturesClick: null,
|
|
108
|
-
});
|
|
97
|
+
rerender(React.createElement( BasicMap, { map: olMap, onFeaturesClick: null }));
|
|
109
98
|
olMap.dispatchEvent(evt);
|
|
110
99
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
111
100
|
expect(spy2).toHaveBeenCalledTimes(1);
|
|
@@ -117,38 +106,39 @@ describe('BasicMap', function () {
|
|
|
117
106
|
var evt = new MapEvent('pointermove', olMap);
|
|
118
107
|
|
|
119
108
|
// Test componentDidMount
|
|
120
|
-
var
|
|
121
|
-
|
|
122
|
-
|
|
109
|
+
var ref = render(
|
|
110
|
+
React.createElement( BasicMap, { map: olMap, onFeaturesHover: spy }),
|
|
111
|
+
{
|
|
112
|
+
lifecycleExperimental: true,
|
|
113
|
+
}
|
|
114
|
+
);
|
|
115
|
+
var rerender = ref.rerender;
|
|
123
116
|
olMap.dispatchEvent(evt);
|
|
124
117
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
125
118
|
expect(spy).toHaveBeenCalledWith([], evt);
|
|
126
119
|
|
|
127
120
|
// Test componentDidUpdate
|
|
128
|
-
|
|
129
|
-
onFeaturesHover: spy2,
|
|
130
|
-
});
|
|
121
|
+
rerender(React.createElement( BasicMap, { map: olMap, onFeaturesHover: spy2 }));
|
|
131
122
|
olMap.dispatchEvent(evt);
|
|
132
123
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
133
124
|
expect(spy2).toHaveBeenCalledTimes(1);
|
|
134
125
|
expect(spy2).toHaveBeenCalledWith([], evt);
|
|
135
126
|
|
|
136
127
|
// Test componentDidUpdate
|
|
137
|
-
|
|
138
|
-
onFeaturesHover: null,
|
|
139
|
-
});
|
|
128
|
+
rerender(React.createElement( BasicMap, { map: olMap, onFeaturesHover: null }));
|
|
140
129
|
olMap.dispatchEvent(evt);
|
|
141
130
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
142
131
|
expect(spy2).toHaveBeenCalledTimes(1);
|
|
143
132
|
});
|
|
144
133
|
|
|
145
134
|
test('should be rendered with a default map', function () {
|
|
146
|
-
var
|
|
147
|
-
|
|
135
|
+
var ref = render(React.createElement( BasicMap, null ));
|
|
136
|
+
var container = ref.container;
|
|
137
|
+
expect(!!container.querySelector('.ol-viewport')).toBe(true);
|
|
148
138
|
});
|
|
149
139
|
|
|
150
140
|
test('should be rendered with layers and an extent', function () {
|
|
151
|
-
|
|
141
|
+
render(
|
|
152
142
|
React.createElement( BasicMap, {
|
|
153
143
|
map: olMap, layers: olLayers, extent: extent, viewOptions: {
|
|
154
144
|
minZoom: 16,
|
|
@@ -156,32 +146,33 @@ describe('BasicMap', function () {
|
|
|
156
146
|
projection: 'EPSG:21781',
|
|
157
147
|
} })
|
|
158
148
|
);
|
|
159
|
-
|
|
160
|
-
expect(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
-119.29915768648752, -119.29915768648752, 119.29915768648752,
|
|
164
|
-
119.29915768648752 ]);
|
|
149
|
+
expect(olMap.getLayers().getLength()).toBe(1);
|
|
150
|
+
expect(olMap.getView().calculateExtent()).toEqual([
|
|
151
|
+
380.70084231351245, 380.70084231351245, 619.2991576864875,
|
|
152
|
+
619.2991576864875 ]);
|
|
165
153
|
});
|
|
166
154
|
|
|
167
155
|
test('center shoud be set', function () {
|
|
168
|
-
var
|
|
156
|
+
var ref = render(React.createElement( BasicMap, { map: olMap }));
|
|
157
|
+
var rerender = ref.rerender;
|
|
169
158
|
var setCenter = jest.spyOn(olMap.getView(), 'setCenter');
|
|
170
|
-
|
|
159
|
+
rerender(React.createElement( BasicMap, { map: olMap, center: [0, 0] }));
|
|
171
160
|
expect(setCenter).toHaveBeenCalled();
|
|
172
161
|
});
|
|
173
162
|
|
|
174
163
|
test('zoom shoud be set', function () {
|
|
175
|
-
var
|
|
164
|
+
var ref = render(React.createElement( BasicMap, { map: olMap, zoom: 5 }));
|
|
165
|
+
var rerender = ref.rerender;
|
|
176
166
|
expect(olMap.getView().getZoom()).toBe(5);
|
|
177
|
-
|
|
167
|
+
rerender(React.createElement( BasicMap, { map: olMap, zoom: 2 }));
|
|
178
168
|
expect(olMap.getView().getZoom()).toBe(2);
|
|
179
169
|
});
|
|
180
170
|
|
|
181
171
|
test('resolution shoud be set', function () {
|
|
182
|
-
var
|
|
172
|
+
var ref = render(React.createElement( BasicMap, { map: olMap, resolution: 100 }));
|
|
173
|
+
var rerender = ref.rerender;
|
|
183
174
|
expect(olMap.getView().getResolution()).toBe(100);
|
|
184
|
-
|
|
175
|
+
rerender(React.createElement( BasicMap, { map: olMap, resolution: 5 }));
|
|
185
176
|
expect(olMap.getView().getResolution()).toBe(5);
|
|
186
177
|
});
|
|
187
178
|
|
|
@@ -189,52 +180,54 @@ describe('BasicMap', function () {
|
|
|
189
180
|
var obj = {
|
|
190
181
|
zoom: 4,
|
|
191
182
|
};
|
|
192
|
-
var
|
|
183
|
+
var ref = render(React.createElement( BasicMap, { map: olMap }));
|
|
184
|
+
var rerender = ref.rerender;
|
|
193
185
|
var spy = jest.spyOn(olMap.getView(), 'animate');
|
|
194
|
-
|
|
186
|
+
rerender(React.createElement( BasicMap, { map: olMap, animationOptions: obj }));
|
|
195
187
|
expect(spy).toHaveBeenCalledWith(obj);
|
|
196
188
|
});
|
|
197
189
|
|
|
198
190
|
test('layers shoud be updated', function () {
|
|
199
191
|
var addLayer = jest.spyOn(olMap, 'addLayer');
|
|
200
|
-
var
|
|
192
|
+
var ref = render(React.createElement( BasicMap, { map: olMap }));
|
|
193
|
+
var rerender = ref.rerender;
|
|
201
194
|
var layer = new Layer({ name: 'test', olLayer: new OLLayer() });
|
|
202
|
-
|
|
195
|
+
rerender(React.createElement( BasicMap, { map: olMap, layers: [layer] }));
|
|
203
196
|
expect(addLayer).toHaveBeenCalled();
|
|
204
197
|
});
|
|
205
198
|
|
|
206
199
|
test('should be fitted if extent is updated', function () {
|
|
207
200
|
var fitExtent = jest.spyOn(OLView.prototype, 'fit');
|
|
208
|
-
var
|
|
209
|
-
|
|
201
|
+
var ref = render(React.createElement( BasicMap, { map: olMap }));
|
|
202
|
+
var rerender = ref.rerender;
|
|
203
|
+
rerender(React.createElement( BasicMap, { map: olMap, extent: [1, 2, 3, 4] }));
|
|
210
204
|
expect(fitExtent).toHaveBeenCalled();
|
|
211
205
|
});
|
|
212
206
|
|
|
213
207
|
test('should be zoomed if zoom is updated', function () {
|
|
214
208
|
var setZoom = jest.spyOn(OLView.prototype, 'setZoom');
|
|
215
|
-
var
|
|
216
|
-
|
|
217
|
-
|
|
209
|
+
var ref = render(React.createElement( BasicMap, { map: olMap }));
|
|
210
|
+
var rerender = ref.rerender;
|
|
211
|
+
rerender(React.createElement( BasicMap, { map: olMap, zoom: 15 }));
|
|
212
|
+
expect(setZoom).toHaveBeenCalledWith(15);
|
|
218
213
|
});
|
|
219
214
|
|
|
220
215
|
test('should be observed by ResizeHandler', function () {
|
|
221
216
|
var spy = jest.spyOn(ResizeObserver.prototype, 'observe');
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
expect(spy).toHaveBeenCalledWith(node);
|
|
217
|
+
render(React.createElement( BasicMap, { map: olMap }));
|
|
218
|
+
expect(spy).toHaveBeenCalledWith(olMap.getTargetElement());
|
|
225
219
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
226
220
|
});
|
|
227
221
|
|
|
228
222
|
test('size is updated when div is resized', function () {
|
|
229
223
|
var spy = jest.spyOn(olMap, 'updateSize');
|
|
230
|
-
|
|
231
|
-
var node = map.getDOMNode();
|
|
224
|
+
render(React.createElement( BasicMap, { map: olMap }));
|
|
232
225
|
expect(spy).toHaveBeenCalledTimes(2);
|
|
233
226
|
// The mock class set the onResize property, we just have to run it to
|
|
234
227
|
// simulate a resize
|
|
235
228
|
ResizeObserver.onResize([
|
|
236
229
|
{
|
|
237
|
-
target:
|
|
230
|
+
target: olMap.getTargetElement(),
|
|
238
231
|
contentRect: {
|
|
239
232
|
width: 20,
|
|
240
233
|
height: 20,
|
|
@@ -244,7 +237,7 @@ describe('BasicMap', function () {
|
|
|
244
237
|
});
|
|
245
238
|
|
|
246
239
|
describe('#setLayers()', function () {
|
|
247
|
-
test('
|
|
240
|
+
test('init all layers and terminate al previous layer.', function () {
|
|
248
241
|
var layer0 = new Layer({ key: 'test1' });
|
|
249
242
|
var spyInit0 = jest.spyOn(layer0, 'init');
|
|
250
243
|
var spyTerminate0 = jest.spyOn(layer0, 'terminate');
|
|
@@ -261,9 +254,10 @@ describe('BasicMap', function () {
|
|
|
261
254
|
var spyInit4 = jest.spyOn(layer4, 'init');
|
|
262
255
|
var spyTerminate4 = jest.spyOn(layer4, 'terminate');
|
|
263
256
|
var startLayers = [layer1, layer3];
|
|
264
|
-
var
|
|
265
|
-
|
|
266
|
-
|
|
257
|
+
var ref = render(
|
|
258
|
+
React.createElement( BasicMap, { map: olMap, layers: startLayers })
|
|
259
|
+
);
|
|
260
|
+
var rerender = ref.rerender;
|
|
267
261
|
expect(spyInit0).toHaveBeenCalledTimes(0);
|
|
268
262
|
expect(spyInit1).toHaveBeenCalledTimes(1);
|
|
269
263
|
expect(spyInit2).toHaveBeenCalledTimes(0);
|
|
@@ -274,24 +268,19 @@ describe('BasicMap', function () {
|
|
|
274
268
|
expect(spyTerminate2).toHaveBeenCalledTimes(0);
|
|
275
269
|
expect(spyTerminate3).toHaveBeenCalledTimes(1);
|
|
276
270
|
expect(spyTerminate4).toHaveBeenCalledTimes(0);
|
|
277
|
-
expect(map.instance().layers).toBe(startLayers);
|
|
278
271
|
|
|
279
272
|
var layers = [layer0, layer2, layer3, layer4];
|
|
280
|
-
|
|
281
|
-
layers: layers,
|
|
282
|
-
});
|
|
283
|
-
|
|
273
|
+
rerender(React.createElement( BasicMap, { map: olMap, layers: layers }));
|
|
284
274
|
expect(spyInit0).toHaveBeenCalledTimes(1);
|
|
285
275
|
expect(spyInit1).toHaveBeenCalledTimes(1);
|
|
286
276
|
expect(spyInit2).toHaveBeenCalledTimes(1);
|
|
287
|
-
expect(spyInit3).toHaveBeenCalledTimes(
|
|
277
|
+
expect(spyInit3).toHaveBeenCalledTimes(2);
|
|
288
278
|
expect(spyInit4).toHaveBeenCalledTimes(1);
|
|
289
279
|
expect(spyTerminate0).toHaveBeenCalledTimes(1);
|
|
290
280
|
expect(spyTerminate1).toHaveBeenCalledTimes(2);
|
|
291
281
|
expect(spyTerminate2).toHaveBeenCalledTimes(1);
|
|
292
|
-
expect(spyTerminate3).toHaveBeenCalledTimes(
|
|
282
|
+
expect(spyTerminate3).toHaveBeenCalledTimes(3);
|
|
293
283
|
expect(spyTerminate4).toHaveBeenCalledTimes(1);
|
|
294
|
-
expect(map.instance().layers).toBe(layers);
|
|
295
284
|
});
|
|
296
285
|
});
|
|
297
286
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasicMap.test.js","sources":["../../../src/components/BasicMap/BasicMap.test.js"],"sourcesContent":["import 'jest-canvas-mock';\nimport proj4 from 'proj4';\nimport { register } from 'ol/proj/proj4';\nimport React from 'react';\nimport { configure, shallow, mount } from 'enzyme';\nimport Adapter from 'enzyme-adapter-react-16';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport MapEvent from 'ol/MapEvent';\nimport OLLayer from 'ol/layer/Vector';\nimport OLMap from 'ol/Map';\nimport OLView from 'ol/View';\nimport BasicMap from './BasicMap';\n\nproj4.defs(\n 'EPSG:21781',\n '+proj=somerc +lat_0=46.95240555555556 ' +\n '+lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel ' +\n '+towgs84=674.4,15.1,405.3,0,0,0,0 +units=m +no_defs',\n);\n\nregister(proj4);\n\nconfigure({ adapter: new Adapter() });\n\nconst extent = [0, 0, 1000, 1000];\nconst olLayers = [\n new Layer({\n name: 'foo',\n olLayer: new OLLayer({}),\n visible: true,\n }),\n];\n\ndescribe('BasicMap', () => {\n let olMap;\n beforeEach(() => {\n const olView = new OLView();\n olMap = new OLMap({ view: olView });\n });\n\n test('should be rendered', () => {\n const setTarget = jest.spyOn(olMap, 'setTarget');\n shallow(<BasicMap map={olMap} />);\n expect(setTarget).toHaveBeenCalled();\n });\n\n test('should be rendered with touchAction to none', () => {\n shallow(<BasicMap map={olMap} />);\n expect(olMap.getViewport().style.touchAction).toBe('none');\n expect(olMap.getViewport().style.msTouchAction).toBe('none');\n expect(olMap.getViewport().getAttribute('touch-action')).toBe('none');\n });\n\n test('uses onMapMoved function', () => {\n const spy = jest.fn(() => {});\n const spy2 = jest.fn();\n const evt = new MapEvent('moveend', olMap);\n\n // Test componentDidMount\n const wrapper = shallow(<BasicMap map={olMap} onMapMoved={spy} />);\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy).toHaveBeenCalledWith(evt);\n\n // Test componentDidUpdate\n wrapper.setProps({\n onMapMoved: spy2,\n });\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledWith(evt);\n\n // Test componentDidUpdate\n wrapper.setProps({\n onMapMoved: null,\n });\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n });\n\n test('uses onFeaturesClick function', () => {\n const spy = jest.fn();\n const spy2 = jest.fn();\n const evt = new MapEvent('singleclick', olMap);\n\n // Test componentDidMount\n const wrapper = shallow(<BasicMap map={olMap} onFeaturesClick={spy} />, {\n lifecycleExperimental: true,\n });\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy).toHaveBeenCalledWith([], evt);\n\n // Test componentDidUpdate\n wrapper.setProps({\n onFeaturesClick: spy2,\n });\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledWith([], evt);\n\n // Test componentDidUpdate\n wrapper.setProps({\n onFeaturesClick: null,\n });\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n });\n\n test('uses onFeaturesHover function', () => {\n const spy = jest.fn();\n const spy2 = jest.fn();\n const evt = new MapEvent('pointermove', olMap);\n\n // Test componentDidMount\n const wrapper = shallow(<BasicMap map={olMap} onFeaturesHover={spy} />, {\n lifecycleExperimental: true,\n });\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy).toHaveBeenCalledWith([], evt);\n\n // Test componentDidUpdate\n wrapper.setProps({\n onFeaturesHover: spy2,\n });\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledWith([], evt);\n\n // Test componentDidUpdate\n wrapper.setProps({\n onFeaturesHover: null,\n });\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n });\n\n test('should be rendered with a default map', () => {\n const wrapper = shallow(<BasicMap />);\n expect(wrapper.instance().map).toBeDefined();\n });\n\n test('should be rendered with layers and an extent', () => {\n const wrapper = shallow(\n <BasicMap\n map={olMap}\n layers={olLayers}\n extent={extent}\n viewOptions={{\n minZoom: 16,\n maxZoom: 22,\n projection: 'EPSG:21781',\n }}\n />,\n );\n const inst = wrapper.instance();\n expect(inst.map).toBeDefined();\n expect(inst.map.getLayers().getLength()).toBe(1);\n expect(inst.map.getView().calculateExtent()).toEqual([\n -119.29915768648752, -119.29915768648752, 119.29915768648752,\n 119.29915768648752,\n ]);\n });\n\n test('center shoud be set', () => {\n const map = shallow(<BasicMap map={olMap} />);\n const setCenter = jest.spyOn(olMap.getView(), 'setCenter');\n map.setProps({ center: [0, 0] }).update();\n expect(setCenter).toHaveBeenCalled();\n });\n\n test('zoom shoud be set', () => {\n const map = shallow(<BasicMap map={olMap} zoom={5} />);\n expect(olMap.getView().getZoom()).toBe(5);\n map.setProps({ zoom: 2 }).update();\n expect(olMap.getView().getZoom()).toBe(2);\n });\n\n test('resolution shoud be set', () => {\n const map = shallow(<BasicMap map={olMap} resolution={100} />);\n expect(olMap.getView().getResolution()).toBe(100);\n map.setProps({ resolution: 5 }).update();\n expect(olMap.getView().getResolution()).toBe(5);\n });\n\n test('animation shoud be set', () => {\n const obj = {\n zoom: 4,\n };\n const map = shallow(<BasicMap map={olMap} />);\n const spy = jest.spyOn(olMap.getView(), 'animate');\n map.setProps({ animationOptions: obj }).update();\n expect(spy).toHaveBeenCalledWith(obj);\n });\n\n test('layers shoud be updated', () => {\n const addLayer = jest.spyOn(olMap, 'addLayer');\n const map = shallow(<BasicMap map={olMap} />);\n const layer = new Layer({ name: 'test', olLayer: new OLLayer() });\n map.setProps({ layers: [layer] }).update();\n expect(addLayer).toHaveBeenCalled();\n });\n\n test('should be fitted if extent is updated', () => {\n const fitExtent = jest.spyOn(OLView.prototype, 'fit');\n const map = shallow(<BasicMap map={olMap} />);\n map.setProps({ extent: [1, 2, 3, 4] }).update();\n expect(fitExtent).toHaveBeenCalled();\n });\n\n test('should be zoomed if zoom is updated', () => {\n const setZoom = jest.spyOn(OLView.prototype, 'setZoom');\n const map = shallow(<BasicMap map={olMap} />);\n map.setProps({ zoom: 15 }).update();\n expect(setZoom).toHaveBeenCalled();\n });\n\n test('should be observed by ResizeHandler', () => {\n const spy = jest.spyOn(ResizeObserver.prototype, 'observe');\n const map = mount(<BasicMap map={olMap} />);\n const node = map.getDOMNode();\n expect(spy).toHaveBeenCalledWith(node);\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('size is updated when div is resized', () => {\n const spy = jest.spyOn(olMap, 'updateSize');\n const map = mount(<BasicMap map={olMap} />);\n const node = map.getDOMNode();\n expect(spy).toHaveBeenCalledTimes(2);\n // The mock class set the onResize property, we just have to run it to\n // simulate a resize\n ResizeObserver.onResize([\n {\n target: node,\n contentRect: {\n width: 20,\n height: 20,\n },\n },\n ]);\n expect(spy).toHaveBeenCalledTimes(3);\n });\n\n describe('#setLayers()', () => {\n test('only init layers which are not already on the map.', () => {\n const layer0 = new Layer({ key: 'test1' });\n const spyInit0 = jest.spyOn(layer0, 'init');\n const spyTerminate0 = jest.spyOn(layer0, 'terminate');\n const layer1 = new Layer({ key: 'test1' });\n const spyInit1 = jest.spyOn(layer1, 'init');\n const spyTerminate1 = jest.spyOn(layer1, 'terminate');\n const layer2 = new Layer({ key: 'test2' });\n const spyInit2 = jest.spyOn(layer2, 'init');\n const spyTerminate2 = jest.spyOn(layer2, 'terminate');\n const layer3 = new Layer({ key: 'test3' });\n const spyInit3 = jest.spyOn(layer3, 'init');\n const spyTerminate3 = jest.spyOn(layer3, 'terminate');\n const layer4 = new Layer({ key: 'test4' });\n const spyInit4 = jest.spyOn(layer4, 'init');\n const spyTerminate4 = jest.spyOn(layer4, 'terminate');\n const startLayers = [layer1, layer3];\n const map = shallow(<BasicMap map={olMap} layers={startLayers} />);\n\n expect(map.instance().layers).toBe(startLayers);\n expect(spyInit0).toHaveBeenCalledTimes(0);\n expect(spyInit1).toHaveBeenCalledTimes(1);\n expect(spyInit2).toHaveBeenCalledTimes(0);\n expect(spyInit3).toHaveBeenCalledTimes(1);\n expect(spyInit4).toHaveBeenCalledTimes(0);\n expect(spyTerminate0).toHaveBeenCalledTimes(0);\n expect(spyTerminate1).toHaveBeenCalledTimes(1);\n expect(spyTerminate2).toHaveBeenCalledTimes(0);\n expect(spyTerminate3).toHaveBeenCalledTimes(1);\n expect(spyTerminate4).toHaveBeenCalledTimes(0);\n expect(map.instance().layers).toBe(startLayers);\n\n const layers = [layer0, layer2, layer3, layer4];\n map.setProps({\n layers,\n });\n\n expect(spyInit0).toHaveBeenCalledTimes(1);\n expect(spyInit1).toHaveBeenCalledTimes(1);\n expect(spyInit2).toHaveBeenCalledTimes(1);\n expect(spyInit3).toHaveBeenCalledTimes(1);\n expect(spyInit4).toHaveBeenCalledTimes(1);\n expect(spyTerminate0).toHaveBeenCalledTimes(1);\n expect(spyTerminate1).toHaveBeenCalledTimes(2);\n expect(spyTerminate2).toHaveBeenCalledTimes(1);\n expect(spyTerminate3).toHaveBeenCalledTimes(1);\n expect(spyTerminate4).toHaveBeenCalledTimes(1);\n expect(map.instance().layers).toBe(layers);\n });\n });\n});\n"],"names":["const","let"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BasicMap.test.js","sources":["../../../src/components/BasicMap/BasicMap.test.js"],"sourcesContent":["import 'jest-canvas-mock';\nimport proj4 from 'proj4';\nimport { register } from 'ol/proj/proj4';\nimport React from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport MapEvent from 'ol/MapEvent';\nimport OLLayer from 'ol/layer/Vector';\nimport OLMap from 'ol/Map';\nimport OLView from 'ol/View';\nimport { render } from '@testing-library/react';\nimport BasicMap from './BasicMap';\n\nproj4.defs(\n 'EPSG:21781',\n '+proj=somerc +lat_0=46.95240555555556 ' +\n '+lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel ' +\n '+towgs84=674.4,15.1,405.3,0,0,0,0 +units=m +no_defs',\n);\n\nregister(proj4);\n\nconst extent = [0, 0, 1000, 1000];\nconst olLayers = [\n new Layer({\n name: 'foo',\n olLayer: new OLLayer({}),\n visible: true,\n }),\n];\n\ndescribe('BasicMap', () => {\n let olMap;\n beforeEach(() => {\n const olView = new OLView();\n olMap = new OLMap({ view: olView });\n });\n\n test('should be rendered', () => {\n const setTarget = jest.spyOn(olMap, 'setTarget');\n render(<BasicMap map={olMap} />);\n expect(setTarget).toHaveBeenCalled();\n });\n\n test('should be rendered with touchAction to none', () => {\n render(<BasicMap map={olMap} />);\n expect(olMap.getViewport().style.touchAction).toBe('none');\n expect(olMap.getViewport().style.msTouchAction).toBe('none');\n expect(olMap.getViewport().getAttribute('touch-action')).toBe('none');\n });\n\n test('uses onMapMoved function', () => {\n const spy = jest.fn(() => {});\n const spy2 = jest.fn();\n const evt = new MapEvent('moveend', olMap);\n\n // Test componentDidMount\n const { rerender } = render(<BasicMap map={olMap} onMapMoved={spy} />);\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy).toHaveBeenCalledWith(evt);\n\n // Test componentDidUpdate\n rerender(<BasicMap map={olMap} onMapMoved={spy2} />);\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledWith(evt);\n\n // Test componentDidUpdate\n rerender(<BasicMap map={olMap} onMapMoved={null} />);\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n });\n\n test('uses onFeaturesClick function', () => {\n const spy = jest.fn();\n const spy2 = jest.fn();\n const evt = new MapEvent('singleclick', olMap);\n\n // Test componentDidMount\n const { rerender } = render(<BasicMap map={olMap} onFeaturesClick={spy} />);\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy).toHaveBeenCalledWith([], evt);\n\n // Test componentDidUpdate\n rerender(<BasicMap map={olMap} onFeaturesClick={spy2} />);\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledWith([], evt);\n\n // Test componentDidUpdate\n rerender(<BasicMap map={olMap} onFeaturesClick={null} />);\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n });\n\n test('uses onFeaturesHover function', () => {\n const spy = jest.fn();\n const spy2 = jest.fn();\n const evt = new MapEvent('pointermove', olMap);\n\n // Test componentDidMount\n const { rerender } = render(\n <BasicMap map={olMap} onFeaturesHover={spy} />,\n {\n lifecycleExperimental: true,\n },\n );\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy).toHaveBeenCalledWith([], evt);\n\n // Test componentDidUpdate\n rerender(<BasicMap map={olMap} onFeaturesHover={spy2} />);\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledWith([], evt);\n\n // Test componentDidUpdate\n rerender(<BasicMap map={olMap} onFeaturesHover={null} />);\n olMap.dispatchEvent(evt);\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(1);\n });\n\n test('should be rendered with a default map', () => {\n const { container } = render(<BasicMap />);\n expect(!!container.querySelector('.ol-viewport')).toBe(true);\n });\n\n test('should be rendered with layers and an extent', () => {\n render(\n <BasicMap\n map={olMap}\n layers={olLayers}\n extent={extent}\n viewOptions={{\n minZoom: 16,\n maxZoom: 22,\n projection: 'EPSG:21781',\n }}\n />,\n );\n expect(olMap.getLayers().getLength()).toBe(1);\n expect(olMap.getView().calculateExtent()).toEqual([\n 380.70084231351245, 380.70084231351245, 619.2991576864875,\n 619.2991576864875,\n ]);\n });\n\n test('center shoud be set', () => {\n const { rerender } = render(<BasicMap map={olMap} />);\n const setCenter = jest.spyOn(olMap.getView(), 'setCenter');\n rerender(<BasicMap map={olMap} center={[0, 0]} />);\n expect(setCenter).toHaveBeenCalled();\n });\n\n test('zoom shoud be set', () => {\n const { rerender } = render(<BasicMap map={olMap} zoom={5} />);\n expect(olMap.getView().getZoom()).toBe(5);\n rerender(<BasicMap map={olMap} zoom={2} />);\n expect(olMap.getView().getZoom()).toBe(2);\n });\n\n test('resolution shoud be set', () => {\n const { rerender } = render(<BasicMap map={olMap} resolution={100} />);\n expect(olMap.getView().getResolution()).toBe(100);\n rerender(<BasicMap map={olMap} resolution={5} />);\n expect(olMap.getView().getResolution()).toBe(5);\n });\n\n test('animation shoud be set', () => {\n const obj = {\n zoom: 4,\n };\n const { rerender } = render(<BasicMap map={olMap} />);\n const spy = jest.spyOn(olMap.getView(), 'animate');\n rerender(<BasicMap map={olMap} animationOptions={obj} />);\n expect(spy).toHaveBeenCalledWith(obj);\n });\n\n test('layers shoud be updated', () => {\n const addLayer = jest.spyOn(olMap, 'addLayer');\n const { rerender } = render(<BasicMap map={olMap} />);\n const layer = new Layer({ name: 'test', olLayer: new OLLayer() });\n rerender(<BasicMap map={olMap} layers={[layer]} />);\n expect(addLayer).toHaveBeenCalled();\n });\n\n test('should be fitted if extent is updated', () => {\n const fitExtent = jest.spyOn(OLView.prototype, 'fit');\n const { rerender } = render(<BasicMap map={olMap} />);\n rerender(<BasicMap map={olMap} extent={[1, 2, 3, 4]} />);\n expect(fitExtent).toHaveBeenCalled();\n });\n\n test('should be zoomed if zoom is updated', () => {\n const setZoom = jest.spyOn(OLView.prototype, 'setZoom');\n const { rerender } = render(<BasicMap map={olMap} />);\n rerender(<BasicMap map={olMap} zoom={15} />);\n expect(setZoom).toHaveBeenCalledWith(15);\n });\n\n test('should be observed by ResizeHandler', () => {\n const spy = jest.spyOn(ResizeObserver.prototype, 'observe');\n render(<BasicMap map={olMap} />);\n expect(spy).toHaveBeenCalledWith(olMap.getTargetElement());\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('size is updated when div is resized', () => {\n const spy = jest.spyOn(olMap, 'updateSize');\n render(<BasicMap map={olMap} />);\n expect(spy).toHaveBeenCalledTimes(2);\n // The mock class set the onResize property, we just have to run it to\n // simulate a resize\n ResizeObserver.onResize([\n {\n target: olMap.getTargetElement(),\n contentRect: {\n width: 20,\n height: 20,\n },\n },\n ]);\n expect(spy).toHaveBeenCalledTimes(3);\n });\n\n describe('#setLayers()', () => {\n test('init all layers and terminate al previous layer.', () => {\n const layer0 = new Layer({ key: 'test1' });\n const spyInit0 = jest.spyOn(layer0, 'init');\n const spyTerminate0 = jest.spyOn(layer0, 'terminate');\n const layer1 = new Layer({ key: 'test1' });\n const spyInit1 = jest.spyOn(layer1, 'init');\n const spyTerminate1 = jest.spyOn(layer1, 'terminate');\n const layer2 = new Layer({ key: 'test2' });\n const spyInit2 = jest.spyOn(layer2, 'init');\n const spyTerminate2 = jest.spyOn(layer2, 'terminate');\n const layer3 = new Layer({ key: 'test3' });\n const spyInit3 = jest.spyOn(layer3, 'init');\n const spyTerminate3 = jest.spyOn(layer3, 'terminate');\n const layer4 = new Layer({ key: 'test4' });\n const spyInit4 = jest.spyOn(layer4, 'init');\n const spyTerminate4 = jest.spyOn(layer4, 'terminate');\n const startLayers = [layer1, layer3];\n const { rerender } = render(\n <BasicMap map={olMap} layers={startLayers} />,\n );\n expect(spyInit0).toHaveBeenCalledTimes(0);\n expect(spyInit1).toHaveBeenCalledTimes(1);\n expect(spyInit2).toHaveBeenCalledTimes(0);\n expect(spyInit3).toHaveBeenCalledTimes(1);\n expect(spyInit4).toHaveBeenCalledTimes(0);\n expect(spyTerminate0).toHaveBeenCalledTimes(0);\n expect(spyTerminate1).toHaveBeenCalledTimes(1);\n expect(spyTerminate2).toHaveBeenCalledTimes(0);\n expect(spyTerminate3).toHaveBeenCalledTimes(1);\n expect(spyTerminate4).toHaveBeenCalledTimes(0);\n\n const layers = [layer0, layer2, layer3, layer4];\n rerender(<BasicMap map={olMap} layers={layers} />);\n expect(spyInit0).toHaveBeenCalledTimes(1);\n expect(spyInit1).toHaveBeenCalledTimes(1);\n expect(spyInit2).toHaveBeenCalledTimes(1);\n expect(spyInit3).toHaveBeenCalledTimes(2);\n expect(spyInit4).toHaveBeenCalledTimes(1);\n expect(spyTerminate0).toHaveBeenCalledTimes(1);\n expect(spyTerminate1).toHaveBeenCalledTimes(2);\n expect(spyTerminate2).toHaveBeenCalledTimes(1);\n expect(spyTerminate3).toHaveBeenCalledTimes(3);\n expect(spyTerminate4).toHaveBeenCalledTimes(1);\n });\n });\n});\n"],"names":["const","let"],"mappings":"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"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import renderer from 'react-test-renderer';
|
|
3
|
-
import { configure } from 'enzyme';
|
|
4
|
-
import Adapter from 'enzyme-adapter-react-16';
|
|
5
3
|
import 'jest-date-mock';
|
|
6
4
|
import { TrajservLayer } from 'mobility-toolbox-js/ol';
|
|
7
5
|
import RouteSchedule from '.';
|
|
8
6
|
|
|
9
|
-
configure({ adapter: new Adapter() });
|
|
10
7
|
var RealDate = Date;
|
|
11
8
|
|
|
12
9
|
var lineInfos = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteSchedule.test.js","sources":["../../../src/components/RouteSchedule/RouteSchedule.test.js"],"sourcesContent":["import React from 'react';\nimport renderer from 'react-test-renderer';\nimport
|
|
1
|
+
{"version":3,"file":"RouteSchedule.test.js","sources":["../../../src/components/RouteSchedule/RouteSchedule.test.js"],"sourcesContent":["import React from 'react';\nimport renderer from 'react-test-renderer';\nimport 'jest-date-mock';\nimport { TrajservLayer } from 'mobility-toolbox-js/ol';\nimport RouteSchedule from '.';\n\nconst RealDate = Date;\n\nconst lineInfos = {\n backgroundColor: 'ff8a00',\n destination: 'Station name',\n id: 9959310,\n routeIdentifier: '03634.003849.004:9',\n longName: 'T 3',\n shortName: '3',\n operator: 'foo',\n operatorUrl: 'foo.ch',\n publisher: 'bar',\n publisherUrl: 'bar.ch',\n stations: [\n {\n stationId: '1',\n stationName: 'first stop',\n coordinates: [8.51772, 47.3586],\n arrivalDelay: 60000, // +1m\n arrivalTime: 1571729580000,\n departureDelay: 60000,\n departureTime: 1571729580000,\n },\n {\n stationId: '2',\n stationName: 'second stop',\n coordinates: [8.54119, 47.36646],\n arrivalDelay: 0, // +0\n arrivalTime: 1571729903000,\n departureDelay: 120000, // +2m\n departureTime: 1571729903000,\n },\n {\n stationId: '4',\n stationName: 'no stop',\n coordinates: [8.54119, 47.36646],\n arrivalDelay: null, // +0\n arrivalTime: 0,\n departureDelay: null, // +2m\n departureTime: 0,\n },\n {\n stationId: '3',\n stationName: 'third stop',\n coordinates: [8.54119, 50],\n arrivalDelay: 240000, // +4m\n arrivalTime: 1571730323000,\n departureDelay: 0, // +0\n departureTime: 0,\n },\n ],\n vehicleType: 0,\n};\n\ndescribe('RouteSchedule', () => {\n beforeEach(() => {\n global.Date = jest.fn(() => {\n return {\n getHours: () => {\n return 9;\n },\n getMinutes: () => {\n return 1;\n },\n };\n });\n Object.assign(Date, RealDate);\n });\n\n afterEach(() => {\n global.Date = RealDate;\n });\n\n test('matches snapshots.', () => {\n const trackerLayer = new TrajservLayer();\n const component = renderer.create(\n <RouteSchedule\n lineInfos={lineInfos}\n trackerLayer={trackerLayer}\n setCenter={() => {}}\n renderHeaderButtons={() => {\n return <div>Button</div>;\n }}\n />,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n });\n\n // to test: on station click\n // to test: time formating\n // to test: delay formating\n // to test: delay color\n // to test: no arrival delay on first station\n // to test: no arrival date on first station\n // to test: no departure delay on last station\n // to test: no departure date on last station\n // to test: font bold on first and last station\n});\n"],"names":["const"],"mappings":"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"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import renderer from 'react-test-renderer';
|
|
3
|
-
import { configure } from 'enzyme';
|
|
4
|
-
import Adapter from 'enzyme-adapter-react-16';
|
|
5
3
|
import Search from '.';
|
|
6
4
|
|
|
7
|
-
configure({ adapter: new Adapter() });
|
|
8
|
-
|
|
9
5
|
describe('Search', function () {
|
|
10
6
|
test('matches snapshots.', function () {
|
|
11
7
|
var component = renderer.create(React.createElement( Search, null ));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Search.test.js","sources":["../../../src/components/Search/Search.test.js"],"sourcesContent":["import React from 'react';\nimport renderer from 'react-test-renderer';\nimport
|
|
1
|
+
{"version":3,"file":"Search.test.js","sources":["../../../src/components/Search/Search.test.js"],"sourcesContent":["import React from 'react';\nimport renderer from 'react-test-renderer';\nimport Search from '.';\n\ndescribe('Search', () => {\n test('matches snapshots.', () => {\n const component = renderer.create(<Search />);\n expect(component.toJSON()).toMatchSnapshot();\n });\n});\n\n// to test: custom props\n// to test: searching\n"],"names":["const"],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,MAAM,MAAM,GAAG,CAAC;AACvB;AACA,QAAQ,CAAC,QAAQ,WAAE,GAAM;AACzB,EAAE,IAAI,CAAC,oBAAoB,WAAE,GAAM;AACnC,IAAIA,GAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,qBAAC,YAAM,EAAG,CAAC,CAAC;AAClD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;AACjD,GAAG,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AACH;AACA;AACA;"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import renderer from 'react-test-renderer';
|
|
3
|
-
import { configure } from 'enzyme';
|
|
4
|
-
import Adapter from 'enzyme-adapter-react-16';
|
|
5
3
|
import { Map } from 'ol';
|
|
6
4
|
import StopsFinder from '.';
|
|
7
5
|
|
|
8
|
-
configure({ adapter: new Adapter() });
|
|
9
|
-
|
|
10
6
|
describe('StopsFinder', function () {
|
|
11
7
|
var map;
|
|
12
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StopsFinder.test.js","sources":["../../../src/components/StopsFinder/StopsFinder.test.js"],"sourcesContent":["import React from 'react';\nimport renderer from 'react-test-renderer';\nimport {
|
|
1
|
+
{"version":3,"file":"StopsFinder.test.js","sources":["../../../src/components/StopsFinder/StopsFinder.test.js"],"sourcesContent":["import React from 'react';\nimport renderer from 'react-test-renderer';\nimport { Map } from 'ol';\nimport StopsFinder from '.';\n\ndescribe('StopsFinder', () => {\n let map;\n\n beforeEach(() => {\n map = new Map({});\n });\n\n test('matches snapshots.', () => {\n const component = renderer.create(<StopsFinder map={map} />);\n expect(component.toJSON()).toMatchSnapshot();\n });\n});\n"],"names":["let","const"],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,SAAS,GAAG,QAAQ,IAAI,CAAC;AACzB,OAAO,WAAW,MAAM,GAAG,CAAC;AAC5B;AACA,QAAQ,CAAC,aAAa,WAAE,GAAM;AAC9B,EAAEA,GAAG,CAAC,GAAG,CAAC;AACV;AACA,EAAE,UAAU,UAAC,GAAM;AACnB,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AACtB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,oBAAoB,WAAE,GAAM;AACnC,IAAIC,GAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,qBAAC,cAAW,CAAC,KAAK,KAAI,CAAG,CAAC,CAAC;AACjE,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;AACjD,GAAG,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import renderer from 'react-test-renderer';
|
|
3
|
-
import { configure } from 'enzyme';
|
|
4
|
-
import Adapter from 'enzyme-adapter-react-16';
|
|
5
3
|
import { TrajservLayer } from 'mobility-toolbox-js/ol';
|
|
6
4
|
import TrackerControl from '.';
|
|
7
5
|
|
|
8
|
-
configure({ adapter: new Adapter() });
|
|
9
|
-
|
|
10
6
|
describe('TrackerControl', function () {
|
|
11
7
|
test('matches snapshots.', function () {
|
|
12
8
|
var trackerLayer = new TrajservLayer();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrackerControl.test.js","sources":["../../../src/components/TrackerControl/TrackerControl.test.js"],"sourcesContent":["import React from 'react';\nimport renderer from 'react-test-renderer';\nimport {
|
|
1
|
+
{"version":3,"file":"TrackerControl.test.js","sources":["../../../src/components/TrackerControl/TrackerControl.test.js"],"sourcesContent":["import React from 'react';\nimport renderer from 'react-test-renderer';\nimport { TrajservLayer } from 'mobility-toolbox-js/ol';\nimport TrackerControl from '.';\n\ndescribe('TrackerControl', () => {\n test('matches snapshots.', () => {\n const trackerLayer = new TrajservLayer();\n const component = renderer.create(\n <TrackerControl trackerLayer={trackerLayer} />,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n });\n});\n"],"names":["const"],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,SAAS,aAAa,QAAQ,wBAAwB,CAAC;AACvD,OAAO,cAAc,MAAM,GAAG,CAAC;AAC/B;AACA,QAAQ,CAAC,gBAAgB,WAAE,GAAM;AACjC,EAAE,IAAI,CAAC,oBAAoB,WAAE,GAAM;AACnC,IAAIA,GAAK,CAAC,YAAY,GAAG,IAAI,aAAa,EAAE,CAAC;AAC7C,IAAIA,GAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM;AACrC,MAAM,qBAAC,iBAAc,CAAC,cAAc,cAAa,CAAI;AACrD,KAAK,CAAC;AACN,IAAIA,GAAK,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;AACpC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACnC,GAAG,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-spatial",
|
|
3
3
|
"description": "Components to build React map apps.",
|
|
4
|
-
"version": "1.1
|
|
4
|
+
"version": "1.2.0-beta.1",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@geops/geops-ui": "0.1.13",
|
|
@@ -31,6 +31,9 @@
|
|
|
31
31
|
"@babel/preset-env": "7.15.0",
|
|
32
32
|
"@babel/preset-react": "7.14.5",
|
|
33
33
|
"@svgr/webpack": "5.5.0",
|
|
34
|
+
"@testing-library/jest-dom": "5.16.3",
|
|
35
|
+
"@testing-library/react": "12.1.4",
|
|
36
|
+
"@testing-library/user-event": "13.5.0",
|
|
34
37
|
"babel-core": "7.0.0-bridge.0",
|
|
35
38
|
"babel-jest": "27.0.2",
|
|
36
39
|
"babel-loader": "8.2.2",
|
|
@@ -68,9 +71,9 @@
|
|
|
68
71
|
"prettier": "2.4.1",
|
|
69
72
|
"proj4": "2.7.5",
|
|
70
73
|
"prop-types": "15.7.2",
|
|
71
|
-
"react": "
|
|
74
|
+
"react": "18",
|
|
72
75
|
"react-app-polyfill": "2.0.0",
|
|
73
|
-
"react-dom": "
|
|
76
|
+
"react-dom": "18",
|
|
74
77
|
"react-styleguidist": "11.0.8",
|
|
75
78
|
"react-svg-loader": "3.0.3",
|
|
76
79
|
"react-test-renderer": "16.13.1",
|
package/utils/KML.test.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { configure } from 'enzyme';
|
|
2
1
|
import VectorLayer from 'ol/layer/Vector';
|
|
3
2
|
import VectorSource from 'ol/source/Vector';
|
|
4
3
|
import { Style } from 'ol/style';
|
|
5
4
|
import { get } from 'ol/proj';
|
|
6
|
-
import Adapter from 'enzyme-adapter-react-16';
|
|
7
5
|
import beautify from 'xml-beautifier';
|
|
8
6
|
import KML from './KML';
|
|
9
7
|
|
|
10
|
-
configure({ adapter: new Adapter() });
|
|
11
8
|
var xmlns =
|
|
12
9
|
'xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd"';
|
|
13
10
|
|
package/utils/KML.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KML.test.js","sources":["../../src/utils/KML.test.js"],"sourcesContent":["import { configure } from 'enzyme';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport { Style } from 'ol/style';\nimport { get } from 'ol/proj';\nimport Adapter from 'enzyme-adapter-react-16';\nimport beautify from 'xml-beautifier';\nimport KML from './KML';\n\nconfigure({ adapter: new Adapter() });\nconst xmlns =\n 'xmlns=\"http://www.opengis.net/kml/2.2\" xmlns:gx=\"http://www.google.com/kml/ext/2.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd\"';\n\nconst expectWriteResult = (feats, str) => {\n expect(\n beautify(\n KML.writeFeatures(\n {\n name: 'lala',\n olLayer: new VectorLayer({\n source: new VectorSource({\n features: feats,\n }),\n }),\n },\n get('EPSG:4326'),\n ),\n ),\n ).toEqual(beautify(str));\n};\n\ndescribe('KML', () => {\n describe('readFeatures() and writeFeatures()', () => {\n test('should read/write LineStyle and ExtendedData (linesDash, lineStartIcon and lineEndIcon).', () => {\n const str = `\n <kml ${xmlns}>\n <Document>\n <name>lala</name>\n <Placemark>\n <Style>\n <LineStyle>\n <color>ff056600</color>\n <width>1</width>\n </LineStyle>\n </Style>\n <ExtendedData>\n <Data name=\"lineDash\"><value>40,40</value></Data>\n <Data name=\"lineEndIcon\"><value>{\"url\":\"fooarrowend.png\",\"scale\":0.35,\"size\":[36,58],\"zIndex\":1}</value></Data>\n <Data name=\"lineStartIcon\"><value>{\"url\":\"fooarrowstart.png\",\"scale\":0.35,\"size\":[36,58],\"zIndex\":1}</value></Data>\n </ExtendedData>\n <LineString><coordinates>0,1,0 3,5,0 40,25,0</coordinates></LineString>\n </Placemark>\n </Document>\n </kml>\n `;\n const feats = KML.readFeatures(str);\n const styles = feats[0].getStyle();\n expect(feats.length).toBe(1);\n expect(styles.length).toBe(3);\n\n // line stroke\n const strokeStyle = styles[0].getStroke();\n expect(strokeStyle.getColor()).toEqual([0, 102, 5, 1]);\n expect(strokeStyle.getLineDash()).toEqual([40, 40]);\n\n // line start icon\n const lineStartStyle = styles[1];\n expect(lineStartStyle.getImage().getRotation()).toEqual(\n -0.9272952180016122,\n );\n expect(lineStartStyle.getImage().getColor()).toEqual([0, 102, 5, 1]);\n expect(lineStartStyle.getImage().getRotateWithView()).toBe(true);\n expect(lineStartStyle.getGeometry()(feats[0]).getCoordinates()).toEqual([\n 0, 1, 0,\n ]);\n expect(lineStartStyle.getZIndex()).toEqual(1);\n\n // line end icon\n const lineEndStyle = styles[2];\n expect(lineEndStyle.getImage().getRotation()).toEqual(\n -0.49555167348582857,\n );\n expect(lineEndStyle.getImage().getRotateWithView()).toBe(true);\n expect(lineEndStyle.getImage().getColor()).toEqual([0, 102, 5, 1]);\n expect(lineEndStyle.getGeometry()(feats[0]).getCoordinates()).toEqual([\n 40, 25, 0,\n ]);\n expect(lineEndStyle.getZIndex()).toEqual(1);\n\n expectWriteResult(feats, str);\n });\n\n test('should read/write TextStyle and ExtendedData.', () => {\n const str = `\n <kml ${xmlns}>\n <Document>\n <name>lala</name>\n <Placemark>\n <name> bar </name>\n <Style>\n <IconStyle>\n <scale>0</scale>\n </IconStyle>\n <LabelStyle>\n <color>ff7e3420</color>\n <scale>2</scale>\n </LabelStyle>\n </Style>\n <ExtendedData>\n <Data name=\"textAlign\">\n <value>right</value>\n </Data>\n <Data name=\"textBackgroundFillColor\">\n <value>rgba(255,255,255,0.01)</value>\n </Data>\n <Data name=\"textFont\">\n <value>bold 16px arial</value>\n </Data>\n <Data name=\"textOffsetX\">\n <value>-90</value>\n </Data>\n <Data name=\"textOffsetY\">\n <value>30</value>\n </Data>\n <Data name=\"textPadding\">\n <value>5,6,7,8</value>\n </Data>\n <Data name=\"textRotation\">\n <value>2.303834612632515</value>\n </Data>\n <Data name=\"textStrokeColor\">\n <value>rgba(100,255,255,0.2)</value>\n </Data>\n <Data name=\"textStrokeWidth\">\n <value>3</value>\n </Data>\n </ExtendedData>\n <Point>\n <coordinates>0,0,0</coordinates>\n </Point>\n </Placemark>\n </Document>\n </kml>\n `;\n const feats = KML.readFeatures(str);\n const style = feats[0].getStyleFunction()(feats[0], 1);\n expect(feats.length).toBe(1);\n expect(style instanceof Style).toBe(true);\n\n // Text\n const styleText = style.getText();\n expect(styleText.getText()).toBe('bar'); // spaces are trimmed.\n expect(styleText.getFont()).toEqual('bold 16px arial');\n expect(styleText.getFill()).toEqual({ color_: [32, 52, 126, 1] });\n expect(styleText.getStroke()).toEqual({\n color_: 'rgba(100,255,255,0.2)',\n width_: 3,\n lineCap_: undefined,\n lineDashOffset_: undefined,\n lineDash_: null,\n lineJoin_: undefined,\n miterLimit_: undefined,\n });\n expect(styleText.getScale()).toEqual(2);\n expect(styleText.getRotation()).toEqual('2.303834612632515');\n expect(styleText.getPadding()).toEqual([5, 6, 7, 8]);\n expect(styleText.getBackgroundFill()).toEqual({\n color_: 'rgba(255,255,255,0.01)',\n });\n expect(styleText.getTextAlign()).toEqual('right');\n expect(styleText.getOffsetX()).toEqual(-90);\n expect(styleText.getOffsetY()).toEqual(30);\n expectWriteResult(feats, str);\n });\n\n test('should read and write lineDash and fillPattern style for polygon', () => {\n const str = `\n <kml ${xmlns}>\n <Document>\n <name>lala</name>\n <Placemark>\n <description></description>\n <Style>\n <LineStyle>\n <color>ff0000eb</color>\n <width>2</width>\n </LineStyle>\n <PolyStyle>\n <fill>0</fill>\n </PolyStyle>\n </Style>\n <ExtendedData>\n <Data name=\"fillPattern\">\n <value>{\"id\":3,\"color\":[235,0,0,1]}</value>\n </Data>\n <Data name=\"lineDash\">\n <value>1,1</value>\n </Data>\n </ExtendedData>\n <Polygon>\n <outerBoundaryIs>\n <LinearRing>\n <coordinates>8.521,47.381,0 8.529,47.375,0 8.531,47.382,0 8.521,47.381,0</coordinates>\n </LinearRing>\n </outerBoundaryIs>\n </Polygon>\n </Placemark>\n </Document>\n </kml>\n `;\n const feats = KML.readFeatures(str);\n const styles = feats[0].getStyle();\n expect(feats.length).toBe(1);\n expect(styles.length).toBe(1);\n\n // Polygon\n const feature = feats[0];\n const outlineStyle = styles[0].getStroke();\n expect(outlineStyle.getColor()).toEqual([235, 0, 0, 1]);\n expect(outlineStyle.getWidth()).toEqual(2);\n const fillStyle = styles[0].getFill();\n expect(feature.get('fillPattern')).toEqual({\n id: 3,\n color: [235, 0, 0, 1],\n });\n const color = fillStyle.getColor();\n expect(color.canvas).toMatchSnapshot();\n expect(color.id).toBe(3);\n expect(color.color).toEqual([235, 0, 0, 1]);\n expectWriteResult(feats, str);\n });\n\n test('should add zIndex and rotation to icon style and pictureOptions to feature properties.', () => {\n const str = `\n <kml ${xmlns}>\n <Document>\n <name>lala</name>\n <Placemark>\n <description></description>\n <Style>\n <IconStyle>\n <heading>\n 1.5707963267948966\n </heading>\n <Icon>\n <href>https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>\n <gx:w>64</gx:w>\n <gx:h>64</gx:h>\n </Icon>\n <hotSpot x=\"20\" y=\"2\" xunits=\"pixels\" yunits=\"pixels\"/>\n </IconStyle>\n </Style>\n <ExtendedData>\n <Data name=\"iconRotation\">\n <value>1.5707963267948966</value>\n </Data>\n <Data name=\"maxZoom\">\n <value>18.5</value>\n </Data>\n <Data name=\"minZoom\">\n <value>15</value>\n </Data>\n <Data name=\"pictureOptions\">\n <value>{\"resolution\":4,\"defaultScale\":0.5}</value>\n </Data>\n <Data name=\"zIndex\">\n <value>1</value>\n </Data>\n </ExtendedData>\n <Point>\n <coordinates>0,0,0</coordinates>\n </Point>\n </Placemark>\n </Document>\n </kml>\n `;\n const feats = KML.readFeatures(str);\n const style = feats[0].getStyleFunction()(feats[0], 1);\n expect(style.getZIndex()).toBe(1);\n expect(style.getImage().getRotation()).toBe(1.5707963267948966);\n expect(feats[0].get('pictureOptions')).toEqual({\n resolution: 4,\n defaultScale: 0.5,\n });\n expect(feats[0].get('maxZoom')).toEqual(18.5);\n expect(feats[0].get('minZoom')).toEqual(15);\n expectWriteResult(feats, str);\n });\n });\n\n describe('writeDocumentCamera()', () => {\n const str = `\n <kml ${xmlns}>\n <Document>\n <name>\n CamTest\n </name>\n </Document>\n </kml>`;\n\n const strWithCam = `<kml ${xmlns}>\n <Document>\n <name>\n CamTest\n </name>\n <Camera xmlns=\"\">\n <Heading>\n 270\n </Heading>\n <Altitude>\n 300\n </Altitude>\n <Longitude>\n 5.8\n </Longitude>\n <Latitude>\n 41.6\n </Latitude>\n </Camera>\n </Document>\n </kml>`;\n\n test('should insert the correct <Camera> tag.', () => {\n const kmlWithKamera = KML.writeDocumentCamera(str, {\n heading: 270,\n altitude: 300,\n longitude: 5.8,\n latitude: 41.6,\n });\n expect(beautify(kmlWithKamera)).toEqual(beautify(strWithCam));\n });\n\n test('should remove the present <Camera> tag when called without cameraAttributes.', () => {\n const kmlWithoutKamera = KML.writeDocumentCamera(strWithCam);\n expect(beautify(kmlWithoutKamera)).toEqual(beautify(str));\n });\n });\n});\n"],"names":["const"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"KML.test.js","sources":["../../src/utils/KML.test.js"],"sourcesContent":["import VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport { Style } from 'ol/style';\nimport { get } from 'ol/proj';\nimport beautify from 'xml-beautifier';\nimport KML from './KML';\n\nconst xmlns =\n 'xmlns=\"http://www.opengis.net/kml/2.2\" xmlns:gx=\"http://www.google.com/kml/ext/2.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd\"';\n\nconst expectWriteResult = (feats, str) => {\n expect(\n beautify(\n KML.writeFeatures(\n {\n name: 'lala',\n olLayer: new VectorLayer({\n source: new VectorSource({\n features: feats,\n }),\n }),\n },\n get('EPSG:4326'),\n ),\n ),\n ).toEqual(beautify(str));\n};\n\ndescribe('KML', () => {\n describe('readFeatures() and writeFeatures()', () => {\n test('should read/write LineStyle and ExtendedData (linesDash, lineStartIcon and lineEndIcon).', () => {\n const str = `\n <kml ${xmlns}>\n <Document>\n <name>lala</name>\n <Placemark>\n <Style>\n <LineStyle>\n <color>ff056600</color>\n <width>1</width>\n </LineStyle>\n </Style>\n <ExtendedData>\n <Data name=\"lineDash\"><value>40,40</value></Data>\n <Data name=\"lineEndIcon\"><value>{\"url\":\"fooarrowend.png\",\"scale\":0.35,\"size\":[36,58],\"zIndex\":1}</value></Data>\n <Data name=\"lineStartIcon\"><value>{\"url\":\"fooarrowstart.png\",\"scale\":0.35,\"size\":[36,58],\"zIndex\":1}</value></Data>\n </ExtendedData>\n <LineString><coordinates>0,1,0 3,5,0 40,25,0</coordinates></LineString>\n </Placemark>\n </Document>\n </kml>\n `;\n const feats = KML.readFeatures(str);\n const styles = feats[0].getStyle();\n expect(feats.length).toBe(1);\n expect(styles.length).toBe(3);\n\n // line stroke\n const strokeStyle = styles[0].getStroke();\n expect(strokeStyle.getColor()).toEqual([0, 102, 5, 1]);\n expect(strokeStyle.getLineDash()).toEqual([40, 40]);\n\n // line start icon\n const lineStartStyle = styles[1];\n expect(lineStartStyle.getImage().getRotation()).toEqual(\n -0.9272952180016122,\n );\n expect(lineStartStyle.getImage().getColor()).toEqual([0, 102, 5, 1]);\n expect(lineStartStyle.getImage().getRotateWithView()).toBe(true);\n expect(lineStartStyle.getGeometry()(feats[0]).getCoordinates()).toEqual([\n 0, 1, 0,\n ]);\n expect(lineStartStyle.getZIndex()).toEqual(1);\n\n // line end icon\n const lineEndStyle = styles[2];\n expect(lineEndStyle.getImage().getRotation()).toEqual(\n -0.49555167348582857,\n );\n expect(lineEndStyle.getImage().getRotateWithView()).toBe(true);\n expect(lineEndStyle.getImage().getColor()).toEqual([0, 102, 5, 1]);\n expect(lineEndStyle.getGeometry()(feats[0]).getCoordinates()).toEqual([\n 40, 25, 0,\n ]);\n expect(lineEndStyle.getZIndex()).toEqual(1);\n\n expectWriteResult(feats, str);\n });\n\n test('should read/write TextStyle and ExtendedData.', () => {\n const str = `\n <kml ${xmlns}>\n <Document>\n <name>lala</name>\n <Placemark>\n <name> bar </name>\n <Style>\n <IconStyle>\n <scale>0</scale>\n </IconStyle>\n <LabelStyle>\n <color>ff7e3420</color>\n <scale>2</scale>\n </LabelStyle>\n </Style>\n <ExtendedData>\n <Data name=\"textAlign\">\n <value>right</value>\n </Data>\n <Data name=\"textBackgroundFillColor\">\n <value>rgba(255,255,255,0.01)</value>\n </Data>\n <Data name=\"textFont\">\n <value>bold 16px arial</value>\n </Data>\n <Data name=\"textOffsetX\">\n <value>-90</value>\n </Data>\n <Data name=\"textOffsetY\">\n <value>30</value>\n </Data>\n <Data name=\"textPadding\">\n <value>5,6,7,8</value>\n </Data>\n <Data name=\"textRotation\">\n <value>2.303834612632515</value>\n </Data>\n <Data name=\"textStrokeColor\">\n <value>rgba(100,255,255,0.2)</value>\n </Data>\n <Data name=\"textStrokeWidth\">\n <value>3</value>\n </Data>\n </ExtendedData>\n <Point>\n <coordinates>0,0,0</coordinates>\n </Point>\n </Placemark>\n </Document>\n </kml>\n `;\n const feats = KML.readFeatures(str);\n const style = feats[0].getStyleFunction()(feats[0], 1);\n expect(feats.length).toBe(1);\n expect(style instanceof Style).toBe(true);\n\n // Text\n const styleText = style.getText();\n expect(styleText.getText()).toBe('bar'); // spaces are trimmed.\n expect(styleText.getFont()).toEqual('bold 16px arial');\n expect(styleText.getFill()).toEqual({ color_: [32, 52, 126, 1] });\n expect(styleText.getStroke()).toEqual({\n color_: 'rgba(100,255,255,0.2)',\n width_: 3,\n lineCap_: undefined,\n lineDashOffset_: undefined,\n lineDash_: null,\n lineJoin_: undefined,\n miterLimit_: undefined,\n });\n expect(styleText.getScale()).toEqual(2);\n expect(styleText.getRotation()).toEqual('2.303834612632515');\n expect(styleText.getPadding()).toEqual([5, 6, 7, 8]);\n expect(styleText.getBackgroundFill()).toEqual({\n color_: 'rgba(255,255,255,0.01)',\n });\n expect(styleText.getTextAlign()).toEqual('right');\n expect(styleText.getOffsetX()).toEqual(-90);\n expect(styleText.getOffsetY()).toEqual(30);\n expectWriteResult(feats, str);\n });\n\n test('should read and write lineDash and fillPattern style for polygon', () => {\n const str = `\n <kml ${xmlns}>\n <Document>\n <name>lala</name>\n <Placemark>\n <description></description>\n <Style>\n <LineStyle>\n <color>ff0000eb</color>\n <width>2</width>\n </LineStyle>\n <PolyStyle>\n <fill>0</fill>\n </PolyStyle>\n </Style>\n <ExtendedData>\n <Data name=\"fillPattern\">\n <value>{\"id\":3,\"color\":[235,0,0,1]}</value>\n </Data>\n <Data name=\"lineDash\">\n <value>1,1</value>\n </Data>\n </ExtendedData>\n <Polygon>\n <outerBoundaryIs>\n <LinearRing>\n <coordinates>8.521,47.381,0 8.529,47.375,0 8.531,47.382,0 8.521,47.381,0</coordinates>\n </LinearRing>\n </outerBoundaryIs>\n </Polygon>\n </Placemark>\n </Document>\n </kml>\n `;\n const feats = KML.readFeatures(str);\n const styles = feats[0].getStyle();\n expect(feats.length).toBe(1);\n expect(styles.length).toBe(1);\n\n // Polygon\n const feature = feats[0];\n const outlineStyle = styles[0].getStroke();\n expect(outlineStyle.getColor()).toEqual([235, 0, 0, 1]);\n expect(outlineStyle.getWidth()).toEqual(2);\n const fillStyle = styles[0].getFill();\n expect(feature.get('fillPattern')).toEqual({\n id: 3,\n color: [235, 0, 0, 1],\n });\n const color = fillStyle.getColor();\n expect(color.canvas).toMatchSnapshot();\n expect(color.id).toBe(3);\n expect(color.color).toEqual([235, 0, 0, 1]);\n expectWriteResult(feats, str);\n });\n\n test('should add zIndex and rotation to icon style and pictureOptions to feature properties.', () => {\n const str = `\n <kml ${xmlns}>\n <Document>\n <name>lala</name>\n <Placemark>\n <description></description>\n <Style>\n <IconStyle>\n <heading>\n 1.5707963267948966\n </heading>\n <Icon>\n <href>https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>\n <gx:w>64</gx:w>\n <gx:h>64</gx:h>\n </Icon>\n <hotSpot x=\"20\" y=\"2\" xunits=\"pixels\" yunits=\"pixels\"/>\n </IconStyle>\n </Style>\n <ExtendedData>\n <Data name=\"iconRotation\">\n <value>1.5707963267948966</value>\n </Data>\n <Data name=\"maxZoom\">\n <value>18.5</value>\n </Data>\n <Data name=\"minZoom\">\n <value>15</value>\n </Data>\n <Data name=\"pictureOptions\">\n <value>{\"resolution\":4,\"defaultScale\":0.5}</value>\n </Data>\n <Data name=\"zIndex\">\n <value>1</value>\n </Data>\n </ExtendedData>\n <Point>\n <coordinates>0,0,0</coordinates>\n </Point>\n </Placemark>\n </Document>\n </kml>\n `;\n const feats = KML.readFeatures(str);\n const style = feats[0].getStyleFunction()(feats[0], 1);\n expect(style.getZIndex()).toBe(1);\n expect(style.getImage().getRotation()).toBe(1.5707963267948966);\n expect(feats[0].get('pictureOptions')).toEqual({\n resolution: 4,\n defaultScale: 0.5,\n });\n expect(feats[0].get('maxZoom')).toEqual(18.5);\n expect(feats[0].get('minZoom')).toEqual(15);\n expectWriteResult(feats, str);\n });\n });\n\n describe('writeDocumentCamera()', () => {\n const str = `\n <kml ${xmlns}>\n <Document>\n <name>\n CamTest\n </name>\n </Document>\n </kml>`;\n\n const strWithCam = `<kml ${xmlns}>\n <Document>\n <name>\n CamTest\n </name>\n <Camera xmlns=\"\">\n <Heading>\n 270\n </Heading>\n <Altitude>\n 300\n </Altitude>\n <Longitude>\n 5.8\n </Longitude>\n <Latitude>\n 41.6\n </Latitude>\n </Camera>\n </Document>\n </kml>`;\n\n test('should insert the correct <Camera> tag.', () => {\n const kmlWithKamera = KML.writeDocumentCamera(str, {\n heading: 270,\n altitude: 300,\n longitude: 5.8,\n latitude: 41.6,\n });\n expect(beautify(kmlWithKamera)).toEqual(beautify(strWithCam));\n });\n\n test('should remove the present <Camera> tag when called without cameraAttributes.', () => {\n const kmlWithoutKamera = KML.writeDocumentCamera(strWithCam);\n expect(beautify(kmlWithoutKamera)).toEqual(beautify(str));\n });\n });\n});\n"],"names":["const"],"mappings":"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"}
|
package/utils/KMLFormat.test.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import { configure } from 'enzyme';
|
|
2
|
-
import Adapter from 'enzyme-adapter-react-16';
|
|
3
1
|
import KML from './KMLFormat';
|
|
4
2
|
|
|
5
|
-
configure({ adapter: new Adapter() });
|
|
6
3
|
var xmlns =
|
|
7
4
|
'xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd"';
|
|
8
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KMLFormat.test.js","sources":["../../src/utils/KMLFormat.test.js"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"KMLFormat.test.js","sources":["../../src/utils/KMLFormat.test.js"],"sourcesContent":["import KML from './KMLFormat';\n\nconst xmlns =\n 'xmlns=\"http://www.opengis.net/kml/2.2\" xmlns:gx=\"http://www.google.com/kml/ext/2.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd\"';\n\ndescribe('KML', () => {\n test('should read <Camera> tags correctly.', () => {\n const str = `\n <kml ${xmlns}>\n <Document>\n <name>lala</name>\n <Camera>\n <Heading>\n 270\n </Heading>\n <Altitude>\n 300\n </Altitude>\n <Longitude>\n 5.8\n </Longitude>\n <Latitude>\n 41.6\n </Latitude>\n </Camera>\n <Placemark>\n <Camera>\n <Heading>\n 180\n </Heading>\n <AltitudeMode>\n clampToGround\n </AltitudeMode>\n </Camera>\n </Placemark>\n </Document>\n </kml>\n `;\n const format = new KML();\n const cameras = format.readCamera(str);\n\n expect(cameras.length).toEqual(2);\n expect(cameras[0].Heading).toEqual(270);\n expect(cameras[0].Altitude).toEqual(300);\n expect(cameras[0].Longitude).toEqual(5.8);\n expect(cameras[0].Latitude).toEqual(41.6);\n expect(cameras[1].Heading).toEqual(180);\n expect(cameras[1].AltitudeMode).toEqual('clampToGround');\n });\n});\n"],"names":["const"],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B;AACAA,GAAK,CAAC,KAAK;AACX,EAAE,oPAAoP,CAAC;AACvP;AACA,QAAQ,CAAC,KAAK,WAAE,GAAM;AACtB,EAAE,IAAI,CAAC,sCAAsC,WAAE,GAAM;AACrD,IAAIA,GAAK,CAAC,GAAG,GAAG,kBACH,KAAK,ouBA6Bb,CAAC;AACN,IAAIA,GAAK,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B,IAAIA,GAAK,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3C;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7C,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9C,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAC7D,GAAG,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;"}
|