Skip to content

Commit 37f45d9

Browse files
committed
Test mouseStart
1 parent 27b28aa commit 37f45d9

File tree

1 file changed

+107
-5
lines changed

1 file changed

+107
-5
lines changed

src/test/dragAndDropHandler/index.test.ts

Lines changed: 107 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,29 @@ const createDragAndDropHandler = ({
1717
onIsMoveHandle,
1818
tree,
1919
}: CreateDragAndDropHandlerParams) => {
20-
const getNodeElementForNode = jest.fn();
2120
const getScrollLeft = jest.fn();
2221
const openNode = jest.fn();
2322
const refreshElements = jest.fn();
2423
const triggerEvent = jest.fn();
2524

2625
const elementForTree = generateHtmlElementsForTree(tree);
2726

27+
const getNodeElementForNode = jest.fn(
28+
(node: Node) =>
29+
new NodeElement({
30+
getScrollLeft,
31+
node,
32+
treeElement: elementForTree,
33+
}),
34+
);
35+
2836
const getNodeElement = jest.fn((element: HTMLElement) => {
2937
let resultNode: Node | null = null;
3038

3139
tree.iterate((node) => {
3240
if (
3341
node.element === element ||
34-
node.element == element.parentElement
42+
node.element === element.parentElement
3543
) {
3644
resultNode = node;
3745
return false;
@@ -52,13 +60,11 @@ const createDragAndDropHandler = ({
5260
}
5361
});
5462

55-
const getTreeImplementation = getTree ?? jest.fn(() => tree);
56-
5763
return new DragAndDropHandler({
5864
getNodeElement,
5965
getNodeElementForNode,
6066
getScrollLeft,
61-
getTree: getTreeImplementation,
67+
getTree: getTree ?? jest.fn(() => tree),
6268
onIsMoveHandle,
6369
openFolderDelay: false,
6470
openNode,
@@ -214,6 +220,102 @@ describe(".mouseCapture", () => {
214220
});
215221
});
216222

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+
217319
describe(".refresh", () => {
218320
it("generates hit areas", () => {
219321
const tree = new Node(null, true);

0 commit comments

Comments
 (0)