diff --git a/app/models/budget.rb b/app/models/budget.rb index 7fee2eee2..425750956 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -27,6 +27,10 @@ class Budget < ActiveRecord::Base scope :current, -> { where.not(phase: "finished") } + def description + self.send("description_#{self.phase}").try(:html_safe) + end + def accepting? phase == "accepting" end diff --git a/db/migrate/20161230174744_change_budget_description.rb b/db/migrate/20161230174744_change_budget_description.rb new file mode 100644 index 000000000..80de9dcf4 --- /dev/null +++ b/db/migrate/20161230174744_change_budget_description.rb @@ -0,0 +1,12 @@ +class ChangeBudgetDescription < ActiveRecord::Migration + def change + remove_column :budgets, :description, :text + add_column :budgets, :description_accepting, :text + add_column :budgets, :description_reviewing, :text + add_column :budgets, :description_selecting, :text + add_column :budgets, :description_valuating, :text + add_column :budgets, :description_balloting, :text + add_column :budgets, :description_reviewing_ballots, :text + add_column :budgets, :description_finished, :text + end +end diff --git a/db/schema.rb b/db/schema.rb index cc646e6e1..2bd9bfa1f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161230172816) do +ActiveRecord::Schema.define(version: 20161230174744) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -160,12 +160,18 @@ ActiveRecord::Schema.define(version: 20161230172816) do add_index "budget_valuator_assignments", ["investment_id"], name: "index_budget_valuator_assignments_on_investment_id", using: :btree create_table "budgets", force: :cascade do |t| - t.string "name", limit: 30 - t.text "description" - t.string "currency_symbol", limit: 10 - t.string "phase", limit: 15, default: "on_hold" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.string "name", limit: 30 + t.string "currency_symbol", limit: 10 + t.string "phase", limit: 15, default: "on_hold" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.text "description_accepting" + t.text "description_reviewing" + t.text "description_selecting" + t.text "description_valuating" + t.text "description_balloting" + t.text "description_reviewing_ballots" + t.text "description_finished" end create_table "campaigns", force: :cascade do |t| diff --git a/spec/factories.rb b/spec/factories.rb index 1ee6f6046..e058adf15 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -196,6 +196,13 @@ FactoryGirl.define do sequence(:name) { |n| "Budget #{n}" } currency_symbol "€" phase 'accepting' + description_accepting "This budget is accepting" + description_reviewing "This budget is reviewing" + description_selecting "This budget is selecting" + description_valuating "This budget is valuating" + description_balloting "This budget is balloting" + description_reviewing_ballots "This budget is reviewing ballots" + description_finished "This budget is finished" trait :accepting do phase 'accepting' diff --git a/spec/models/budget_spec.rb b/spec/models/budget_spec.rb index 667af1344..04ebc419e 100644 --- a/spec/models/budget_spec.rb +++ b/spec/models/budget_spec.rb @@ -1,6 +1,19 @@ require 'rails_helper' describe Budget do + + describe "description" do + it "changes depending on the phase" do + budget = create(:budget) + + Budget::VALID_PHASES.each do |phase| + budget.phase = phase + expect(budget.description).to eq(budget.send("description_#{phase}")) + expect(budget.description).to be_html_safe + end + end + end + describe "phase" do let(:budget) { create(:budget) }