def test_prices_and_markups(self): self._category.markup = 0 sellable = Sellable(category=self._category, cost=50, description=u"Test", price=currency(100), store=self.store) self.failUnless(sellable.price == 100, u"Expected price: %r, got %r" % (100, sellable.price)) self.failUnless(sellable.markup == 100, u"Expected markup: %r, got %r" % (100, sellable.markup)) sellable.markup = 10 self.failUnless(sellable.price == 55, u"Expected price: %r, got %r" % (55, sellable.price)) sellable.price = 50 self.failUnless(sellable.markup == 0, u"Expected markup %r, got %r" % (0, sellable.markup)) # When the price specified isn't equivalent to the markup specified. # In this case the price don't must be updated based on the markup. sellable = Sellable(cost=50, description=u"Test", price=currency(100), store=self.store) self.failUnless(sellable.price == 100) # A simple test: product without cost and price, markup must be 0 sellable.cost = currency(0) sellable.price = currency(0) self.failUnless(sellable.markup == 0, u"Expected markup %r, got %r" % (0, sellable.markup))
def test_price_based_on_specified_markup(self): # When the price isn't defined, but the category, markup and the cost. # In this case the category's markup must be ignored and the price # calculated applying the markup specified in the sellable's cost. sellable = Sellable(description=u"FY123", category=self._category, cost=100, store=self.store) sellable.markup = 5 self.assertEquals(sellable.markup, 5) self.assertEquals(sellable.price, 105) sellable.cost = Decimal('100.33') sellable.markup = 7 self.assertEquals(sellable.price, currency('107.35')) sellable.markup = 8 self.assertEquals(sellable.price, currency('108.36'))