1- import { L7Layer } from '../../../src/maplibregl/overlay/L7Layer' ;
21import 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
47var url = GlobeParameter . ChinaURL + '/zxyTileImage.png?z={z}&x={x}&y={y}' ;
58
69describe ( '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