Skip to content

Commit 0468a7a

Browse files
leonardomendixgjulivan
authored andcommitted
test: fix loading state unit test
1 parent 8de0b25 commit 0468a7a

2 files changed

Lines changed: 33 additions & 15 deletions

File tree

packages/pluggableWidgets/tree-node-web/src/components/v2/TreeNode.tsx

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import classNames from "classnames";
22
import { ValueStatus } from "mendix";
3-
import { ReactElement, useCallback, useMemo, useState, KeyboardEvent } from "react";
3+
import { ReactElement, useCallback, useMemo, useState, KeyboardEvent, Fragment } from "react";
44
import "./ui/TreeNodeV2.scss";
55
import { renderTreeNodeHeaderIcon, TreeNodeHeaderIcon } from "../common/HeaderIcon";
66
import { TreeNodeState } from "../common/TreeNodeState";
@@ -66,16 +66,20 @@ function renderRecursiveNode(
6666
>
6767
<div>{children?.get(node.item)}</div>
6868
<ul role="group">
69-
{node.children.map(child =>
70-
renderRecursiveNode(
71-
child,
72-
renderHeaderIcon,
73-
iconPlacement,
74-
openNodeOn,
75-
onNodeClick,
76-
children
77-
)
78-
)}
69+
{node.children.map(child => {
70+
return (
71+
<Fragment key={child.id}>
72+
{renderRecursiveNode(
73+
child,
74+
renderHeaderIcon,
75+
iconPlacement,
76+
openNodeOn,
77+
onNodeClick,
78+
children
79+
)}
80+
</Fragment>
81+
);
82+
})}
7983
</ul>
8084
</div>
8185
) : null}

packages/pluggableWidgets/tree-node-web/src/components/v2/hooks/__tests__/useIncrementalTreeData.spec.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,31 @@ describe("useIncrementalTreeData", () => {
7272
expect(result.current[0].children[0].id).toBe("child");
7373
});
7474

75-
it("assigns COLLAPSED_WITH_JS when startExpanded is false", () => {
75+
it("assigns LOADING on first render, then COLLAPSED_WITH_JS when startExpanded is false", () => {
7676
const items = [makeItem("a")];
7777
const config = makeConfig({ startExpanded: false });
78-
const { result } = renderHook(() => useIncrementalTreeData(items, config));
78+
const { result, rerender } = renderHook(
79+
({ items, config }: { items: ObjectItem[]; config: TreeConfigRef }) =>
80+
useIncrementalTreeData(items, config),
81+
{ initialProps: { items, config } }
82+
);
83+
expect(result.current[0].treeNodeState).toBe(TreeNodeState.LOADING);
84+
// Simulate Mendix re-providing items (new array reference)
85+
rerender({ items: [...items], config });
7986
expect(result.current[0].treeNodeState).toBe(TreeNodeState.COLLAPSED_WITH_JS);
8087
});
8188

82-
it("assigns EXPANDED when startExpanded is true", () => {
89+
it("assigns LOADING on first render, then EXPANDED when startExpanded is true", () => {
8390
const items = [makeItem("a")];
8491
const config = makeConfig({ startExpanded: true });
85-
const { result } = renderHook(() => useIncrementalTreeData(items, config));
92+
const { result, rerender } = renderHook(
93+
({ items, config }: { items: ObjectItem[]; config: TreeConfigRef }) =>
94+
useIncrementalTreeData(items, config),
95+
{ initialProps: { items, config } }
96+
);
97+
expect(result.current[0].treeNodeState).toBe(TreeNodeState.LOADING);
98+
// Simulate Mendix re-providing items (new array reference)
99+
rerender({ items: [...items], config });
86100
expect(result.current[0].treeNodeState).toBe(TreeNodeState.EXPANDED);
87101
});
88102
});

0 commit comments

Comments
 (0)