[#4554] Fix the markup calculation to work with plain numerics

This commit is contained in:
Eric Davis
2010-09-23 09:40:47 -07:00
parent 8582ad0ecd
commit 0a80a54be3
2 changed files with 45 additions and 3 deletions

View File

@@ -32,8 +32,10 @@ class FixedBudget < ActiveRecord::Base
when percent_markup?
percent = markup.gsub('%','').to_f
return budget.to_f * (percent / 100)
when straight_markup?
when dollar_markup?
markup.gsub('$','').gsub(',','').to_f
when straight_markup?
markup.to_f
else
0 # Invalid markup
end
@@ -49,11 +51,15 @@ class FixedBudget < ActiveRecord::Base
end
def percent_markup?
markup && markup.match(/%/)
markup && markup.to_s.match(/%/)
end
def dollar_markup?
markup && markup.to_s.match(/[$,]+/)
end
def straight_markup?
markup && markup.match(/\$/)
markup && markup.to_s.match(/[\d.]/)
end
# Is this a blank budget item. Retainers will create blank ones when

View File

@@ -27,7 +27,43 @@ class FixedBudgetTest < ActiveSupport::TestCase
@fixed_budget.markup = '$4,000.57'
assert_equal 4000.57, @fixed_budget.markup_value
end
should "work without the $ sign" do
@fixed_budget.markup = '4,000.57'
assert_equal 4000.57, @fixed_budget.markup_value
end
end
context "with a straight amount of markup" do
should "equal the markup" do
@fixed_budget.markup = 4000.57
assert_equal 4000.57, @fixed_budget.markup_value
end
end
end
context "#budget=" do
setup do
@fixed_budget = FixedBudget.new
end
should "allow a $ string" do
@fixed_budget.budget = '$1,000.00'
assert_equal 1000.00, @fixed_budget.budget
end
should "allow a plain string" do
@fixed_budget.budget = '1,000.00'
assert_equal 1000.00, @fixed_budget.budget
end
should "allow a numeric value" do
@fixed_budget.budget = 1000.00
assert_equal 1000.00, @fixed_budget.budget
end
end
end