[#4182] Create a LaborBudget model.

This commit is contained in:
Eric Davis
2010-07-02 14:29:01 -07:00
parent 117ed14679
commit a8452a834f
5 changed files with 73 additions and 1 deletions
+2 -1
View File
@@ -4,7 +4,8 @@ class Deliverable < ActiveRecord::Base
# Associations
belongs_to :contract
belongs_to :manager, :class_name => 'User', :foreign_key => 'manager_id'
has_many :labor_expenses
# Validations
validates_presence_of :title
validates_presence_of :type
+21
View File
@@ -0,0 +1,21 @@
class LaborExpense < ActiveRecord::Base
unloadable
# Associations
belongs_to :deliverable
# Validations
validates_presence_of :hours
validates_presence_of :budget
validates_presence_of :deliverable
# Accessors
def budget=(v)
if v.is_a? String
write_attribute(:budget, v.gsub(/[$ ,]/, ''))
else
write_attribute(:budget, v)
end
end
end
+16
View File
@@ -0,0 +1,16 @@
class CreateLaborExpenses < ActiveRecord::Migration
def self.up
create_table :labor_expenses do |t|
t.decimal :hours, :precision => 15, :scale => 4
t.decimal :budget, :precision => 15, :scale => 4
t.references :deliverable
t.timestamps
end
add_index :labor_expenses, :deliverable_id
end
def self.down
drop_table :labor_expenses
end
end
+1
View File
@@ -3,6 +3,7 @@ require File.dirname(__FILE__) + '/../test_helper'
class DeliverableTest < ActiveSupport::TestCase
should_belong_to :contract
should_belong_to :manager
should_have_many :labor_expenses
should_validate_presence_of :title
should_validate_presence_of :type
+33
View File
@@ -0,0 +1,33 @@
require File.dirname(__FILE__) + '/../test_helper'
class LaborExpenseTest < ActiveSupport::TestCase
should_belong_to :deliverable
should_validate_presence_of :hours
should_validate_presence_of :budget
should_validate_presence_of :deliverable
context "#budget=" do
should "strip dollar signs when writing" do
e = LaborExpense.new
e.budget = '$100.00'
assert_equal 100.00, e.budget.to_f
end
should "strip commas when writing" do
e = LaborExpense.new
e.budget = '20,100.00'
assert_equal 20100.00, e.budget.to_f
end
should "strip spaces when writing" do
e = LaborExpense.new
e.budget = '20 100.00'
assert_equal 20100.00, e.budget.to_f
end
end
end