minor updates

This commit is contained in:
2026-02-20 22:06:23 +01:00
parent 40a90c7ff5
commit c49f28da26
3 changed files with 22 additions and 17 deletions

View File

@@ -320,7 +320,7 @@ class DataGridsManager(SingleInstance, DatagridMetadataProvider):
def _mk_tree(self): def _mk_tree(self):
tree = TreeView(self, _id="-treeview") tree = TreeView(self, _id="-treeview")
for element in self._state.elements: for element in self._state.elements:
parent_id = tree.ensure_path(element.namespace) parent_id = tree.ensure_path(element.namespace, node_type="folder")
tree.add_node(TreeNode(id=element.document_id, tree.add_node(TreeNode(id=element.document_id,
label=element.name, label=element.name,
type=element.type, type=element.type,

View File

@@ -341,10 +341,11 @@ class TreeView(MultipleInstance):
return self return self
def _start_rename(self, node_id: str): def _start_rename(self, node_id: str):
"""Start renaming a node (sets editing state).""" """Start renaming a node (sets editing state and selection)."""
if node_id not in self._state.items: if node_id not in self._state.items:
raise ValueError(f"Node {node_id} does not exist") raise ValueError(f"Node {node_id} does not exist")
self._state.selected = node_id
self._state.editing = node_id self._state.editing = node_id
return self return self

View File

@@ -570,8 +570,8 @@ class TestTreeviewBehaviour:
assert first_id == second_id assert first_id == second_id
assert tree_view._state.items[first_id].label == "folder2" assert tree_view._state.items[first_id].label == "folder2"
def test_i_can_add_the_same_node_id_twice(self, root_instance): def test_adding_node_with_duplicate_id_replaces_existing(self, root_instance):
"""Test that adding a node with the same ID as an existing node raises ValueError.""" """Test that adding a node with duplicate ID replaces the existing node."""
tree_view = TreeView(root_instance) tree_view = TreeView(root_instance)
node1 = TreeNode(label="Node", type="folder", id="existing_id") node1 = TreeNode(label="Node", type="folder", id="existing_id")
@@ -580,43 +580,47 @@ class TestTreeviewBehaviour:
node2 = TreeNode(label="Other Node", type="folder", id="existing_id") node2 = TreeNode(label="Other Node", type="folder", id="existing_id")
tree_view.add_node(node2) tree_view.add_node(node2)
assert len(tree_view._state.items) == 1, "Node should not have been added to items" # Only one node should exist
assert tree_view._state.items[node1.id] == node2, "Node should not have been replaced" assert len(tree_view._state.items) == 1, "Should have only one node with this ID"
# The second node should have replaced the first
assert tree_view._state.items["existing_id"] == node2, "Second node should replace the first"
assert tree_view._state.items["existing_id"].label == "Other Node", "Replacement node should have new label"
def test_selecting_node_cancels_edit_mode(self, root_instance): def test_selecting_node_cancels_edit_mode(self, root_instance):
"""Test that selecting a node cancels any active edit mode.""" """Test that selecting a node cancels any active edit mode."""
tree_view = TreeView(root_instance) tree_view = TreeView(root_instance)
node1 = TreeNode(label="Node 1", type="folder") node1 = TreeNode(label="Node 1", type="folder")
node2 = TreeNode(label="Node 2", type="folder") node2 = TreeNode(label="Node 2", type="folder")
tree_view.add_node(node1) tree_view.add_node(node1)
tree_view.add_node(node2) tree_view.add_node(node2)
# Start editing node1 # Start editing node1
tree_view._start_rename(node1.id) tree_view._start_rename(node1.id)
assert tree_view._state.editing == node1.id assert tree_view._state.editing == node1.id
# Select node2 # Select node2
tree_view._select_node(node2.id) tree_view._select_node(node2.id)
# Edit mode should be cancelled # Edit mode should be cancelled
assert tree_view._state.editing is None assert tree_view._state.editing is None
assert tree_view._state.selected == node2.id assert tree_view._state.selected == node2.id
def test_selecting_same_editing_node_cancels_edit_mode(self, root_instance): def test_selecting_same_editing_node_cancels_edit_mode(self, root_instance):
"""Test that selecting the same node being edited cancels edit mode.""" """Test that selecting the same node being edited cancels edit mode."""
tree_view = TreeView(root_instance) tree_view = TreeView(root_instance)
node = TreeNode(label="Node", type="folder") node = TreeNode(label="Node", type="folder")
tree_view.add_node(node) tree_view.add_node(node)
# Start editing the node # Start editing the node
tree_view._start_rename(node.id) tree_view._start_rename(node.id)
assert tree_view._state.editing == node.id assert tree_view._state.editing == node.id
# Select the same node # Select the same node
tree_view._select_node(node.id) tree_view._select_node(node.id)
# Edit mode should be cancelled # Edit mode should be cancelled
assert tree_view._state.editing is None assert tree_view._state.editing is None
assert tree_view._state.selected == node.id assert tree_view._state.selected == node.id