Refactor Budget::PHASES constant to Budget::Phase::PHASE_KINDS
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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?
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|
||||||
|
|||||||
@@ -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?
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user