@@ -10,15 +10,14 @@ describe("register()", () => {
1010 expect ( L . pixiLetLayer ) . toBeUndefined ( ) ;
1111 expect ( L . PixiLetLayer ) . toBeUndefined ( ) ;
1212
13- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-var-requires, unicorn/prefer-module
14- register ( require ( "leaflet" ) , require ( "pixi.js" ) ) ;
13+ register ( L , PIXI ) ;
1514
1615 expect ( L . pixiLetLayer ) . toBeInstanceOf ( Function ) ;
1716 expect ( L . PixiLetLayer ) . toBeDefined ( ) ;
1817 } ) ;
1918
2019 describe ( "pixiLetLayer()" , ( ) => {
21- it . todo ( "returns a new PixiLetLayer" , ( ) => {
20+ it ( "returns a new PixiLetLayer" , ( ) => {
2221 expect ( L . pixiLetLayer ) . toBeInstanceOf ( Function ) ;
2322 expect ( L . pixiLetLayer ( ( ) => { /* test */ } ) ) . toBeInstanceOf ( L . PixiLetLayer ) ;
2423 const spy = vitest . fn ( ) ,
@@ -35,17 +34,145 @@ describe("register()", () => {
3534 expect ( map . hasLayer ( layer ) ) . toBe ( false ) ;
3635 expect ( layer . addTo ( map ) ) . toBe ( layer ) ;
3736 expect ( map . hasLayer ( layer ) ) . toBe ( true ) ;
38- expect ( spy ) . toHaveBeenCalled ( ) ;
37+ expect ( spy ) . toHaveBeenCalledWith ( layer . utils , expect . objectContaining ( { type : "add" } ) ) ;
38+
39+ layer . destroy ( ) ;
40+
41+ expect ( map . hasLayer ( layer ) ) . toBe ( false ) ;
3942 } ) ;
4043 } ) ;
4144
42- describe . todo ( "new PixiLetLayer()" , ( ) => {
43- it . todo ( "creates a new PixiLetLayer" , ( ) => {
44- // TODO
45+ describe ( "new PixiLetLayer()" , ( ) => {
46+ it ( "creates a new PixiLetLayer" , ( ) => {
47+ const spy = vitest . fn ( ) ,
48+ container = new PIXI . Container ( ) ,
49+ layer = new L . PixiLetLayer ( spy , {
50+ container,
51+ } ) ;
52+ expect ( layer ) . toBeInstanceOf ( L . PixiLetLayer ) ;
53+ expect ( spy ) . not . toHaveBeenCalled ( ) ;
54+ expect ( layer . options . padding ) . toBe ( 0.1 ) ;
55+
56+ const map = L . map ( document . createElement ( "div" ) ) . setView ( [ 51.505 , - 0.09 ] , 13 ) ;
57+ expect ( map . hasLayer ( layer ) ) . toBe ( false ) ;
58+ expect ( layer . addTo ( map ) ) . toBe ( layer ) ;
59+ expect ( map . hasLayer ( layer ) ) . toBe ( true ) ;
60+
61+ expect ( spy ) . toHaveBeenCalledWith ( layer . utils , expect . objectContaining ( { type : "add" } ) ) ;
62+ expect ( spy ) . toHaveBeenCalledTimes ( 1 ) ;
63+
64+ layer . destroy ( ) ;
65+
66+ expect ( map . hasLayer ( layer ) ) . toBe ( false ) ;
67+ } ) ;
68+
69+ it ( "creates a new PixiLetLayer (with doubleBuffering)" , async ( ) => {
70+ const spy = vitest . fn ( ) ,
71+ container = new PIXI . Container ( ) ,
72+ layer = new L . PixiLetLayer ( spy , {
73+ container,
74+ doubleBuffering : true ,
75+ } ) ;
76+ expect ( layer ) . toBeInstanceOf ( L . PixiLetLayer ) ;
77+ expect ( spy ) . not . toHaveBeenCalled ( ) ;
78+ expect ( layer . options . padding ) . toBe ( 0.1 ) ;
79+
80+ const map = L . map ( document . createElement ( "div" ) ) . setView ( [ 51.505 , - 0.09 ] , 13 ) ;
81+ expect ( map . hasLayer ( layer ) ) . toBe ( false ) ;
82+ expect ( layer . addTo ( map ) ) . toBe ( layer ) ;
83+ expect ( map . hasLayer ( layer ) ) . toBe ( true ) ;
84+
85+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
86+ expect ( spy ) . toHaveBeenCalledWith ( layer . utils , expect . objectContaining ( { type : "add" } ) ) ;
87+ expect ( spy ) . toHaveBeenCalledTimes ( 1 ) ;
88+
89+ layer . destroy ( ) ;
90+
91+ expect ( map . hasLayer ( layer ) ) . toBe ( false ) ;
4592 } ) ;
4693
47- it . todo ( "sets the options" , ( ) => {
48- // TODO
94+ it ( "redraw()" , async ( ) => {
95+ const spy = vitest . fn ( ) ,
96+ container = new PIXI . Container ( ) ,
97+ layer = new L . PixiLetLayer ( spy , {
98+ container,
99+ } ) , map = L . map ( document . createElement ( "div" ) ) . setView ( [ 51.505 , - 0.09 ] , 13 ) ;
100+
101+ expect ( map . hasLayer ( layer ) ) . toBe ( false ) ;
102+ await layer . redraw ( ) ;
103+ expect ( spy ) . toHaveBeenCalledTimes ( 0 ) ;
104+
105+ layer . addTo ( map ) ;
106+
107+ expect ( spy ) . toHaveBeenCalledWith ( layer . utils , expect . objectContaining ( { type : "add" } ) ) ;
108+ expect ( spy ) . toHaveBeenCalledTimes ( 1 ) ;
109+
110+ await layer . redraw ( { type : "test" } ) ;
111+
112+ expect ( spy ) . toHaveBeenCalledWith ( layer . utils , expect . objectContaining ( { type : "test" } ) ) ;
113+ expect ( spy ) . toHaveBeenCalledTimes ( 2 ) ;
114+
115+ layer . destroy ( ) ;
116+
117+ expect ( map . hasLayer ( layer ) ) . toBe ( false ) ;
118+ } ) ;
119+
120+ it ( "_onZoom" , async ( ) => {
121+ const spy = vitest . fn ( ) ,
122+ container = new PIXI . Container ( ) ,
123+ layer = new L . PixiLetLayer ( spy , {
124+ container,
125+ } ) , map = L . map ( document . createElement ( "div" ) , {
126+ zoomAnimation : false ,
127+ } ) . setView ( [ 51.505 , - 0.09 ] , 13 ) ;
128+
129+ layer . addTo ( map ) ;
130+
131+ expect ( spy ) . toHaveBeenCalledWith ( layer . utils , expect . objectContaining ( { type : "add" } ) ) ;
132+ expect ( spy ) . toHaveBeenCalledTimes ( 1 ) ;
133+
134+ map . zoomIn ( ) ;
135+
136+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
137+ expect ( spy ) . toHaveBeenCalledWith ( layer . utils , expect . objectContaining ( { type : "moveend" } ) ) ;
138+ expect ( spy ) . toHaveBeenCalledTimes ( 2 ) ;
139+
140+ layer . destroy ( ) ;
141+
142+ expect ( map . hasLayer ( layer ) ) . toBe ( false ) ;
143+ } ) ;
144+
145+ it ( "_onAnimZoom" , async ( ) => {
146+ const spy = vitest . fn ( ) ,
147+ container = new PIXI . Container ( ) ,
148+ element = document . createElement ( "div" ) ;
149+ element . style . width = "100vw" ;
150+ element . style . height = "100vh" ;
151+ const layer = new L . PixiLetLayer ( spy , {
152+ container,
153+ shouldRedrawOnMove : ( ) => true ,
154+ // eslint-disable-next-line unicorn/no-array-callback-reference, unicorn/no-array-method-this-argument
155+ } ) , map = L . map ( element ) . setView ( [ 51.505 , - 0.09 ] , 13 ) ;
156+
157+ layer . addTo ( map ) ;
158+
159+ expect ( spy ) . toHaveBeenCalledWith ( layer . utils , expect . objectContaining ( { type : "add" } ) ) ;
160+ expect ( spy ) . toHaveBeenCalledTimes ( 1 ) ;
161+
162+ //* Emit event to simulate a scroll movement
163+ element . dispatchEvent ( new WheelEvent ( "onwheel" in window ? "wheel" : "mousewheel" , {
164+ deltaMode : 0 ,
165+ deltaY : - 120 ,
166+ } ) ) ;
167+
168+ await new Promise ( resolve => setTimeout ( resolve , 2000 ) ) ;
169+ expect ( spy ) . toHaveBeenCalledWith ( layer . utils , expect . objectContaining ( { type : "move" } ) ) ;
170+ expect ( spy ) . toHaveBeenCalledWith ( layer . utils , expect . objectContaining ( { type : "moveend" } ) ) ;
171+ expect ( spy ) . toHaveBeenCalledTimes ( 3 ) ;
172+
173+ layer . destroy ( ) ;
174+
175+ expect ( map . hasLayer ( layer ) ) . toBe ( false ) ;
49176 } ) ;
50177 } ) ;
51178} ) ;
0 commit comments