Refactor Budget::PHASES constant to Budget::Phase::PHASE_KINDS

This commit is contained in:
Bertocq
2018-01-15 20:17:49 +01:00
parent f2228a908b
commit 66691b644a
11 changed files with 25 additions and 25 deletions

View File

@@ -54,7 +54,7 @@ class Admin::BudgetsController < Admin::BaseController
private private
def budget_params def budget_params
descriptions = Budget::PHASES.map{|p| "description_#{p}"}.map(&:to_sym) descriptions = Budget::Phase::PHASE_KINDS.map{|p| "description_#{p}"}.map(&:to_sym)
valid_attributes = [:name, :phase, :currency_symbol] + descriptions valid_attributes = [:name, :phase, :currency_symbol] + descriptions
params.require(:budget).permit(*valid_attributes) params.require(:budget).permit(*valid_attributes)
end end

View File

@@ -7,7 +7,7 @@ module BudgetsHelper
end end
def budget_phases_select_options def budget_phases_select_options
Budget::PHASES.map { |ph| [ t("budgets.phase.#{ph}"), ph ] } Budget::Phase::PHASE_KINDS.map { |ph| [ t("budgets.phase.#{ph}"), ph ] }
end end
def budget_currency_symbol_select_options def budget_currency_symbol_select_options

View File

@@ -3,14 +3,12 @@ class Budget < ActiveRecord::Base
include Measurable include Measurable
include Sluggable include Sluggable
PHASES = %w(drafting accepting reviewing selecting valuating publishing_prices
balloting reviewing_ballots finished).freeze
PUBLISHED_PRICES_PHASES = %w(publishing_prices balloting reviewing_ballots finished).freeze PUBLISHED_PRICES_PHASES = %w(publishing_prices balloting reviewing_ballots finished).freeze
CURRENCY_SYMBOLS = %w(€ $ £ ¥).freeze CURRENCY_SYMBOLS = %w(€ $ £ ¥).freeze
validates :name, presence: true, uniqueness: true validates :name, presence: true, uniqueness: true
validates :phase, inclusion: { in: PHASES } validates :phase, inclusion: { in: Budget::Phase::PHASE_KINDS }
validates :currency_symbol, presence: true validates :currency_symbol, presence: true
validates :slug, presence: true, format: /\A[a-z0-9\-_]+\z/ validates :slug, presence: true, format: /\A[a-z0-9\-_]+\z/
@@ -147,7 +145,7 @@ class Budget < ActiveRecord::Base
def sanitize_descriptions def sanitize_descriptions
s = WYSIWYGSanitizer.new s = WYSIWYGSanitizer.new
PHASES.each do |phase| Budget::Phase::PHASE_KINDS.each do |phase|
sanitized = s.sanitize(send("description_#{phase}")) sanitized = s.sanitize(send("description_#{phase}"))
send("description_#{phase}=", sanitized) send("description_#{phase}=", sanitized)
end end

View File

@@ -1,5 +1,7 @@
class Budget class Budget
class Phase < ActiveRecord::Base class Phase < ActiveRecord::Base
PHASE_KINDS = %w(drafting accepting reviewing selecting valuating publishing_prices balloting
reviewing_ballots finished).freeze
DESCRIPTION_MAX_LENGTH = 2000 DESCRIPTION_MAX_LENGTH = 2000
belongs_to :budget belongs_to :budget
@@ -7,7 +9,7 @@ class Budget
has_one :prev_phase, class_name: 'Budget::Phase', foreign_key: :next_phase_id has_one :prev_phase, class_name: 'Budget::Phase', foreign_key: :next_phase_id
validates :budget, presence: true validates :budget, presence: true
validates :kind, presence: true, uniqueness: { scope: :budget }, inclusion: { in: Budget::PHASES } validates :kind, presence: true, uniqueness: { scope: :budget }, inclusion: { in: PHASE_KINDS }
validates :description, length: { maximum: DESCRIPTION_MAX_LENGTH } validates :description, length: { maximum: DESCRIPTION_MAX_LENGTH }
validate :dates_range_valid? validate :dates_range_valid?

View File

@@ -2,7 +2,7 @@
<%= f.text_field :name, maxlength: Budget.title_max_length %> <%= f.text_field :name, maxlength: Budget.title_max_length %>
<% Budget::PHASES.each do |phase| %> <% Budget::Phase::PHASE_KINDS.each do |phase| %>
<div class="margin-top"> <div class="margin-top">
<%= f.cktext_area "description_#{phase}", maxlength: Budget::Phase::DESCRIPTION_MAX_LENGTH, ckeditor: { language: I18n.locale } %> <%= f.cktext_area "description_#{phase}", maxlength: Budget::Phase::DESCRIPTION_MAX_LENGTH, ckeditor: { language: I18n.locale } %>
</div> </div>

View File

@@ -401,8 +401,8 @@ section "Creating Valuation Assignments" do
end end
section "Creating Budgets" do section "Creating Budgets" do
Budget::PHASES.each_with_index do |phase, i| Budget::Phase::PHASE_KINDS.each_with_index do |phase, i|
descriptions = Hash[Budget::PHASES.map do |p| descriptions = Hash[Budget::Phase::PHASE_KINDS.map do |p|
["description_#{p}", ["description_#{p}",
"<p>#{Faker::Lorem.paragraphs(2).join('</p><p>')}</p>"] "<p>#{Faker::Lorem.paragraphs(2).join('</p><p>')}</p>"]
end] end]

View File

@@ -440,7 +440,7 @@ feature 'Budget Investments' do
end end
scenario "Price & explanation isn't shown when Budget is not on published prices phase" do scenario "Price & explanation isn't shown when Budget is not on published prices phase" do
(Budget::PHASES - Budget::PUBLISHED_PRICES_PHASES).each do |phase| (Budget::Phase::PHASE_KINDS - Budget::PUBLISHED_PRICES_PHASES).each do |phase|
budget.update(phase: phase) budget.update(phase: phase)
visit budget_investment_path(budget_id: budget.id, id: investment.id) visit budget_investment_path(budget_id: budget.id, id: investment.id)
@@ -461,7 +461,7 @@ feature 'Budget Investments' do
end end
scenario "Price & explanation isn't shown for any Budget's phase" do scenario "Price & explanation isn't shown for any Budget's phase" do
Budget::PHASES.each do |phase| Budget::Phase::PHASE_KINDS.each do |phase|
budget.update(phase: phase) budget.update(phase: phase)
visit budget_investment_path(budget_id: budget.id, id: investment.id) visit budget_investment_path(budget_id: budget.id, id: investment.id)

View File

@@ -65,7 +65,7 @@ feature 'Results' do
end end
scenario "If budget is in a phase different from finished results can't be accessed" do scenario "If budget is in a phase different from finished results can't be accessed" do
budget.update(phase: (Budget::PHASES - ['drafting', 'finished']).sample) budget.update(phase: (Budget::Phase::PHASE_KINDS - ['drafting', 'finished']).sample)
visit budget_path(budget) visit budget_path(budget)
expect(page).not_to have_link "See results" expect(page).not_to have_link "See results"

View File

@@ -183,7 +183,7 @@ feature 'Tags' do
let!(:investment3) { create(:budget_investment, heading: heading, tag_list: newer_tag) } let!(:investment3) { create(:budget_investment, heading: heading, tag_list: newer_tag) }
scenario 'Display user tags' do scenario 'Display user tags' do
Budget::PHASES.each do |phase| Budget::Phase::PHASE_KINDS.each do |phase|
budget.update(phase: phase) budget.update(phase: phase)
login_as(admin) if budget.drafting? login_as(admin) if budget.drafting?
@@ -197,7 +197,7 @@ feature 'Tags' do
end end
scenario "Filter by user tags" do scenario "Filter by user tags" do
Budget::PHASES.each do |phase| Budget::Phase::PHASE_KINDS.each do |phase|
budget.update(phase: phase) budget.update(phase: phase)
if budget.balloting? if budget.balloting?
@@ -230,7 +230,7 @@ feature 'Tags' do
let!(:investment3) { create(:budget_investment, heading: heading, tag_list: tag_economia.name) } let!(:investment3) { create(:budget_investment, heading: heading, tag_list: tag_economia.name) }
scenario 'Display category tags' do scenario 'Display category tags' do
Budget::PHASES.each do |phase| Budget::Phase::PHASE_KINDS.each do |phase|
budget.update(phase: phase) budget.update(phase: phase)
login_as(admin) if budget.drafting? login_as(admin) if budget.drafting?
@@ -244,7 +244,7 @@ feature 'Tags' do
end end
scenario "Filter by category tags" do scenario "Filter by category tags" do
Budget::PHASES.each do |phase| Budget::Phase::PHASE_KINDS.each do |phase|
budget.update(phase: phase) budget.update(phase: phase)
if budget.balloting? if budget.balloting?

View File

@@ -141,7 +141,7 @@ describe Budget::Investment do
end end
it "returns false in any other phase" do it "returns false in any other phase" do
Budget::PHASES.reject {|phase| phase == "selecting"}.each do |phase| Budget::Phase::PHASE_KINDS.reject {|phase| phase == "selecting"}.each do |phase|
budget = create(:budget, phase: phase) budget = create(:budget, phase: phase)
investment = create(:budget_investment, budget: budget) investment = create(:budget_investment, budget: budget)
@@ -159,7 +159,7 @@ describe Budget::Investment do
end end
it "returns false in any other phase" do it "returns false in any other phase" do
Budget::PHASES.reject {|phase| phase == "valuating"}.each do |phase| Budget::Phase::PHASE_KINDS.reject {|phase| phase == "valuating"}.each do |phase|
budget = create(:budget, phase: phase) budget = create(:budget, phase: phase)
investment = create(:budget_investment, budget: budget) investment = create(:budget_investment, budget: budget)
@@ -184,7 +184,7 @@ describe Budget::Investment do
end end
it "returns false in any other phase" do it "returns false in any other phase" do
Budget::PHASES.reject {|phase| phase == "balloting"}.each do |phase| Budget::Phase::PHASE_KINDS.reject {|phase| phase == "balloting"}.each do |phase|
budget = create(:budget, phase: phase) budget = create(:budget, phase: phase)
investment = create(:budget_investment, :selected, budget: budget) investment = create(:budget_investment, :selected, budget: budget)
@@ -208,7 +208,7 @@ describe Budget::Investment do
end end
it "returns false in any other phase" do it "returns false in any other phase" do
(Budget::PHASES - Budget::PUBLISHED_PRICES_PHASES).each do |phase| (Budget::Phase::PHASE_KINDS - Budget::PUBLISHED_PRICES_PHASES).each do |phase|
budget.update(phase: phase) budget.update(phase: phase)
expect(investment.should_show_price?).to eq(false) expect(investment.should_show_price?).to eq(false)
@@ -243,7 +243,7 @@ describe Budget::Investment do
end end
it "returns false in any other phase" do it "returns false in any other phase" do
(Budget::PHASES - Budget::PUBLISHED_PRICES_PHASES).each do |phase| (Budget::Phase::PHASE_KINDS - Budget::PUBLISHED_PRICES_PHASES).each do |phase|
budget.update(phase: phase) budget.update(phase: phase)
expect(investment.should_show_price_explanation?).to eq(false) expect(investment.should_show_price_explanation?).to eq(false)
@@ -785,7 +785,7 @@ describe Budget::Investment do
end end
it "returns false if budget is not balloting phase" do it "returns false if budget is not balloting phase" do
Budget::PHASES.reject {|phase| phase == "balloting"}.each do |phase| Budget::Phase::PHASE_KINDS.reject {|phase| phase == "balloting"}.each do |phase|
budget.update(phase: phase) budget.update(phase: phase)
investment = create(:budget_investment, budget: budget) investment = create(:budget_investment, budget: budget)

View File

@@ -18,7 +18,7 @@ describe Budget do
it "changes depending on the phase" do it "changes depending on the phase" do
budget = create(:budget) budget = create(:budget)
Budget::PHASES.each do |phase| Budget::Phase::PHASE_KINDS.each do |phase|
budget.phase = phase budget.phase = phase
expect(budget.description).to eq(budget.send("description_#{phase}")) expect(budget.description).to eq(budget.send("description_#{phase}"))
expect(budget.description).to be_html_safe expect(budget.description).to be_html_safe
@@ -30,7 +30,7 @@ describe Budget do
let(:budget) { create(:budget) } let(:budget) { create(:budget) }
it "is validated" do it "is validated" do
Budget::PHASES.each do |phase| Budget::Phase::PHASE_KINDS.each do |phase|
budget.phase = phase budget.phase = phase
expect(budget).to be_valid expect(budget).to be_valid
end end