diff --git a/app/models/fixed_budget.rb b/app/models/fixed_budget.rb index 9a43013..272bcde 100644 --- a/app/models/fixed_budget.rb +++ b/app/models/fixed_budget.rb @@ -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 diff --git a/test/unit/fixed_budget_test.rb b/test/unit/fixed_budget_test.rb index 2ea7def..35cd60d 100644 --- a/test/unit/fixed_budget_test.rb +++ b/test/unit/fixed_budget_test.rb @@ -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