From 807503233aa3d0a5698c1dea758d7437425e828f Mon Sep 17 00:00:00 2001 From: Rahat2134 Date: Wed, 16 Apr 2025 05:08:40 +0530 Subject: [PATCH 1/2] testing parent child folder --- .../document/document_message_handler.rs | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index 11b8ba85ba..8cd1a705fe 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -2707,3 +2707,49 @@ impl Iterator for ClickXRayIter<'_> { None } } + +#[cfg(test)] +mod document_message_handler_tests { + use super::*; + use crate::test_utils::test_prelude::*; + + #[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"); + } +} From 79a7a5a0a080c08cce4c72eb2c590355761950c5 Mon Sep 17 00:00:00 2001 From: Rahat2134 Date: Wed, 16 Apr 2025 13:55:25 +0530 Subject: [PATCH 2/2] changes --- .../document/document_message_handler.rs | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index 8cd1a705fe..fc49a0434a 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -2710,46 +2710,46 @@ impl Iterator for ClickXRayIter<'_> { #[cfg(test)] mod document_message_handler_tests { - use super::*; - use crate::test_utils::test_prelude::*; + use super::*; + use crate::test_utils::test_prelude::*; - #[tokio::test] - async fn test_moving_folder_with_children() { - let mut editor = EditorTestUtils::create(); - editor.new_document().await; + #[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; + // 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(); + 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(); + 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; + // 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"); + // 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; + // 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 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"); + // 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"); - } + let rect_grandparent = rect_parent.parent(document.metadata()).unwrap(); + assert_eq!(rect_grandparent, folder2, "Rectangle's grandparent should be folder2"); + } }