Allow filtering by local target in SDG management

This commit is contained in:
Javi Martín
2021-01-20 19:41:50 +01:00
parent d3f72b100e
commit 14e4c528e9
4 changed files with 36 additions and 2 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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")