From 9a8dcd660fed7f6a3ca4f6eaa38513bfa0807481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Thu, 7 Jan 2016 15:10:01 +0100 Subject: [PATCH] adds resolution scopes --- app/models/spending_proposal.rb | 4 ++++ spec/models/spending_proposal_spec.rb | 33 +++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/app/models/spending_proposal.rb b/app/models/spending_proposal.rb index b19ab4e2e..e9ff0f728 100644 --- a/app/models/spending_proposal.rb +++ b/app/models/spending_proposal.rb @@ -18,6 +18,10 @@ class SpendingProposal < ActiveRecord::Base validates :resolution, inclusion: { in: RESOLUTIONS, allow_nil: true } validates :terms_of_service, acceptance: { allow_nil: false }, on: :create + scope :accepted, -> { where(resolution: "accepted") } + scope :rejected, -> { where(resolution: "rejected") } + scope :unresolved, -> { where(resolution: nil) } + def accept update_attribute(:resolution, "accepted") end diff --git a/spec/models/spending_proposal_spec.rb b/spec/models/spending_proposal_spec.rb index ed99a2ecf..d02d74eec 100644 --- a/spec/models/spending_proposal_spec.rb +++ b/spec/models/spending_proposal_spec.rb @@ -53,4 +53,37 @@ describe SpendingProposal do expect(spending_proposal.reload.resolution).to eq("rejected") end end + + describe "scopes" do + before(:each) do + 2.times { create(:spending_proposal, resolution: "accepted") } + 2.times { create(:spending_proposal, resolution: "rejected") } + 2.times { create(:spending_proposal, resolution: nil) } + end + + describe "unresolved" do + it "should return all spending proposals without resolution" do + unresolved = SpendingProposal.all.unresolved + expect(unresolved.size).to eq(2) + unresolved.each {|u| expect(u.resolution).to be_nil} + end + end + + describe "accepted" do + it "should return all accepted spending proposals" do + accepted = SpendingProposal.all.accepted + expect(accepted.size).to eq(2) + accepted.each {|a| expect(a.resolution).to eq("accepted")} + end + end + + describe "rejected" do + it "should return all rejected spending proposals" do + rejected = SpendingProposal.all.rejected + expect(rejected.size).to eq(2) + rejected.each {|r| expect(r.resolution).to eq("rejected")} + end + end + end + end