diff --git a/app/models/proposal.rb b/app/models/proposal.rb index f437fa134..c6c7e6398 100644 --- a/app/models/proposal.rb +++ b/app/models/proposal.rb @@ -42,6 +42,7 @@ class Proposal < ActiveRecord::Base scope :sort_by_relevance, -> { all } scope :sort_by_flags, -> { order(flags_count: :desc, updated_at: :desc) } scope :last_week, -> { where("proposals.created_at >= ?", 7.days.ago)} + scope :retired, -> { where.not(retired_at: nil) } def to_param "#{id}-#{title}".parameterize @@ -105,6 +106,10 @@ class Proposal < ActiveRecord::Base user && user.level_two_or_three_verified? end + def retired? + retired_at.present? + end + def register_vote(user, vote_value) if votable_by?(user) vote_by(voter: user, vote: vote_value) diff --git a/spec/models/proposal_spec.rb b/spec/models/proposal_spec.rb index eae4d4fbd..dddab0fbc 100644 --- a/spec/models/proposal_spec.rb +++ b/spec/models/proposal_spec.rb @@ -741,4 +741,23 @@ describe Proposal do end end + describe "retired" do + before(:all) do + @proposal1 = create(:proposal) + @proposal2 = create(:proposal, retired_at: Time.now) + end + + it "retired? is true" do + expect(@proposal1.retired?).to eq false + expect(@proposal2.retired?).to eq true + end + + it "scope retired" do + retired = Proposal.retired + + expect(retired.size).to eq(1) + expect(retired.first).to eq(@proposal2) + end + end + end