Skip to content

Commit becbde2

Browse files
[fix]UT
1 parent 003bf66 commit becbde2

5 files changed

Lines changed: 207 additions & 49 deletions

File tree

‎test/mapboxgl/core/MapExtendSpec.js‎

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,24 @@
1+
import mapboxglMock from '../../tool/mock_mapboxgl_map';
12
import mapboxgl from 'mapbox-gl';
2-
import mbglmap from '../../tool/mock_mapboxgl_map';
33
import { FetchRequest } from '../../../src/common/util/FetchRequest';
44
import cipher from 'node-forge/lib/cipher';
55
import { MapExtend } from '../../../src/mapboxgl/core/MapExtend';
66
import { decryptSources } from '../../../src/mapboxgl/core/decryptSource';
77
import { EncryptRequest } from '../../../src/common/util/EncryptRequest';
8-
import '../../../src/mapboxgl/core/MapExtend';
98

109
describe('getServiceKey', () => {
11-
let originalTimeout;
10+
let originalTimeout, testDiv;
1211
const url = 'http:/fake:8090/iserver/iserver/services/map-China107/rest/maps/A';
13-
MapExtend;
14-
beforeEach(() => {
15-
spyOn(mapboxgl, 'Map').and.callFake(mbglmap);
16-
window.atob = () =>
17-
`ú\x86\x00ë\x14ø\n0Ø\x9C¶¬\x1D\x16ü\x99\x19rì;c\x8A\x8F\x83» þH©ü*TÂ.ÒxæêÏKëÔ|^¯à\x14*h\x96à\x80\x1E|\x8E¢\x8F)ÔÐ÷Á-/ì@iCð×F7û\x8B\x01k\x13\x18\x9BA\x88\x923]bSáÒLºÎ\v[váÐÁÆZi\x87\x1DþV\x91o\x97\x02~rÃñ¾\x051¥¬\x1CL\x01úºüê\x95\x0EEs¸/\\{6\x9A\x9DwRËÂ{¨~6T\x91\x19\x12\x1C_\x9Bb÷vhB\f{\x03éØ\x19w-Âϳ/\x1B»²C²\x1F\x97¢\x99\x88C\x8DÁCÂ8ð\x96t)ZùÞÓ\x03¨f\x1E´*\x97\x8Fµ±´í\x8B\x9ChíMlÅ\x06\x9Biþ\x03k¢\x83\x9A\x95\x8Fé\x03ùÓ¶N\x02qR?CÙê·Æ\x89\x854 ÞÐÒræéø¢]\x81ú®Ã0\x89ßMòPkå²E\x8DF\x1C¶æ\x84Bj¦\x99'[CÁ\x14ýaP\x1AÛu ×úHÃ:.\x1Eû\x0Eå\x0Féê\x91\x82ÓKÞ6T\x92é6©\x91v¨\f\x1A\x85·\x02¾\x87͵V[ç\x14DÑ8\x1Bm\x82ö\x1BBÿ\x87þí¬§f´¶\x9Fé\x1Ds¼:µt@\x15Í\x96bÛ"ý\x16~H0¥#l®\x02b`;
18-
cipher.createDecipher = () => ({
19-
start: () => {},
20-
update: () => {},
21-
finish: () => true,
22-
output: {
23-
data: `{"headers":{"X-Frame-Options":"SAMEORIGIN","Access-Control-Expose-Headers":"Access-Control-Allow-Origin,Access-Control-Allow-Credentials","Access-Control-Allow-Origin":"*","Set-Cookie":"rememberMe=deleteMe; Path=/iserver; Max-Age=0; Expires=Tue, 19-Mar-2024 01:43:12 GMT; SameSite=lax"},"data":"P8h08GonNjuCB4+CAykAGmLYwNsiv4G6H8KFrFi7Afk=","status":200}`
24-
}
25-
});
12+
beforeAll(() => {
13+
MapExtend;
14+
testDiv = window.document.createElement('div');
15+
testDiv.setAttribute('id', 'map');
16+
testDiv.style.styleFloat = 'left';
17+
testDiv.style.marginLeft = '8px';
18+
testDiv.style.marginTop = '50px';
19+
testDiv.style.width = '500px';
20+
testDiv.style.height = '500px';
21+
window.document.body.appendChild(testDiv);
2622
spyOn(FetchRequest, 'get').and.callFake((url) => {
2723
if (url.includes('map-China107')) {
2824
return Promise.resolve(
@@ -163,16 +159,25 @@ describe('getServiceKey', () => {
163159
);
164160
}
165161
});
162+
window.atob = () =>
163+
`ú\x86\x00ë\x14ø\n0Ø\x9C¶¬\x1D\x16ü\x99\x19rì;c\x8A\x8F\x83» þH©ü*TÂ.ÒxæêÏKëÔ|^¯à\x14*h\x96à\x80\x1E|\x8E¢\x8F)ÔÐ÷Á-/ì@iCð×F7û\x8B\x01k\x13\x18\x9BA\x88\x923]bSáÒLºÎ\v[váÐÁÆZi\x87\x1DþV\x91o\x97\x02~rÃñ¾\x051¥¬\x1CL\x01úºüê\x95\x0EEs¸/\\{6\x9A\x9DwRËÂ{¨~6T\x91\x19\x12\x1C_\x9Bb÷vhB\f{\x03éØ\x19w-Âϳ/\x1B»²C²\x1F\x97¢\x99\x88C\x8DÁCÂ8ð\x96t)ZùÞÓ\x03¨f\x1E´*\x97\x8Fµ±´í\x8B\x9ChíMlÅ\x06\x9Biþ\x03k¢\x83\x9A\x95\x8Fé\x03ùÓ¶N\x02qR?CÙê·Æ\x89\x854 ÞÐÒræéø¢]\x81ú®Ã0\x89ßMòPkå²E\x8DF\x1C¶æ\x84Bj¦\x99'[CÁ\x14ýaP\x1AÛu ×úHÃ:.\x1Eû\x0Eå\x0Féê\x91\x82ÓKÞ6T\x92é6©\x91v¨\f\x1A\x85·\x02¾\x87͵V[ç\x14DÑ8\x1Bm\x82ö\x1BBÿ\x87þí¬§f´¶\x9Fé\x1Ds¼:µt@\x15Í\x96bÛ"ý\x16~H0¥#l®\x02b`;
164+
cipher.createDecipher = () => ({
165+
start: () => {},
166+
update: () => {},
167+
finish: () => true,
168+
output: {
169+
data: `{"headers":{"X-Frame-Options":"SAMEORIGIN","Access-Control-Expose-Headers":"Access-Control-Allow-Origin,Access-Control-Allow-Credentials","Access-Control-Allow-Origin":"*","Set-Cookie":"rememberMe=deleteMe; Path=/iserver; Max-Age=0; Expires=Tue, 19-Mar-2024 01:43:12 GMT; SameSite=lax"},"data":"P8h08GonNjuCB4+CAykAGmLYwNsiv4G6H8KFrFi7Afk=","status":200}`
170+
}
171+
});
166172
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
167173
jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000;
168174
});
169-
170-
afterEach(() => {
175+
afterAll(() => {
176+
document.body.removeChild(testDiv);
171177
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
172178
});
173-
174179
it('listLayers', (done) => {
175-
map = new mapboxgl.Map({
180+
const map = new mapboxgl.Map({
176181
container: 'map',
177182
style: {
178183
version: 8,
@@ -204,6 +209,8 @@ describe('getServiceKey', () => {
204209
});
205210

206211
it('getServiceKey', async () => {
212+
spyOn(mapboxgl, 'Map').and.callFake(mapboxglMock);
213+
207214
EncryptRequest.prototype.request = () => {
208215
return {
209216
json: () =>

‎test/mapboxgl/overlay/L7LayerSpec.js‎

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
import { L7Layer } from '../../../src/mapboxgl/overlay/L7Layer';
2-
import mbglmap from '../../tool/mock_mapboxgl_map';
31
import mapboxgl from 'mapbox-gl';
2+
import mbglmap from '../../tool/mock_mapboxgl_map';
3+
import * as L7 from '@supermap/mapboxgl-l7-render';
4+
import * as mockL7 from '../../tool/mock_l7';
5+
import { L7Layer } from '../../../src/mapboxgl/overlay/L7Layer';
46

57
var url = GlobeParameter.ChinaURL + '/zxyTileImage.png?z={z}&x={x}&y={y}';
68

79
describe('L7Layer', () => {
810
var originalTimeout;
9-
var testDiv, map;
11+
var testDiv, map, getL7Scene, setLayoutProperty;
1012
var data = [
1113
{
1214
id: '5011000000404',
@@ -18,7 +20,19 @@ describe('L7Layer', () => {
1820
}
1921
];
2022
beforeAll((done) => {
23+
getL7Scene = mapboxgl.Map.prototype.getL7Scene;
24+
setLayoutProperty = mapboxgl.Map.prototype.setLayoutProperty;
25+
mbglmap.prototype.getL7Scene = getL7Scene;
26+
mbglmap.prototype.setLayoutProperty = setLayoutProperty;
2127
spyOn(mapboxgl, 'Map').and.callFake(mbglmap);
28+
29+
spyOn(L7, 'PointLayer').and.callFake(mockL7.PointLayer);
30+
spyOn(L7, 'GeometryLayer').and.callFake(mockL7.GeometryLayer);
31+
spyOn(L7, 'Scene').and.callFake(mockL7.Scene);
32+
spyOn(L7, 'Mapbox').and.callFake(mockL7.Mapbox);
33+
// Scene = mockL7.Scene;
34+
// Mapbox = mockL7.Mapbox;
35+
// mapboxgl.Map.prototype.getCRS = () => ({ fromWGS84: (val) => val, getExtent: () => [] });
2236
testDiv = window.document.createElement('div');
2337
testDiv.setAttribute('id', 'map');
2438
testDiv.style.styleFloat = 'left';
@@ -49,7 +63,7 @@ describe('L7Layer', () => {
4963
]
5064
},
5165
center: [112, 37.94],
52-
zoom: 3
66+
zoom: 13
5367
});
5468
map.on('load', function () {
5569
done();
@@ -59,20 +73,17 @@ describe('L7Layer', () => {
5973
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
6074
jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000;
6175
});
76+
6277
afterEach(() => {
6378
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
6479
});
80+
6581
afterAll(() => {
6682
document.body.removeChild(testDiv);
6783
map = null;
6884
});
6985

70-
it('getL7Scene', async () => {
71-
const scene = await map.getL7Scene();
72-
expect(scene).not.toBeNull();
73-
});
74-
75-
it('getL7Scene init', async () => {
86+
it('getL7Scene', (done) => {
7687
var layer = new L7Layer({ type: 'PointLayer' });
7788
var l7Layer = layer.getL7Layer();
7889
l7Layer
@@ -88,10 +99,11 @@ describe('L7Layer', () => {
8899
.animate(true)
89100
.size(56)
90101
.color('#4cfd47');
91-
map.addLayer(layer);
92102
expect(mapboxgl.Map.prototype.$l7scene).not.toBeNull();
93-
const scene = await map.getL7Scene();
94-
expect(scene).not.toBeNull();
103+
map.getL7Scene().then((scene) => {
104+
expect(scene).not.toBeNull();
105+
done();
106+
});
95107
});
96108

97109
it('PointLayer', (done) => {
@@ -237,17 +249,22 @@ describe('L7Layer', () => {
237249
.size(56)
238250
.color('#4cfd47');
239251
map.addLayer(layer);
252+
map.style.fire = () => {};
253+
map.style.setLayoutProperty = () => {};
254+
255+
map.overlayLayersManager = { [layer.id]: layer };
240256
expect(l7Layer).not.toBeNull();
257+
map.setLayoutProperty = setLayoutProperty;
241258

242259
spyOn(l7Layer, 'show');
243260
spyOn(l7Layer, 'hide');
244261
spyOn(map.style, 'setLayoutProperty');
245262

246-
map.setVisibility(layer.id, false);
263+
map.setLayoutProperty(layer.id, 'visibility', 'hidden');
247264
expect(l7Layer.hide).toHaveBeenCalled();
248265
expect(map.style.setLayoutProperty).toHaveBeenCalled();
249266

250-
map.setVisibility(layer.id, true);
267+
map.setLayoutProperty(layer.id, 'visibility', 'visible');
251268
expect(l7Layer.show).toHaveBeenCalled();
252269
expect(map.style.setLayoutProperty).toHaveBeenCalled();
253270

‎test/maplibregl/overlay/L7LayerSpec.js‎

Lines changed: 86 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
import { L7Layer } from '../../../src/maplibregl/overlay/L7Layer';
21
import maplibregl from 'maplibre-gl';
2+
import mbglmap from '../../tool/mock_mapboxgl_map';
3+
import * as L7 from '@supermap/maplibregl-l7-render';
4+
import * as mockL7 from '../../tool/mock_l7';
5+
import { L7Layer } from '../../../src/maplibregl/overlay/L7Layer';
36

47
var url = GlobeParameter.ChinaURL + '/zxyTileImage.png?z={z}&x={x}&y={y}';
58

69
describe('L7Layer', () => {
710
var originalTimeout;
8-
var testDiv, map;
11+
var testDiv, map, getL7Scene, setLayoutProperty;
912
var data = [
1013
{
1114
id: '5011000000404',
@@ -17,6 +20,18 @@ describe('L7Layer', () => {
1720
}
1821
];
1922
beforeAll((done) => {
23+
getL7Scene = maplibregl.Map.prototype.getL7Scene;
24+
setLayoutProperty = maplibregl.Map.prototype.setLayoutProperty;
25+
mbglmap.prototype.getL7Scene = getL7Scene;
26+
spyOn(maplibregl, 'Map').and.callFake(mbglmap);
27+
28+
spyOn(L7, 'PointLayer').and.callFake(mockL7.PointLayer);
29+
spyOn(L7, 'GeometryLayer').and.callFake(mockL7.GeometryLayer);
30+
spyOn(L7, 'Scene').and.callFake(mockL7.Scene);
31+
spyOn(L7, 'Mapbox').and.callFake(mockL7.Mapbox);
32+
// Scene = mockL7.Scene;
33+
// Mapbox = mockL7.Mapbox;
34+
// maplibregl.Map.prototype.getCRS = () => ({ fromWGS84: (val) => val, getExtent: () => [] });
2035
testDiv = window.document.createElement('div');
2136
testDiv.setAttribute('id', 'map');
2237
testDiv.style.styleFloat = 'left';
@@ -47,7 +62,7 @@ describe('L7Layer', () => {
4762
]
4863
},
4964
center: [112, 37.94],
50-
zoom: 3
65+
zoom: 13
5166
});
5267
map.on('load', function () {
5368
done();
@@ -57,20 +72,17 @@ describe('L7Layer', () => {
5772
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
5873
jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000;
5974
});
75+
6076
afterEach(() => {
6177
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
6278
});
79+
6380
afterAll(() => {
6481
document.body.removeChild(testDiv);
6582
map = null;
6683
});
6784

68-
it('getL7Scene', async () => {
69-
const scene = await map.getL7Scene();
70-
expect(scene).not.toBeNull();
71-
});
72-
73-
it('getL7Scene init', async () => {
85+
it('getL7Scene', (done) => {
7486
var layer = new L7Layer({ type: 'PointLayer' });
7587
var l7Layer = layer.getL7Layer();
7688
l7Layer
@@ -86,10 +98,11 @@ describe('L7Layer', () => {
8698
.animate(true)
8799
.size(56)
88100
.color('#4cfd47');
89-
map.addLayer(layer);
90101
expect(maplibregl.Map.prototype.$l7scene).not.toBeNull();
91-
const scene = await map.getL7Scene();
92-
expect(scene).not.toBeNull();
102+
map.getL7Scene().then((scene) => {
103+
expect(scene).not.toBeNull();
104+
done();
105+
});
93106
});
94107

95108
it('PointLayer', (done) => {
@@ -171,6 +184,7 @@ describe('L7Layer', () => {
171184
map.removeLayer(layer.id);
172185
done();
173186
});
187+
174188
it('PointLayer rerender', (done) => {
175189
var layer = new L7Layer({ type: 'PointLayer' });
176190
var l7Layer = layer.getL7Layer();
@@ -193,4 +207,64 @@ describe('L7Layer', () => {
193207
layer.reRender();
194208
done();
195209
});
210+
211+
it('PointLayer removeLayer', (done) => {
212+
var layer = new L7Layer({ type: 'PointLayer' });
213+
var l7Layer = layer.getL7Layer();
214+
l7Layer
215+
.source(data, {
216+
parser: {
217+
type: 'json',
218+
x: 'longitude',
219+
y: 'latitude'
220+
}
221+
})
222+
.shape('circle')
223+
.active(true)
224+
.animate(true)
225+
.size(56)
226+
.color('#4cfd47');
227+
map.addLayer(layer);
228+
expect(l7Layer).not.toBeNull();
229+
expect(layer.type).toBe('custom');
230+
map.removeLayer(layer.id);
231+
done();
232+
});
233+
234+
it('PointLayer setVisibility', (done) => {
235+
var layer = new L7Layer({ type: 'PointLayer' });
236+
var l7Layer = layer.getL7Layer();
237+
l7Layer
238+
.source(data, {
239+
parser: {
240+
type: 'json',
241+
x: 'longitude',
242+
y: 'latitude'
243+
}
244+
})
245+
.shape('circle')
246+
.active(true)
247+
.animate(true)
248+
.size(56)
249+
.color('#4cfd47');
250+
map.addLayer(layer);
251+
map.style.fire = () => {};
252+
map.style.setLayoutProperty = () => {};
253+
map.overlayLayersManager = { [layer.id]: layer };
254+
expect(l7Layer).not.toBeNull();
255+
map.setLayoutProperty = setLayoutProperty;
256+
spyOn(l7Layer, 'show');
257+
spyOn(l7Layer, 'hide');
258+
spyOn(map.style, 'setLayoutProperty');
259+
260+
map.setLayoutProperty(layer.id, 'visibility', 'hidden');
261+
expect(l7Layer.hide).toHaveBeenCalled();
262+
expect(map.style.setLayoutProperty).toHaveBeenCalled();
263+
264+
map.setLayoutProperty(layer.id, 'visibility', 'visible');
265+
expect(l7Layer.show).toHaveBeenCalled();
266+
expect(map.style.setLayoutProperty).toHaveBeenCalled();
267+
268+
done();
269+
});
196270
});

0 commit comments

Comments
 (0)