def test_receipt_total_price(self):
        toothbrush = Product("toothbrush", ProductUnit.EACH)
        apples = Product("apples", ProductUnit.KILO)
        toothbrush_discount = Discount(toothbrush, "my_description", 0.2)
        receipt_toothbrush = ReceiptItem(toothbrush, 2, 1.5, 3)
        receipt_apples = ReceiptItem(apples, 3, 1, 3)

        receipt = Receipt()
        receipt.discounts = [toothbrush_discount]
        receipt.items = [receipt_toothbrush, receipt_apples]
        totalprice = receipt.total_price()

        self.assertEqual([toothbrush_discount], receipt.discounts)
        self.assertEqual(5.8, totalprice)
    def test_shopping_handle_offers_no_offers(self):
        catalog = FakeCatalog()
        toothbrush = Product("toothbrush", ProductUnit.EACH)
        receipt_toothbrush = ReceiptItem(toothbrush, 2, 1.5, 3)

        receipt = Receipt()
        receipt.items = [receipt_toothbrush]

        receipt_offers = {}

        cart = ShoppingCart()
        cart._items = [toothbrush]
        cart._product_quantities = {toothbrush: 2}

        cart.handle_offers(receipt, receipt_offers, catalog)
        self.assertEqual([], receipt.discounts)