Add scope to filter SDG relations by review status
This commit is contained in:
@@ -28,6 +28,14 @@ module SDG::Relatable
|
||||
|
||||
joins(sdg_class.table_name.to_sym).merge(sdg_class.where(code: code))
|
||||
end
|
||||
|
||||
def sdg_reviewed
|
||||
joins(:sdg_review)
|
||||
end
|
||||
|
||||
def pending_sdg_review
|
||||
left_joins(:sdg_review).merge(SDG::Review.where(id: nil))
|
||||
end
|
||||
end
|
||||
|
||||
def related_sdgs
|
||||
|
||||
@@ -170,4 +170,23 @@ describe SDG::Relatable do
|
||||
expect(relatable.class.by_target(target.code)).to be_empty
|
||||
end
|
||||
end
|
||||
|
||||
describe ".pending_sdg_review" do
|
||||
let!(:relatable) { create(:proposal) }
|
||||
|
||||
it "returns records not reviewed yet" do
|
||||
create(:sdg_review, relatable: create(:proposal))
|
||||
|
||||
expect(relatable.class.pending_sdg_review).to match_array [relatable]
|
||||
end
|
||||
end
|
||||
|
||||
describe ".sdg_reviewed" do
|
||||
let!(:relatable) { create(:proposal) }
|
||||
let!(:reviewed_relatable) { create(:sdg_review, relatable: create(:proposal)).relatable }
|
||||
|
||||
it "returns records already reviewed" do
|
||||
expect(relatable.class.sdg_reviewed).to match_array [reviewed_relatable]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user