@@ -2813,7 +2813,6 @@ mod document_message_handler_tests {
2813
2813
parent. children ( document. metadata ( ) ) . position ( |child| child == layer)
2814
2814
}
2815
2815
2816
- let layer_bottom = get_layer_by_bounds ( & mut editor, 0.0 , 0.0 ) . await . unwrap ( ) ;
2817
2816
let layer_middle = get_layer_by_bounds ( & mut editor, 50.0 , 50.0 ) . await . unwrap ( ) ;
2818
2817
let layer_top = get_layer_by_bounds ( & mut editor, 100.0 , 100.0 ) . await . unwrap ( ) ;
2819
2818
@@ -2832,4 +2831,32 @@ mod document_message_handler_tests {
2832
2831
let new_index_middle = get_layer_index ( & mut editor, layer_middle) . await . unwrap ( ) ;
2833
2832
assert ! ( new_index_middle < initial_index_middle, "Middle layer should have moved up" ) ;
2834
2833
}
2834
+ #[ tokio:: test]
2835
+ async fn test_move_folder_into_itself_doesnt_crash ( ) {
2836
+ let mut editor = EditorTestUtils :: create ( ) ;
2837
+ editor. new_document ( ) . await ;
2838
+
2839
+ // Creating a parent folder
2840
+ editor. handle_message ( DocumentMessage :: CreateEmptyFolder ) . await ;
2841
+ let parent_folder = editor. active_document ( ) . metadata ( ) . all_layers ( ) . next ( ) . unwrap ( ) ;
2842
+
2843
+ // Creating a child folder inside the parent folder
2844
+ editor. handle_message ( NodeGraphMessage :: SelectedNodesSet { nodes : vec ! [ parent_folder. to_node( ) ] } ) . await ;
2845
+ editor. handle_message ( DocumentMessage :: CreateEmptyFolder ) . await ;
2846
+ let child_folder = editor. active_document ( ) . metadata ( ) . all_layers ( ) . next ( ) . unwrap ( ) ;
2847
+
2848
+ // Attempt to move parent folder into child folder
2849
+ editor. handle_message ( NodeGraphMessage :: SelectedNodesSet { nodes : vec ! [ parent_folder. to_node( ) ] } ) . await ;
2850
+ editor
2851
+ . handle_message ( DocumentMessage :: MoveSelectedLayersTo {
2852
+ parent : child_folder,
2853
+ insert_index : 0 ,
2854
+ } )
2855
+ . await ;
2856
+
2857
+ // The operation completed without crashing
2858
+ // Verifying application still functions by performing another operation
2859
+ editor. handle_message ( DocumentMessage :: CreateEmptyFolder ) . await ;
2860
+ assert ! ( true , "Application didn't crash after folder move operation" ) ;
2861
+ }
2835
2862
}
0 commit comments