Skip to content

Commit 0877c75

Browse files
authored
Add layer tree tests for folder movement checking into child (#2580)
* testing parent child folder * changes
1 parent adfcff7 commit 0877c75

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

editor/src/messages/portfolio/document/document_message_handler.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2859,4 +2859,43 @@ mod document_message_handler_tests {
28592859
editor.handle_message(DocumentMessage::CreateEmptyFolder).await;
28602860
assert!(true, "Application didn't crash after folder move operation");
28612861
}
2862+
#[tokio::test]
2863+
async fn test_moving_folder_with_children() {
2864+
let mut editor = EditorTestUtils::create();
2865+
editor.new_document().await;
2866+
2867+
// Creating two folders at root level
2868+
editor.handle_message(DocumentMessage::CreateEmptyFolder).await;
2869+
editor.handle_message(DocumentMessage::CreateEmptyFolder).await;
2870+
2871+
let folder1 = editor.active_document().metadata().all_layers().next().unwrap();
2872+
let folder2 = editor.active_document().metadata().all_layers().nth(1).unwrap();
2873+
2874+
editor.drag_tool(ToolType::Rectangle, 0., 0., 100., 100., ModifierKeys::empty()).await;
2875+
let rect_layer = editor.active_document().metadata().all_layers().next().unwrap();
2876+
2877+
// First move rectangle into folder1
2878+
editor.handle_message(NodeGraphMessage::SelectedNodesSet { nodes: vec![rect_layer.to_node()] }).await;
2879+
editor.handle_message(DocumentMessage::MoveSelectedLayersTo { parent: folder1, insert_index: 0 }).await;
2880+
2881+
// Verifying rectagle is now in folder1
2882+
let rect_parent = rect_layer.parent(editor.active_document().metadata()).unwrap();
2883+
assert_eq!(rect_parent, folder1, "Rectangle should be inside folder1");
2884+
2885+
// Moving folder1 into folder2
2886+
editor.handle_message(NodeGraphMessage::SelectedNodesSet { nodes: vec![folder1.to_node()] }).await;
2887+
editor.handle_message(DocumentMessage::MoveSelectedLayersTo { parent: folder2, insert_index: 0 }).await;
2888+
2889+
// Verifing hirarchy: folder2 > folder1 > rectangle
2890+
let document = editor.active_document();
2891+
let folder1_parent = folder1.parent(document.metadata()).unwrap();
2892+
assert_eq!(folder1_parent, folder2, "Folder1 should be inside folder2");
2893+
2894+
// Verifing rectangle moved with its parent
2895+
let rect_parent = rect_layer.parent(document.metadata()).unwrap();
2896+
assert_eq!(rect_parent, folder1, "Rectangle should still be inside folder1");
2897+
2898+
let rect_grandparent = rect_parent.parent(document.metadata()).unwrap();
2899+
assert_eq!(rect_grandparent, folder2, "Rectangle's grandparent should be folder2");
2900+
}
28622901
}

0 commit comments

Comments
 (0)