Hi
I have the following test:
it “calculates the actual expenditure per month” do
@expense = Expense.new(:name => “rent”, :limit => 100.50)
@expense.save
@expense.transactions << Transaction.new(:t_date =>
Date.civil(2010,01,05), :description => “Payment for rent”, :value =>
300)
@expense.transactions << Transaction.new(:t_date =>
Date.civil(2010,01,10), :description => “Payment for rent”, :value =>
200)
@expense.transactions << Transaction.new(:t_date =>
Date.civil(2010,02,01), :description => “Payment for rent”, :value =>
100)
@expense.actual.should == BigDecimal(‘600’)
end
The actual method in expense looks like this:
def actual
transactions.sum(‘value’)
end
I have noticed that I have to save @expense for this to work, why is
that?
Are the transactions saved when I assign them to the saved @expense
using << ?
Is there a better way to write this test, perhaps without hitting the
database?
My second question is with regards to this line:
@expense.actual.should == BigDecimal(‘600’)
Is that a common way of testing BigDecimal?
What is considered best practices when dealing with this?
Thanks, Daryn