Refactor Budget::PHASES constant to Budget::Phase::PHASE_KINDS
This commit is contained in:
@@ -54,7 +54,7 @@ class Admin::BudgetsController < Admin::BaseController
|
||||
private
|
||||
|
||||
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
|
||||
params.require(:budget).permit(*valid_attributes)
|
||||
end
|
||||
|
||||
@@ -7,7 +7,7 @@ module BudgetsHelper
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
def budget_currency_symbol_select_options
|
||||
|
||||
@@ -3,14 +3,12 @@ class Budget < ActiveRecord::Base
|
||||
include Measurable
|
||||
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
|
||||
|
||||
CURRENCY_SYMBOLS = %w(€ $ £ ¥).freeze
|
||||
|
||||
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 :slug, presence: true, format: /\A[a-z0-9\-_]+\z/
|
||||
|
||||
@@ -147,7 +145,7 @@ class Budget < ActiveRecord::Base
|
||||
|
||||
def sanitize_descriptions
|
||||
s = WYSIWYGSanitizer.new
|
||||
PHASES.each do |phase|
|
||||
Budget::Phase::PHASE_KINDS.each do |phase|
|
||||
sanitized = s.sanitize(send("description_#{phase}"))
|
||||
send("description_#{phase}=", sanitized)
|
||||
end
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
class Budget
|
||||
class Phase < ActiveRecord::Base
|
||||
PHASE_KINDS = %w(drafting accepting reviewing selecting valuating publishing_prices balloting
|
||||
reviewing_ballots finished).freeze
|
||||
DESCRIPTION_MAX_LENGTH = 2000
|
||||
|
||||
belongs_to :budget
|
||||
@@ -7,7 +9,7 @@ class Budget
|
||||
has_one :prev_phase, class_name: 'Budget::Phase', foreign_key: :next_phase_id
|
||||
|
||||
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 }
|
||||
validate :dates_range_valid?
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<%= 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">
|
||||
<%= f.cktext_area "description_#{phase}", maxlength: Budget::Phase::DESCRIPTION_MAX_LENGTH, ckeditor: { language: I18n.locale } %>
|
||||
</div>
|
||||
|
||||
@@ -401,8 +401,8 @@ section "Creating Valuation Assignments" do
|
||||
end
|
||||
|
||||
section "Creating Budgets" do
|
||||
Budget::PHASES.each_with_index do |phase, i|
|
||||
descriptions = Hash[Budget::PHASES.map do |p|
|
||||
Budget::Phase::PHASE_KINDS.each_with_index do |phase, i|
|
||||
descriptions = Hash[Budget::Phase::PHASE_KINDS.map do |p|
|
||||
["description_#{p}",
|
||||
"<p>#{Faker::Lorem.paragraphs(2).join('</p><p>')}</p>"]
|
||||
end]
|
||||
|
||||
@@ -440,7 +440,7 @@ feature 'Budget Investments' do
|
||||
end
|
||||
|
||||
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)
|
||||
visit budget_investment_path(budget_id: budget.id, id: investment.id)
|
||||
|
||||
@@ -461,7 +461,7 @@ feature 'Budget Investments' do
|
||||
end
|
||||
|
||||
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)
|
||||
visit budget_investment_path(budget_id: budget.id, id: investment.id)
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ feature 'Results' do
|
||||
end
|
||||
|
||||
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)
|
||||
expect(page).not_to have_link "See results"
|
||||
|
||||
|
||||
@@ -183,7 +183,7 @@ feature 'Tags' do
|
||||
let!(:investment3) { create(:budget_investment, heading: heading, tag_list: newer_tag) }
|
||||
|
||||
scenario 'Display user tags' do
|
||||
Budget::PHASES.each do |phase|
|
||||
Budget::Phase::PHASE_KINDS.each do |phase|
|
||||
budget.update(phase: phase)
|
||||
|
||||
login_as(admin) if budget.drafting?
|
||||
@@ -197,7 +197,7 @@ feature 'Tags' do
|
||||
end
|
||||
|
||||
scenario "Filter by user tags" do
|
||||
Budget::PHASES.each do |phase|
|
||||
Budget::Phase::PHASE_KINDS.each do |phase|
|
||||
budget.update(phase: phase)
|
||||
|
||||
if budget.balloting?
|
||||
@@ -230,7 +230,7 @@ feature 'Tags' do
|
||||
let!(:investment3) { create(:budget_investment, heading: heading, tag_list: tag_economia.name) }
|
||||
|
||||
scenario 'Display category tags' do
|
||||
Budget::PHASES.each do |phase|
|
||||
Budget::Phase::PHASE_KINDS.each do |phase|
|
||||
budget.update(phase: phase)
|
||||
|
||||
login_as(admin) if budget.drafting?
|
||||
@@ -244,7 +244,7 @@ feature 'Tags' do
|
||||
end
|
||||
|
||||
scenario "Filter by category tags" do
|
||||
Budget::PHASES.each do |phase|
|
||||
Budget::Phase::PHASE_KINDS.each do |phase|
|
||||
budget.update(phase: phase)
|
||||
|
||||
if budget.balloting?
|
||||
|
||||
@@ -141,7 +141,7 @@ describe Budget::Investment do
|
||||
end
|
||||
|
||||
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)
|
||||
investment = create(:budget_investment, budget: budget)
|
||||
|
||||
@@ -159,7 +159,7 @@ describe Budget::Investment do
|
||||
end
|
||||
|
||||
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)
|
||||
investment = create(:budget_investment, budget: budget)
|
||||
|
||||
@@ -184,7 +184,7 @@ describe Budget::Investment do
|
||||
end
|
||||
|
||||
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)
|
||||
investment = create(:budget_investment, :selected, budget: budget)
|
||||
|
||||
@@ -208,7 +208,7 @@ describe Budget::Investment do
|
||||
end
|
||||
|
||||
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)
|
||||
|
||||
expect(investment.should_show_price?).to eq(false)
|
||||
@@ -243,7 +243,7 @@ describe Budget::Investment do
|
||||
end
|
||||
|
||||
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)
|
||||
|
||||
expect(investment.should_show_price_explanation?).to eq(false)
|
||||
@@ -785,7 +785,7 @@ describe Budget::Investment do
|
||||
end
|
||||
|
||||
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)
|
||||
investment = create(:budget_investment, budget: budget)
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ describe Budget do
|
||||
it "changes depending on the phase" do
|
||||
budget = create(:budget)
|
||||
|
||||
Budget::PHASES.each do |phase|
|
||||
Budget::Phase::PHASE_KINDS.each do |phase|
|
||||
budget.phase = phase
|
||||
expect(budget.description).to eq(budget.send("description_#{phase}"))
|
||||
expect(budget.description).to be_html_safe
|
||||
@@ -30,7 +30,7 @@ describe Budget do
|
||||
let(:budget) { create(:budget) }
|
||||
|
||||
it "is validated" do
|
||||
Budget::PHASES.each do |phase|
|
||||
Budget::Phase::PHASE_KINDS.each do |phase|
|
||||
budget.phase = phase
|
||||
expect(budget).to be_valid
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user