require "test_helper" class DS::DisclosureTest < ViewComponent::TestCase test "bare variant yields panel content without mt-2 wrapper" do render_inline(DS::Disclosure.new(variant: :bare, summary_class: "cursor-pointer")) do |disclosure| disclosure.with_summary_content { "Toggle" } "Panel" end assert page.has_css?("details.group") assert page.has_text?("Panel") assert_no_match(/
/, rendered_content) end test "body wrapper defaults to an mt-2 margin" do render_inline(DS::Disclosure.new(title: "More", open: true)) { "body text" } assert_selector "details > div.mt-2", text: "body text" end test "body_class: nil drops the body margin wrapper" do render_inline(DS::Disclosure.new(title: "More", open: true, body_class: nil)) { "body text" } assert_no_selector "details > div.mt-2" assert_selector "details > div", text: "body text" end test "forwards data attributes and a summary_class override" do render_inline(DS::Disclosure.new( summary_class: "custom-summary", data: { controller: "color-icon-picker", action: "mousedown->color-icon-picker#handleOutsideClick" } )) do |disclosure| disclosure.with_summary_content { "trigger" } end assert_selector "details[data-controller='color-icon-picker']" assert_selector "summary.custom-summary", text: "trigger" end end