1
1
import { GridStackEngine } from '../src/gridstack-engine' ;
2
+ import { GridStackNode } from '../src/types' ;
2
3
3
4
describe ( 'gridstack engine' , function ( ) {
4
5
'use strict' ;
5
- let engine ;
6
+ let engine : GridStackEngine ;
6
7
// old hacky JS code that's not happy in TS. just cast to `any` and skip warnings
7
8
let e : any = GridStackEngine ;
8
9
let w : any = window ;
9
10
10
11
let findNode = function ( engine , id ) {
11
- return engine . nodes . find ( function ( i ) { return i . _id === id ; } ) ;
12
+ return engine . nodes . find ( function ( i ) { return i . id === id ; } ) ;
12
13
} ;
13
14
14
15
it ( 'should exist setup function.' , function ( ) {
@@ -19,24 +20,24 @@ describe('gridstack engine', function() {
19
20
describe ( 'test constructor' , function ( ) {
20
21
21
22
it ( 'should be setup properly' , function ( ) {
22
- engine = new GridStackEngine ( 12 ) ;
23
+ engine = new GridStackEngine ( ) ;
23
24
expect ( engine . column ) . toEqual ( 12 ) ;
24
25
expect ( engine . float ) . toEqual ( false ) ;
25
- expect ( engine . maxRow ) . toEqual ( 0 ) ;
26
+ expect ( engine . maxRow ) . toEqual ( undefined ) ;
26
27
expect ( engine . nodes ) . toEqual ( [ ] ) ;
27
- expect ( engine . onchange ) . toEqual ( undefined ) ;
28
+ expect ( engine . onChange ) . toEqual ( undefined ) ;
28
29
expect ( engine . batchMode ) . toEqual ( undefined ) ;
29
30
} ) ;
30
31
31
32
it ( 'should set params correctly.' , function ( ) {
32
33
let fkt = function ( ) { } ;
33
34
let arr : any = [ 1 , 2 , 3 ] ;
34
- engine = new GridStackEngine ( 1 , fkt , true , 2 , arr ) ;
35
+ engine = new GridStackEngine ( { column : 1 , onChange : fkt , float : true , maxRow : 2 , nodes : arr } ) ;
35
36
expect ( engine . column ) . toEqual ( 1 ) ;
36
37
expect ( engine . float ) . toBe ( true ) ;
37
38
expect ( engine . maxRow ) . toEqual ( 2 ) ;
38
39
expect ( engine . nodes ) . toEqual ( arr ) ;
39
- expect ( engine . onchange ) . toEqual ( fkt ) ;
40
+ expect ( engine . onChange ) . toEqual ( fkt ) ;
40
41
expect ( engine . batchMode ) . toEqual ( undefined ) ;
41
42
} ) ;
42
43
} ) ;
@@ -54,21 +55,21 @@ describe('gridstack engine', function() {
54
55
describe ( 'test prepareNode' , function ( ) {
55
56
56
57
beforeAll ( function ( ) {
57
- engine = new GridStackEngine ( 12 ) ;
58
+ engine = new GridStackEngine ( ) ;
58
59
} ) ;
59
60
it ( 'should prepare a node' , function ( ) {
60
- expect ( engine . prepareNode ( { } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
61
- expect ( engine . prepareNode ( { x : 10 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 10 , y : 0 , h : 1 } ) ) ;
62
- expect ( engine . prepareNode ( { x : - 10 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
63
- expect ( engine . prepareNode ( { y : 10 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 10 , h : 1 } ) ) ;
64
- expect ( engine . prepareNode ( { y : - 10 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
61
+ expect ( engine . prepareNode ( { } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
62
+ expect ( engine . prepareNode ( { x : 10 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 10 , y : 0 , h : 1 } ) ) ;
63
+ expect ( engine . prepareNode ( { x : - 10 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
64
+ expect ( engine . prepareNode ( { y : 10 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 10 , h : 1 } ) ) ;
65
+ expect ( engine . prepareNode ( { y : - 10 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
65
66
expect ( engine . prepareNode ( { w : 3 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , w : 3 , h : 1 } ) ) ;
66
67
expect ( engine . prepareNode ( { w : 100 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , w : 12 , h : 1 } ) ) ;
67
- expect ( engine . prepareNode ( { w : 0 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
68
- expect ( engine . prepareNode ( { w : - 190 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
69
- expect ( engine . prepareNode ( { h : 3 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 3 } ) ) ;
70
- expect ( engine . prepareNode ( { h : 0 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
71
- expect ( engine . prepareNode ( { h : - 10 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
68
+ expect ( engine . prepareNode ( { w : 0 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
69
+ expect ( engine . prepareNode ( { w : - 190 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
70
+ expect ( engine . prepareNode ( { h : 3 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 3 } ) ) ;
71
+ expect ( engine . prepareNode ( { h : 0 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
72
+ expect ( engine . prepareNode ( { h : - 10 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
72
73
expect ( engine . prepareNode ( { x : 4 , w : 10 } , false ) ) . toEqual ( jasmine . objectContaining ( { x : 2 , y : 0 , w : 10 , h : 1 } ) ) ;
73
74
expect ( engine . prepareNode ( { x : 4 , w : 10 } , true ) ) . toEqual ( jasmine . objectContaining ( { x : 4 , y : 0 , w : 8 , h : 1 } ) ) ;
74
75
} ) ;
@@ -123,7 +124,7 @@ describe('gridstack engine', function() {
123
124
describe ( 'test isAreaEmpty' , function ( ) {
124
125
125
126
beforeAll ( function ( ) {
126
- engine = new GridStackEngine ( 12 , null , true ) ;
127
+ engine = new GridStackEngine ( { float : true } ) ;
127
128
engine . nodes = [
128
129
engine . prepareNode ( { x : 3 , y : 2 , w : 3 , h : 2 } )
129
130
] ;
@@ -143,11 +144,11 @@ describe('gridstack engine', function() {
143
144
describe ( 'test cleanNodes/getDirtyNodes' , function ( ) {
144
145
145
146
beforeAll ( function ( ) {
146
- engine = new GridStackEngine ( 12 , null , true ) ;
147
+ engine = new GridStackEngine ( { float : true } ) ;
147
148
engine . nodes = [
148
- engine . prepareNode ( { x : 0 , y : 0 , idx : 1 , _dirty : true } ) ,
149
- engine . prepareNode ( { x : 3 , y : 2 , w : 3 , h : 2 , idx : 2 , _dirty : true } ) ,
150
- engine . prepareNode ( { x : 3 , y : 7 , w : 3 , h : 2 , idx : 3 } )
149
+ engine . prepareNode ( { x : 0 , y : 0 , id : 1 , _dirty : true } ) ,
150
+ engine . prepareNode ( { x : 3 , y : 2 , w : 3 , h : 2 , id : 2 , _dirty : true } ) ,
151
+ engine . prepareNode ( { x : 3 , y : 7 , w : 3 , h : 2 , id : 3 } )
151
152
] ;
152
153
} ) ;
153
154
@@ -158,8 +159,8 @@ describe('gridstack engine', function() {
158
159
it ( 'should return all dirty nodes' , function ( ) {
159
160
let nodes = engine . getDirtyNodes ( ) ;
160
161
expect ( nodes . length ) . toEqual ( 2 ) ;
161
- expect ( nodes [ 0 ] . idx ) . toEqual ( 1 ) ;
162
- expect ( nodes [ 1 ] . idx ) . toEqual ( 2 ) ;
162
+ expect ( nodes [ 0 ] . id ) . toEqual ( 1 ) ;
163
+ expect ( nodes [ 1 ] . id ) . toEqual ( 2 ) ;
163
164
} ) ;
164
165
165
166
it ( 'should\'n clean nodes if batchMode true' , function ( ) {
@@ -176,7 +177,7 @@ describe('gridstack engine', function() {
176
177
177
178
describe ( 'test batchUpdate/commit' , function ( ) {
178
179
beforeAll ( function ( ) {
179
- engine = new GridStackEngine ( 12 ) ;
180
+ engine = new GridStackEngine ( ) ;
180
181
} ) ;
181
182
182
183
it ( 'should work on not float grids' , function ( ) {
@@ -205,7 +206,7 @@ describe('gridstack engine', function() {
205
206
describe ( 'test batchUpdate/commit' , function ( ) {
206
207
207
208
beforeAll ( function ( ) {
208
- engine = new GridStackEngine ( 12 , null , true ) ;
209
+ engine = new GridStackEngine ( { float : true } ) ;
209
210
} ) ;
210
211
211
212
it ( 'should work on float grids' , function ( ) {
@@ -227,31 +228,31 @@ describe('gridstack engine', function() {
227
228
callback : function ( ) { }
228
229
} ;
229
230
spyOn ( spy , 'callback' ) ;
230
- engine = new GridStackEngine ( 12 , spy . callback , true ) ;
231
+ engine = new GridStackEngine ( { float : true , onChange : spy . callback } ) ;
231
232
engine . nodes = [
232
- engine . prepareNode ( { x : 0 , y : 0 , idx : 1 , _dirty : true } ) ,
233
- engine . prepareNode ( { x : 3 , y : 2 , w : 3 , h : 2 , idx : 2 , _dirty : true } ) ,
234
- engine . prepareNode ( { x : 3 , y : 7 , w : 3 , h : 2 , idx : 3 } )
233
+ engine . prepareNode ( { x : 0 , y : 0 , id : 1 , _dirty : true } ) ,
234
+ engine . prepareNode ( { x : 3 , y : 2 , w : 3 , h : 2 , id : 2 , _dirty : true } ) ,
235
+ engine . prepareNode ( { x : 3 , y : 7 , w : 3 , h : 2 , id : 3 } )
235
236
] ;
236
237
} ) ;
237
238
238
239
it ( 'should\'n be called if batchMode true' , function ( ) {
239
240
engine . batchMode = true ;
240
- engine . _notify ( ) ;
241
+ ( engine as any ) . _notify ( ) ;
241
242
expect ( spy . callback ) . not . toHaveBeenCalled ( ) ;
242
243
} ) ;
243
244
244
245
it ( 'should by called with dirty nodes' , function ( ) {
245
- engine . _notify ( ) ;
246
+ ( engine as any ) . _notify ( ) ;
246
247
expect ( spy . callback ) . toHaveBeenCalledWith ( [
247
248
engine . nodes [ 0 ] ,
248
249
engine . nodes [ 1 ]
249
250
] , true ) ;
250
251
} ) ;
251
252
252
253
it ( 'should by called with extra passed node to be removed' , function ( ) {
253
- let n1 = { idx : - 1 } ;
254
- engine . _notify ( n1 ) ;
254
+ let n1 = { id : - 1 } ;
255
+ ( engine as any ) . _notify ( n1 ) ;
255
256
expect ( spy . callback ) . toHaveBeenCalledWith ( [
256
257
n1 ,
257
258
engine . nodes [ 0 ] ,
@@ -260,8 +261,8 @@ describe('gridstack engine', function() {
260
261
} ) ;
261
262
262
263
it ( 'should by called with extra passed node to be removed and should maintain false parameter' , function ( ) {
263
- let n1 = { idx : - 1 } ;
264
- engine . _notify ( n1 , false ) ;
264
+ let n1 = { id : - 1 } ;
265
+ ( engine as any ) . _notify ( n1 , false ) ;
265
266
expect ( spy . callback ) . toHaveBeenCalledWith ( [
266
267
n1 ,
267
268
engine . nodes [ 0 ] ,
@@ -273,62 +274,62 @@ describe('gridstack engine', function() {
273
274
describe ( 'test _packNodes' , function ( ) {
274
275
describe ( 'using not float mode' , function ( ) {
275
276
beforeEach ( function ( ) {
276
- engine = new GridStackEngine ( 12 , null , false ) ;
277
+ engine = new GridStackEngine ( { float : false } ) ;
277
278
} ) ;
278
279
279
280
it ( 'shouldn\'t pack one node with y coord eq 0' , function ( ) {
280
281
engine . nodes = [
281
- { x : 0 , y : 0 , w :1 , h :1 , _id : 1 } ,
282
+ { x : 0 , y : 0 , w :1 , h :1 , id : 1 } ,
282
283
] ;
283
- engine . _packNodes ( ) ;
284
- expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
284
+ ( engine as any ) . _packNodes ( ) ;
285
+ expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , h : 1 } ) ) ;
285
286
expect ( findNode ( engine , 1 ) . _dirty ) . toBeFalsy ( ) ;
286
287
} ) ;
287
288
288
289
it ( 'should pack one node correctly' , function ( ) {
289
290
engine . nodes = [
290
- { x : 0 , y : 1 , w :1 , h :1 , _id : 1 } ,
291
+ { x : 0 , y : 1 , w :1 , h :1 , id : 1 } ,
291
292
] ;
292
- engine . _packNodes ( ) ;
293
- expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , _dirty : true } ) ) ;
293
+ ( engine as any ) . _packNodes ( ) ;
294
+ expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , _dirty : true } ) ) ;
294
295
} ) ;
295
296
296
297
it ( 'should pack nodes correctly' , function ( ) {
297
298
engine . nodes = [
298
- { x : 0 , y : 1 , w :1 , h :1 , _id : 1 } ,
299
- { x : 0 , y : 5 , w :1 , h :1 , _id : 2 } ,
299
+ { x : 0 , y : 1 , w :1 , h :1 , id : 1 } ,
300
+ { x : 0 , y : 5 , w :1 , h :1 , id : 2 } ,
300
301
] ;
301
- engine . _packNodes ( ) ;
302
- expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , _dirty : true } ) ) ;
303
- expect ( findNode ( engine , 2 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , _dirty : true } ) ) ;
302
+ ( engine as any ) . _packNodes ( ) ;
303
+ expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , _dirty : true } ) ) ;
304
+ expect ( findNode ( engine , 2 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , _dirty : true } ) ) ;
304
305
} ) ;
305
306
306
307
it ( 'should pack nodes correctly' , function ( ) {
307
308
engine . nodes = [
308
- { x : 0 , y : 5 , w :1 , h :1 , _id : 1 } ,
309
- { x : 0 , y : 1 , w :1 , h :1 , _id : 2 } ,
309
+ { x : 0 , y : 5 , w :1 , h :1 , id : 1 } ,
310
+ { x : 0 , y : 1 , w :1 , h :1 , id : 2 } ,
310
311
] ;
311
- engine . _packNodes ( ) ;
312
- expect ( findNode ( engine , 2 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , _dirty : true } ) ) ;
313
- expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , _dirty : true } ) ) ;
312
+ ( engine as any ) . _packNodes ( ) ;
313
+ expect ( findNode ( engine , 2 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , _dirty : true } ) ) ;
314
+ expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , _dirty : true } ) ) ;
314
315
} ) ;
315
316
316
317
it ( 'should respect locked nodes' , function ( ) {
317
318
engine . nodes = [
318
- { x : 0 , y : 1 , w :1 , h :1 , _id : 1 , locked : true } ,
319
- { x : 0 , y : 5 , w :1 , h :1 , _id : 2 } ,
319
+ { x : 0 , y : 1 , w :1 , h :1 , id : 1 , locked : true } ,
320
+ { x : 0 , y : 5 , w :1 , h :1 , id : 2 } ,
320
321
] ;
321
- engine . _packNodes ( ) ;
322
- expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , h : 1 } ) ) ;
322
+ ( engine as any ) . _packNodes ( ) ;
323
+ expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , h : 1 } ) ) ;
323
324
expect ( findNode ( engine , 1 ) . _dirty ) . toBeFalsy ( ) ;
324
- expect ( findNode ( engine , 2 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 2 , _dirty : true } ) ) ;
325
+ expect ( findNode ( engine , 2 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 2 , _dirty : true } ) ) ;
325
326
} ) ;
326
327
} ) ;
327
328
} ) ;
328
329
329
330
describe ( 'test isNodeChangedPosition' , function ( ) {
330
331
beforeAll ( function ( ) {
331
- engine = new GridStackEngine ( 12 ) ;
332
+ engine = new GridStackEngine ( ) ;
332
333
} ) ;
333
334
it ( 'should return true for changed x' , function ( ) {
334
335
let widget = { x : 1 , y : 2 , w : 3 , h : 4 } ;
@@ -354,19 +355,19 @@ describe('gridstack engine', function() {
354
355
355
356
describe ( 'test locked widget' , function ( ) {
356
357
beforeAll ( function ( ) {
357
- engine = new GridStackEngine ( 12 ) ;
358
+ engine = new GridStackEngine ( ) ;
358
359
} ) ;
359
360
it ( 'should add widgets around locked one' , function ( ) {
360
- let nodes = [
361
- { x : 0 , y : 1 , w : 12 , h : 1 , locked : 'yes' , noMove : true , noResize : true , _id : 1 } ,
362
- { x : 1 , y : 0 , w : 2 , h : 3 , _id : 2 }
361
+ let nodes : GridStackNode [ ] = [
362
+ { x : 0 , y : 1 , w : 12 , h : 1 , locked : true , noMove : true , noResize : true , id : 1 } ,
363
+ { x : 1 , y : 0 , w : 2 , h : 3 , id : 2 }
363
364
] ;
364
365
// add locked item
365
366
engine . addNode ( nodes [ 0 ] )
366
- expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , w : 12 , h : 1 , locked : 'yes' } ) ) ;
367
+ expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , w : 12 , h : 1 , locked : true } ) ) ;
367
368
engine . addNode ( nodes [ 1 ] )
368
369
// add item that moves past locked one
369
- expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , w : 12 , h : 1 , locked : 'yes' } ) ) ;
370
+ expect ( findNode ( engine , 1 ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , w : 12 , h : 1 , locked : true } ) ) ;
370
371
expect ( findNode ( engine , 2 ) ) . toEqual ( jasmine . objectContaining ( { x : 1 , y : 2 } ) ) ;
371
372
// prevents moving locked item
372
373
let node1 = findNode ( engine , 1 ) ;
@@ -382,7 +383,7 @@ describe('gridstack engine', function() {
382
383
383
384
describe ( 'test compact' , function ( ) {
384
385
beforeAll ( function ( ) {
385
- engine = new GridStackEngine ( 12 ) ;
386
+ engine = new GridStackEngine ( ) ;
386
387
} ) ;
387
388
it ( 'do nothing' , function ( ) {
388
389
engine . compact ( ) ;
0 commit comments