diff --git a/app/models/spending_proposal.rb b/app/models/spending_proposal.rb index d2c2be34c..723cfa7e2 100644 --- a/app/models/spending_proposal.rb +++ b/app/models/spending_proposal.rb @@ -16,7 +16,7 @@ class SpendingProposal < ActiveRecord::Base validates :title, presence: true validates :author, presence: true validates :description, presence: true - validates_presence_of :feasible_explanation, if: :valuation_finished? + validates_presence_of :feasible_explanation, if: :feasible_explanation_required? validates :title, length: { in: 4..SpendingProposal.title_max_length } validates :description, length: { maximum: SpendingProposal.description_max_length } @@ -100,6 +100,10 @@ class SpendingProposal < ActiveRecord::Base valuation_finished end + def feasible_explanation_required? + valuation_finished? && unfeasible? + end + def total_votes cached_votes_up + physical_votes end @@ -139,4 +143,5 @@ class SpendingProposal < ActiveRecord::Base valuation_finished.feasible end + end diff --git a/spec/models/spending_proposal_spec.rb b/spec/models/spending_proposal_spec.rb index 7a5e2050b..68ca93535 100644 --- a/spec/models/spending_proposal_spec.rb +++ b/spec/models/spending_proposal_spec.rb @@ -49,8 +49,16 @@ describe SpendingProposal do expect(spending_proposal).to be_valid end - it "should not be valid if valuation finished" do + it "should be valid if valuation finished and feasible" do spending_proposal.feasible_explanation = "" + spending_proposal.feasible = true + spending_proposal.valuation_finished = true + expect(spending_proposal).to be_valid + end + + it "should not be valid if valuation finished and unfeasible" do + spending_proposal.feasible_explanation = "" + spending_proposal.feasible = false spending_proposal.valuation_finished = true expect(spending_proposal).to_not be_valid end