コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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"))
コード例 #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))
コード例 #8
0
ファイル: main.py プロジェクト: yuliok0715/pos_kata
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")
コード例 #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)