diff --git a/app/models/budget.rb b/app/models/budget.rb index 26c32e5f9..ab32fee39 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -3,7 +3,7 @@ class Budget < ActiveRecord::Base include Sanitizable include Measurable - VALID_PHASES = %W{on_hold accepting selecting balloting finished}.freeze + VALID_PHASES = %W{accepting reviewing selecting valuating balloting reviewing_ballots finished}.freeze CURRENCY_SYMBOLS = %W{€ $ £ ¥}.freeze validates :name, presence: true @@ -15,35 +15,49 @@ class Budget < ActiveRecord::Base has_many :groups, dependent: :destroy has_many :headings, through: :groups - scope :on_hold, -> { where(phase: "on_hold") } + scope :on_hold, -> { where(phase: ["reviewing", "valuating", "reviewing_ballots"]) } scope :accepting, -> { where(phase: "accepting") } + scope :reviewing, -> { where(phase: "reviewing") } scope :selecting, -> { where(phase: "selecting") } + scope :valuating, -> { where(phase: "valuating") } scope :balloting, -> { where(phase: "balloting") } + scope :reviewing_ballots, -> { where(phase: "reviewing_ballots") } scope :finished, -> { where(phase: "finished") } scope :current, -> { where.not(phase: "finished") } - scope :valuating, -> { where(valuating: true) } - - def on_hold? - phase == "on_hold" - end def accepting? phase == "accepting" end + def reviewing? + phase == "reviewing" + end + def selecting? phase == "selecting" end + def valuating? + phase == "valuating" + end + def balloting? phase == "balloting" end + def reviewing_ballots? + phase == "reviewing_ballots" + end + def finished? phase == "finished" end + def on_hold? + reviewing? || valuating? || reviewing_ballots? + end + def current? !finished? end diff --git a/spec/factories.rb b/spec/factories.rb index f52481d78..1ee6f6046 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -195,20 +195,32 @@ FactoryGirl.define do factory :budget do sequence(:name) { |n| "Budget #{n}" } currency_symbol "€" - phase 'on_hold' + phase 'accepting' trait :accepting do phase 'accepting' end + trait :reviewing do + phase 'reviewing' + end + trait :selecting do phase 'selecting' end + trait :valuating do + phase 'valuating' + end + trait :balloting do phase 'balloting' end + trait :reviewing_ballots do + phase 'reviewing_ballots' + end + trait :finished do phase 'finished' end diff --git a/spec/features/budgets/ballots_spec.rb b/spec/features/budgets/ballots_spec.rb index e1d8ab4a8..362706ffb 100644 --- a/spec/features/budgets/ballots_spec.rb +++ b/spec/features/budgets/ballots_spec.rb @@ -582,7 +582,7 @@ feature 'Ballots' do end scenario "Balloting is disabled when budget isn't in the balotting phase", :js do - budget.update(phase: 'on_hold') + budget.update(phase: 'accepting') bi1 = create(:budget_investment, :selected, heading: california, price: 600) diff --git a/spec/features/budgets/votes_spec.rb b/spec/features/budgets/votes_spec.rb index 3c92bf658..c31545428 100644 --- a/spec/features/budgets/votes_spec.rb +++ b/spec/features/budgets/votes_spec.rb @@ -88,7 +88,7 @@ feature 'Votes' do scenario 'Disable voting on spending proposals', :js do login_as(@manuela) - budget.update(phase: "on_hold") + budget.update(phase: "reviewing") investment = create(:budget_investment, budget: budget, heading: heading) visit budget_investments_path(budget, heading_id: heading.id) diff --git a/spec/models/budget/investment_spec.rb b/spec/models/budget/investment_spec.rb index 13f17e0c4..512198601 100644 --- a/spec/models/budget/investment_spec.rb +++ b/spec/models/budget/investment_spec.rb @@ -318,8 +318,8 @@ describe Budget::Investment do expect(investment.reason_for_not_being_ballotable_by(user, ballot)).to eq(:organization) end - it "rejects votes when voting is not allowed (via admin setting)" do - budget.phase = "on_hold" + it "rejects votes when voting is not allowed (wrong phase)" do + budget.phase = "reviewing" expect(investment.reason_for_not_being_ballotable_by(user, ballot)).to eq(:no_ballots_allowed) end diff --git a/spec/models/budget_spec.rb b/spec/models/budget_spec.rb index b238717ef..667af1344 100644 --- a/spec/models/budget_spec.rb +++ b/spec/models/budget_spec.rb @@ -15,18 +15,24 @@ describe Budget do end it "produces auxiliary methods" do - budget.phase = "on_hold" - expect(budget).to be_on_hold - budget.phase = "accepting" expect(budget).to be_accepting + budget.phase = "reviewing" + expect(budget).to be_reviewing + budget.phase = "selecting" expect(budget).to be_selecting + budget.phase = "valuating" + expect(budget).to be_valuating + budget.phase = "balloting" expect(budget).to be_balloting + budget.phase = "reviewing_ballots" + expect(budget).to be_reviewing_ballots + budget.phase = "finished" expect(budget).to be_finished end