diff --git a/app/components/sdg_management/relations/index_component.rb b/app/components/sdg_management/relations/index_component.rb index 9c66e85e8..41eb4a26f 100644 --- a/app/components/sdg_management/relations/index_component.rb +++ b/app/components/sdg_management/relations/index_component.rb @@ -53,6 +53,8 @@ class SDGManagement::Relations::IndexComponent < ApplicationComponent end def target_options - options_from_collection_for_select(SDG::Target.all.sort, :code, :code, params[:target_code]) + targets = SDG::Target.all + SDG::LocalTarget.all + + options_from_collection_for_select(targets.sort, :code, :code, params[:target_code]) end end diff --git a/app/models/concerns/sdg/relatable.rb b/app/models/concerns/sdg/relatable.rb index 06a29c437..ef92696a7 100644 --- a/app/models/concerns/sdg/relatable.rb +++ b/app/models/concerns/sdg/relatable.rb @@ -20,7 +20,11 @@ module SDG::Relatable end def by_target(code) - by_sdg_related(SDG::Target, code) + if SDG::Target.find_by(code: code) + by_sdg_related(SDG::Target, code) + else + by_sdg_related(SDG::LocalTarget, code) + end end def by_sdg_related(sdg_class, code) diff --git a/spec/models/sdg/relatable_spec.rb b/spec/models/sdg/relatable_spec.rb index 965d1a394..3065f89b0 100644 --- a/spec/models/sdg/relatable_spec.rb +++ b/spec/models/sdg/relatable_spec.rb @@ -194,6 +194,19 @@ describe SDG::Relatable do expect(relatable.class.by_target(target.code)).to be_empty end + + it "returns records associated to a local target" do + relatable.sdg_local_targets = [local_target] + + expect(relatable.class.by_target(local_target.code)).to eq [relatable] + end + + it "does not return records not associated with that local target" do + create(:proposal) + create(:proposal, sdg_local_targets: [another_local_target]) + + expect(relatable.class.by_target(local_target.code)).to be_empty + end end describe ".pending_sdg_review" do diff --git a/spec/system/sdg_management/relations_spec.rb b/spec/system/sdg_management/relations_spec.rb index 83791a9a6..0fdea91a4 100644 --- a/spec/system/sdg_management/relations_spec.rb +++ b/spec/system/sdg_management/relations_spec.rb @@ -167,6 +167,21 @@ describe "SDG Relations", :js do expect(page).to have_css "li.is-active h2", exact_text: "Pending" end + scenario "local target filter" do + schools = create(:sdg_local_target, code: "4.1.1") + teachers = create(:sdg_local_target, code: "4.1.2") + + create(:debate, title: "Rebuild local schools", sdg_local_targets: [schools]) + create(:debate, title: "Hire teachers", sdg_local_targets: [teachers]) + + visit sdg_management_debates_path + select "4.1.1", from: "target_code" + click_button "Search" + + expect(page).to have_content "Rebuild local schools" + expect(page).not_to have_content "Hire teachers" + end + scenario "search within current tab" do visit sdg_management_proposals_path(filter: "pending_sdg_review")