@@ -17,21 +17,29 @@ const createDragAndDropHandler = ({
17
17
onIsMoveHandle,
18
18
tree,
19
19
} : CreateDragAndDropHandlerParams ) => {
20
- const getNodeElementForNode = jest . fn ( ) ;
21
20
const getScrollLeft = jest . fn ( ) ;
22
21
const openNode = jest . fn ( ) ;
23
22
const refreshElements = jest . fn ( ) ;
24
23
const triggerEvent = jest . fn ( ) ;
25
24
26
25
const elementForTree = generateHtmlElementsForTree ( tree ) ;
27
26
27
+ const getNodeElementForNode = jest . fn (
28
+ ( node : Node ) =>
29
+ new NodeElement ( {
30
+ getScrollLeft,
31
+ node,
32
+ treeElement : elementForTree ,
33
+ } ) ,
34
+ ) ;
35
+
28
36
const getNodeElement = jest . fn ( ( element : HTMLElement ) => {
29
37
let resultNode : Node | null = null ;
30
38
31
39
tree . iterate ( ( node ) => {
32
40
if (
33
41
node . element === element ||
34
- node . element == element . parentElement
42
+ node . element === element . parentElement
35
43
) {
36
44
resultNode = node ;
37
45
return false ;
@@ -52,13 +60,11 @@ const createDragAndDropHandler = ({
52
60
}
53
61
} ) ;
54
62
55
- const getTreeImplementation = getTree ?? jest . fn ( ( ) => tree ) ;
56
-
57
63
return new DragAndDropHandler ( {
58
64
getNodeElement,
59
65
getNodeElementForNode,
60
66
getScrollLeft,
61
- getTree : getTreeImplementation ,
67
+ getTree : getTree ?? jest . fn ( ( ) => tree ) ,
62
68
onIsMoveHandle,
63
69
openFolderDelay : false ,
64
70
openNode,
@@ -214,6 +220,102 @@ describe(".mouseCapture", () => {
214
220
} ) ;
215
221
} ) ;
216
222
223
+ describe ( ".mouseStart" , ( ) => {
224
+ it ( "sets dragging to true and returns true" , ( ) => {
225
+ const tree = new Node ( null , true ) ;
226
+ const node1 = new Node ( { name : "node1" } ) ;
227
+ tree . addChild ( node1 ) ;
228
+ const node2 = new Node ( { name : "node2" } ) ;
229
+ tree . addChild ( node2 ) ;
230
+
231
+ const dragAndDropHandler = createDragAndDropHandler ( { tree } ) ;
232
+
233
+ // Set current item
234
+ const positionInfo = {
235
+ originalEvent : new Event ( "click" ) ,
236
+ pageX : 10 ,
237
+ pageY : 10 ,
238
+ target : node1 . element as HTMLElement ,
239
+ } ;
240
+
241
+ dragAndDropHandler . mouseCapture ( positionInfo ) ;
242
+ expect ( dragAndDropHandler . currentItem ?. node ) . toBe ( node1 ) ;
243
+ expect ( dragAndDropHandler . isDragging ) . toBeFalse ( ) ;
244
+
245
+ // mouseStart
246
+ expect ( dragAndDropHandler . mouseStart ( positionInfo ) ) . toBeTrue ( ) ;
247
+ expect ( dragAndDropHandler . isDragging ) . toBeTrue ( ) ;
248
+ } ) ;
249
+
250
+ it ( "adds the jqtree-moving css class" , ( ) => {
251
+ const tree = new Node ( null , true ) ;
252
+ const node1 = new Node ( { name : "node1" } ) ;
253
+ tree . addChild ( node1 ) ;
254
+ const node2 = new Node ( { name : "node2" } ) ;
255
+ tree . addChild ( node2 ) ;
256
+
257
+ const dragAndDropHandler = createDragAndDropHandler ( { tree } ) ;
258
+ // Set current item
259
+ const positionInfo = {
260
+ originalEvent : new Event ( "click" ) ,
261
+ pageX : 10 ,
262
+ pageY : 10 ,
263
+ target : node1 . element as HTMLElement ,
264
+ } ;
265
+
266
+ dragAndDropHandler . mouseCapture ( positionInfo ) ;
267
+
268
+ // mouseStart
269
+ dragAndDropHandler . mouseStart ( positionInfo ) ;
270
+
271
+ expect ( node1 . element ?. classList ) . toContain ( "jqtree-moving" ) ;
272
+ } ) ;
273
+
274
+ it ( "creates a drag element" , ( ) => {
275
+ const tree = new Node ( null , true ) ;
276
+ const node1 = new Node ( { name : "node1" } ) ;
277
+ tree . addChild ( node1 ) ;
278
+ const node2 = new Node ( { name : "node2" } ) ;
279
+ tree . addChild ( node2 ) ;
280
+
281
+ const dragAndDropHandler = createDragAndDropHandler ( { tree } ) ;
282
+ // Set current item
283
+ const positionInfo = {
284
+ originalEvent : new Event ( "click" ) ,
285
+ pageX : 10 ,
286
+ pageY : 10 ,
287
+ target : node1 . element as HTMLElement ,
288
+ } ;
289
+
290
+ dragAndDropHandler . mouseCapture ( positionInfo ) ;
291
+
292
+ // mouseStart
293
+ dragAndDropHandler . mouseStart ( positionInfo ) ;
294
+
295
+ expect ( document . querySelector ( ".jqtree-dragging" ) ) . toBeInTheDocument ( ) ;
296
+ } ) ;
297
+
298
+ it ( "sets dragging to false and returns false when there is no current item" , ( ) => {
299
+ const tree = new Node ( null , true ) ;
300
+ const node1 = new Node ( { name : "node1" } ) ;
301
+ tree . addChild ( node1 ) ;
302
+ const node2 = new Node ( { name : "node2" } ) ;
303
+ tree . addChild ( node2 ) ;
304
+
305
+ const dragAndDropHandler = createDragAndDropHandler ( { tree } ) ;
306
+
307
+ const positionInfo = {
308
+ originalEvent : new Event ( "click" ) ,
309
+ pageX : 10 ,
310
+ pageY : 10 ,
311
+ target : node1 . element as HTMLElement ,
312
+ } ;
313
+
314
+ expect ( dragAndDropHandler . mouseStart ( positionInfo ) ) . toBeFalse ( ) ;
315
+ expect ( dragAndDropHandler . isDragging ) . toBeFalse ( ) ;
316
+ } ) ;
317
+ } ) ;
318
+
217
319
describe ( ".refresh" , ( ) => {
218
320
it ( "generates hit areas" , ( ) => {
219
321
const tree = new Node ( null , true ) ;
0 commit comments