From a0c9eba41dde3b3513f1a1285a0d0f207be2241c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sen=C3=A9n=20Rodero=20Rodr=C3=ADguez?= Date: Mon, 21 Dec 2020 18:16:24 +0100 Subject: [PATCH] Add scope to filter SDG relations by review status --- app/models/concerns/sdg/relatable.rb | 8 ++++++++ spec/models/sdg/relatable_spec.rb | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/app/models/concerns/sdg/relatable.rb b/app/models/concerns/sdg/relatable.rb index a64ade1bc..5844a8708 100644 --- a/app/models/concerns/sdg/relatable.rb +++ b/app/models/concerns/sdg/relatable.rb @@ -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 diff --git a/spec/models/sdg/relatable_spec.rb b/spec/models/sdg/relatable_spec.rb index fbdf65890..269fb6efe 100644 --- a/spec/models/sdg/relatable_spec.rb +++ b/spec/models/sdg/relatable_spec.rb @@ -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