@@ -633,15 +633,34 @@ module Alchemy
633633 end
634634 end
635635
636- describe "#parent_element_ids " do
636+ describe "#folded_parent_element_ids " do
637637 let ( :page ) { create ( :alchemy_page ) }
638638
639- let! ( :element1 ) { create ( :alchemy_element , page_version : page . draft_version , name : "slider" , autogenerate_nested_elements : false ) }
640- let! ( :element2 ) { create ( :alchemy_element , page_version : page . draft_version , name : "slide" , parent_element : element1 ) }
639+ let! ( :element1 ) { create ( :alchemy_element , page_version : page . draft_version , name : "slider" , folded : true , autogenerate_nested_elements : false ) }
640+ let! ( :element2 ) { create ( :alchemy_element , page_version : page . draft_version , name : "slide" , folded : true , parent_element : element1 ) }
641641 let! ( :element3 ) { create ( :alchemy_element , page_version : page . draft_version , name : "slide" , parent_element : element2 ) }
642642
643- it "returns parent element ids" do
644- expect ( element3 . parent_element_ids ) . to eq ( [ element2 . id , element1 . id ] )
643+ it "returns folded parent element ids from immediate parent to root" do
644+ expect ( element3 . folded_parent_element_ids ) . to eq ( [ element2 . id , element1 . id ] )
645+ end
646+
647+ it "returns empty array for root element" do
648+ expect ( element1 . folded_parent_element_ids ) . to eq ( [ ] )
649+ end
650+
651+ it "returns single parent for first-level nested element" do
652+ expect ( element2 . folded_parent_element_ids ) . to eq ( [ element1 . id ] )
653+ end
654+
655+ it "skips already expanded parents" do
656+ element2 . update_columns ( folded : false )
657+ expect ( element3 . folded_parent_element_ids ) . to eq ( [ element1 . id ] )
658+ end
659+
660+ it "returns empty array when all parents are expanded" do
661+ element1 . update_columns ( folded : false )
662+ element2 . update_columns ( folded : false )
663+ expect ( element3 . folded_parent_element_ids ) . to eq ( [ ] )
645664 end
646665 end
647666
0 commit comments