From 2e1b7495aa2413ac39f4ff02728b1b48937c20ec Mon Sep 17 00:00:00 2001 From: stephanie rousset Date: Tue, 24 Feb 2026 15:40:41 +0100 Subject: [PATCH 1/2] fix: update creat_proposal extends to integrate private body from awesome --- .../commands/decidim/proposals/create_proposal_extends.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/extends/commands/decidim/proposals/create_proposal_extends.rb b/lib/extends/commands/decidim/proposals/create_proposal_extends.rb index da64fa8437..6a5c505a7e 100644 --- a/lib/extends/commands/decidim/proposals/create_proposal_extends.rb +++ b/lib/extends/commands/decidim/proposals/create_proposal_extends.rb @@ -31,6 +31,10 @@ def create_proposal proposal.longitude = form.longitude if form.longitude.present? proposal.add_coauthor(@current_user, user_group:) proposal.save! + # from decidim_awesome + # Update the proposal with the private body, to + # avoid tracebility on private fields. + proposal.update_private_body!(form.private_body) if form.private_body.present? @attached_to = proposal proposal end From f28d2882e924ef285d376f72d7fb5d5911eba2bc Mon Sep 17 00:00:00 2001 From: stephanie rousset Date: Tue, 24 Feb 2026 15:41:13 +0100 Subject: [PATCH 2/2] test: update creat_proposal test with private body --- .../decidim/proposals/create_proposal_spec.rb | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/spec/commands/decidim/proposals/create_proposal_spec.rb b/spec/commands/decidim/proposals/create_proposal_spec.rb index 3b2cbc5e01..0321655635 100644 --- a/spec/commands/decidim/proposals/create_proposal_spec.rb +++ b/spec/commands/decidim/proposals/create_proposal_spec.rb @@ -157,6 +157,46 @@ module Proposals end end + context "with a private body" do + let(:form_params) do + { + title: "A reasonable proposal title", + body: "A reasonable proposal body", + user_group_id: user_group.try(:id), + private_body: "A valid private proposal body" + } + end + let(:proposal) { Decidim::Proposals::Proposal.last } + + it "broadcasts :ok and creates a private_body" do + expect { command.call }.to broadcast(:ok) + expect(proposal.title["en"]).to eq("A reasonable proposal title") + expect(proposal.body["en"]).to eq("A reasonable proposal body") + expect(proposal.private_body).to eq("A valid private proposal body") + expect(proposal.extra_fields.private_body).to eq("A valid private proposal body") + end + end + + context "with no private body" do + let(:form_params) do + { + title: "A reasonable proposal title", + body: "A reasonable proposal body", + user_group_id: user_group.try(:id), + private_body: nil + } + end + let(:proposal) { Decidim::Proposals::Proposal.last } + + it "broadcasts :ok and creates a private_body" do + expect { command.call }.to broadcast(:ok) + expect(proposal.title["en"]).to eq("A reasonable proposal title") + expect(proposal.body["en"]).to eq("A reasonable proposal body") + expect(proposal.private_body).to be_nil + expect(proposal.extra_fields).to be_nil + end + end + describe "the proposal limit excludes withdrawn proposals" do let(:component) do create(:proposal_component, settings: { "proposal_limit" => 1 })