[#4182] Create a LaborBudget model.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user