Allow filtering by local target in SDG management
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user