From 95c1f36bddf4b093c9edbcb7a7859a13d39df0ba Mon Sep 17 00:00:00 2001 From: taitus Date: Thu, 21 Jan 2021 17:17:16 +0100 Subject: [PATCH] Add SDG::RelatedListSelectorComponent to Proposals Allow to relate SDG and Targets to Proposals --- app/controllers/proposals_controller.rb | 4 +-- app/views/proposals/_form.html.erb | 2 ++ spec/system/proposals_spec.rb | 38 +++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb index 6f2d7e10b..544a939cc 100644 --- a/app/controllers/proposals_controller.rb +++ b/app/controllers/proposals_controller.rb @@ -98,8 +98,8 @@ class ProposalsController < ApplicationController private def proposal_params - attributes = [:video_url, :responsible_name, :tag_list, - :terms_of_service, :geozone_id, :skip_map, + attributes = [:video_url, :responsible_name, :tag_list, :terms_of_service, + :geozone_id, :skip_map, :sdg_related_list, image_attributes: image_attributes, documents_attributes: [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy], diff --git a/app/views/proposals/_form.html.erb b/app/views/proposals/_form.html.erb index eba35f60d..60cc80f84 100644 --- a/app/views/proposals/_form.html.erb +++ b/app/views/proposals/_form.html.erb @@ -93,6 +93,8 @@ <% end %> + <%= render SDG::RelatedListSelectorComponent.new(f) %> +
<% if @proposal.new_record? %> <%= f.check_box :terms_of_service, diff --git a/spec/system/proposals_spec.rb b/spec/system/proposals_spec.rb index b42cd0a41..4376b6d92 100644 --- a/spec/system/proposals_spec.rb +++ b/spec/system/proposals_spec.rb @@ -1907,4 +1907,42 @@ describe "Successful proposals" do expect(page).to have_content "Proposal created successfully." end end + + describe "SDG related list" do + let(:user) { create(:user) } + + before do + Setting["feature.sdg"] = true + Setting["sdg.process.proposals"] = true + end + + scenario "create proposal with sdg related list", :js do + login_as(user) + visit new_proposal_path + fill_in "Proposal title", with: "A title for a proposal related with SDG related content" + fill_in "Proposal summary", with: "In summary, what we want is..." + fill_in "proposal_responsible_name", with: "Isabel Garcia" + click_sdg_goal(1) + check "proposal_terms_of_service" + + click_button "Create proposal" + + within(".sdg-goal-tag-list") { expect(page).to have_link "1. No Poverty" } + end + + scenario "edit proposal with sdg related list", :js do + proposal = create(:proposal, author: user) + proposal.sdg_goals = [SDG::Goal[1], SDG::Goal[2]] + login_as(user) + visit edit_proposal_path(proposal) + + remove_sdg_goal_or_target_tag(1) + click_button "Save changes" + + within(".sdg-goal-tag-list") do + expect(page).not_to have_link "1. No Poverty" + expect(page).to have_link "2. Zero Hunger" + end + end + end end