@@ -931,6 +931,32 @@ def test_initial_form_state
931931 assert_equal "{\" path\" :[\" src\" ,\" button.rb\" ],\" nodeId\" :\" src-button-rb\" ,\" value\" :\" 1\" }" , response . dig ( "form_params" , "folder_structure" , 0 )
932932 end
933933
934+ def test_form_state_updates_when_checked_nodes_are_inserted
935+ visit_preview ( :form_input , expanded : true , route_format : :json )
936+
937+ evaluate_multiline_script ( <<~JS )
938+ const tree = document.querySelector("tree-view")
939+ const checkedNode = tree.querySelector("[role=treeitem][aria-checked=true]")
940+ const clone = checkedNode.closest("li").cloneNode(true)
941+ const clonedTreeItem = clone.querySelector("[role=treeitem]")
942+
943+ clonedTreeItem.removeAttribute("id")
944+ clonedTreeItem.removeAttribute("data-node-id")
945+ clonedTreeItem.removeAttribute("data-value")
946+ clonedTreeItem.setAttribute("data-path", JSON.stringify(["async.rb"]))
947+
948+ tree.querySelector(":scope > ul").append(clone)
949+ JS
950+
951+ assert_selector ( "[data-target='tree-view.formInputContainer'] input" , count : 2 , visible : :all )
952+
953+ find ( "button[type=submit]" ) . click
954+
955+ response = JSON . parse ( find ( "pre" ) . text )
956+
957+ assert_includes response . dig ( "form_params" , "folder_structure" ) , "{\" path\" :[\" async.rb\" ]}"
958+ end
959+
934960 def test_form_submission_with_single_select_variant
935961 visit_preview ( :form_input , expanded : true , select_variant : :single , route_format : :json )
936962
0 commit comments