def test_total(self): from seantisinvoice.models import Company from seantisinvoice.models import Customer from seantisinvoice.models import CustomerContact from seantisinvoice.models import Invoice from seantisinvoice.models import InvoiceItem company = Company() # Customer customer = Customer() contact = CustomerContact() contact.customer = customer # Invoice invoice = Invoice() invoice.company = company invoice.contact = contact item = InvoiceItem() item.invoice = invoice item.amount = 3000.0 self.assertEquals(3000.0, item.total()) # Hourly rate is defined on the company company.hourly_rate = 120.0 item = InvoiceItem() item.invoice = invoice item.hours = 13 self.assertEquals(1560.0, item.total()) # Daily rate is also defined on the company company.daily_rate = 1300.0 item = InvoiceItem() item.invoice = invoice item.days = 2.5 self.assertEquals(3250.0, item.total()) # Special daily rate on customer customer.special_daily_rate = 1100.0 item = InvoiceItem() item.invoice = invoice item.days = 4.5 self.assertEquals(4950.0, item.total()) # Special hourly rate on customer customer.special_hourly_rate = 100.0 item = InvoiceItem() item.invoice = invoice item.hours = 10 self.assertEquals(1000.0, item.total())