Add layer tree tests for folder movement checking into child (#2580)

* testing parent child folder

* changes
This commit is contained in:
Rahat 2025-04-19 03:11:48 +05:30 committed by GitHub
parent adfcff7599
commit 0877c75959
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2859,4 +2859,43 @@ mod document_message_handler_tests {
editor.handle_message(DocumentMessage::CreateEmptyFolder).await;
assert!(true, "Application didn't crash after folder move operation");
}
#[tokio::test]
async fn test_moving_folder_with_children() {
let mut editor = EditorTestUtils::create();
editor.new_document().await;
// Creating two folders at root level
editor.handle_message(DocumentMessage::CreateEmptyFolder).await;
editor.handle_message(DocumentMessage::CreateEmptyFolder).await;
let folder1 = editor.active_document().metadata().all_layers().next().unwrap();
let folder2 = editor.active_document().metadata().all_layers().nth(1).unwrap();
editor.drag_tool(ToolType::Rectangle, 0., 0., 100., 100., ModifierKeys::empty()).await;
let rect_layer = editor.active_document().metadata().all_layers().next().unwrap();
// First move rectangle into folder1
editor.handle_message(NodeGraphMessage::SelectedNodesSet { nodes: vec![rect_layer.to_node()] }).await;
editor.handle_message(DocumentMessage::MoveSelectedLayersTo { parent: folder1, insert_index: 0 }).await;
// Verifying rectagle is now in folder1
let rect_parent = rect_layer.parent(editor.active_document().metadata()).unwrap();
assert_eq!(rect_parent, folder1, "Rectangle should be inside folder1");
// Moving folder1 into folder2
editor.handle_message(NodeGraphMessage::SelectedNodesSet { nodes: vec![folder1.to_node()] }).await;
editor.handle_message(DocumentMessage::MoveSelectedLayersTo { parent: folder2, insert_index: 0 }).await;
// Verifing hirarchy: folder2 > folder1 > rectangle
let document = editor.active_document();
let folder1_parent = folder1.parent(document.metadata()).unwrap();
assert_eq!(folder1_parent, folder2, "Folder1 should be inside folder2");
// Verifing rectangle moved with its parent
let rect_parent = rect_layer.parent(document.metadata()).unwrap();
assert_eq!(rect_parent, folder1, "Rectangle should still be inside folder1");
let rect_grandparent = rect_parent.parent(document.metadata()).unwrap();
assert_eq!(rect_grandparent, folder2, "Rectangle's grandparent should be folder2");
}
}