Esempio n. 1
0
 def test_retail_volume_price_different_products(self):
     terminal = PointOfSaleTerminal()
     set_pricing(terminal)
     for code in "ABCDABA":
         terminal.scan(code)
     result = terminal.calculate_total()
     self.assertEqual(result, 13.25)
Esempio n. 2
0
 def test_retail_price(self):
     terminal = PointOfSaleTerminal()
     set_pricing(terminal)
     for code in "ABCD":
         terminal.scan(code)
     result = terminal.calculate_total()
     self.assertEqual(result, 7.25)
Esempio n. 3
0
    def test_set_volume_quantity_one(self):
        terminal = PointOfSaleTerminal()
        terminal.set_volume_price("A", 1.0, 1)
        product = terminal.available_products.get_product("A")

        self.assertEqual(product.volume_price, None)
        self.assertEqual(product.retail_price.value, 1.0)
Esempio n. 4
0
 def test_both_prices(self):
     terminal = PointOfSaleTerminal()
     set_pricing(terminal)
     for code in "CCCCCCC":
         terminal.scan(code)
     result = terminal.calculate_total()
     self.assertEqual(result, 6)
Esempio n. 5
0
    def test_set_retail_price(self):
        terminal = PointOfSaleTerminal()
        terminal.set_retail_price(
            "A",
            1.0,
        )
        product = terminal.available_products.get_product("A")

        self.assertEqual(product.retail_price.value, 1.0)
Esempio n. 6
0
    def test_set_retail_price_for_unavailable_product(self):
        terminal = PointOfSaleTerminal()
        terminal.set_retail_price("A", 1.0)

        self.assertRaises(AttributeError, partial(terminal.scan, "B"))
Esempio n. 7
0
    def test_set_negative_quantity(self):
        terminal = PointOfSaleTerminal()
        terminal.set_retail_price("A", 1.0)

        self.assertRaises(AttributeError,
                          partial(terminal.set_volume_price, "A", 1.0, -2))
Esempio n. 8
0
def main():
    terminal = PointOfSaleTerminal()
    set_pricing(terminal)
    cases = ["ABCDABA", "CCCCCCC", "ABCD"]
    for case in cases:
        terminal.create_new_order()
        for code in case:
            terminal.scan(code)
        result = terminal.calculate_total()
        print(f"Case: {case}\nResult: {result}\n\n")

    case = "BBBAAA"
    terminal.registered_discount_cards.register_card("special_card", 1500)
    terminal.create_new_order()
    for code in case:
        terminal.scan(code)
    terminal.scan_discount_card("special_card")

    result, card = terminal.finish_order()
    print(f"Case: {case}\nResult: {result}\n{card}\n")
Esempio n. 9
0
def set_pricing(terminal: PointOfSaleTerminal):
    terminal.set_retail_price("A", 1.25)
    terminal.set_volume_price("A", 3.0, 3)
    terminal.set_retail_price("B", 4.25)
    terminal.set_retail_price("C", 1.0)
    terminal.set_volume_price("C", 5.0, 6)
    terminal.set_retail_price("D", 0.75)