Exemple #1
0
    def test_stock_shortage(self):
        # set stock levels to the minimum ammount required to order all sides and drinks on the menu
        items = []
        items += self.system.sides
        items += self.system.drinks

        for item in items:
            item.increment(1)

        for item in items:
            if item.name == "Large Fries":
                item.stock = item.stock - 1
            if item.name == "Large Orange Juice":
                item.stock = item.stock - 1

        self.order_id = self.system.create_new_order()

        order = self.system.get_order_by_id(self.order_id)

        try:
            order.set_sides(self.system.sides)
        except OutOfStockError as e:
            assert "Large Fries" in e.msg

        try:
            order.set_drinks(self.system.drinks)
        except OutOfStockError as e:
            assert "Large Orange Juice" in e.msg
Exemple #2
0
    def test_successful_order(self):
        # making an order of every item on the menu
        items = []
        items += self.system.sides
        items += self.system.drinks

        for item in items:
            item.increment(item.quantity_per_serving)

        # creating the order
        self.order_id = self.system.create_new_order()

        order = self.system.get_order_by_id(self.order_id)
        print(self.system._stock_levels)
        order.set_sides(self.system.sides)
        order.set_drinks(self.system.drinks)

        assert order.price == sum([item.price for item in items])
        assert order.status == "selection"
        assert order.sides == tuple(self.system.sides)
        assert order.drinks == tuple(self.system.drinks)

        GourmetBurgerSystem.checkout(order)

        assert order.status == "being prepared"

        #checking the stock levels after placing order
        for (key, (value, units)) in self.system._stock_levels.items():
            assert value == 0
Exemple #3
0
    def test_two_orders_with_stock(self):
        items = []
        items += self.system.sides
        items += self.system.drinks

        for item in items:
            item.increment(item.quantity_per_serving)
            item.increment(item.quantity_per_serving)

        self.order_id = self.system.create_new_order()
        order1 = self.system.get_order_by_id(self.order_id)
        self.order_id = self.system.create_new_order()
        order2 = self.system.get_order_by_id(self.order_id)
        assert order1 != order2

        # placing order 1 - valid
        order1.set_sides(self.system.sides)
        order1.set_drinks(self.system.drinks)
        assert order1.price == sum([item.price for item in items])
        assert order1.status == "selection"
        assert order1.sides == tuple(self.system.sides)
        assert order1.drinks == tuple(self.system.drinks)
        GourmetBurgerSystem.checkout(order1)
        assert order1.status == "being prepared"

        # placing order 2 - valid
        order2.set_sides(self.system.sides)
        order2.set_drinks(self.system.drinks)
        assert order2.price == sum([item.price for item in items])
        assert order2.status == "selection"
        assert order2.sides == tuple(self.system.sides)
        assert order2.drinks == tuple(self.system.drinks)
        GourmetBurgerSystem.checkout(order2)
        assert order2.status == "being prepared"
Exemple #4
0
 def test_confirmation_print_out(self):
     items = []
     items += self.system.sides
     for item in items:
         item.increment(item.quantity_per_serving)
     self.order_id = self.system.create_new_order()
     order = self.system.get_order_by_id(self.order_id)
     # print(self.system._stock_levels)
     order.set_sides(self.system.sides)
     GourmetBurgerSystem.checkout(order)
     self.system.print_order(self.order_id)
Exemple #5
0
    def test_two_orders_when_stock_runs_out(self):
        items = []
        items += self.system.sides
        items += self.system.drinks

        for item in items:
            item.increment(item.quantity_per_serving)

        self.order_id = self.system.create_new_order()
        order1 = self.system.get_order_by_id(self.order_id)
        self.order_id = self.system.create_new_order()
        order2 = self.system.get_order_by_id(self.order_id)
        assert order1 != order2

        # placing order 1 - valid
        order1.set_sides(self.system.sides)
        order1.set_drinks(self.system.drinks)
        assert order1.price == sum([item.price for item in items])
        assert order1.status == "selection"
        assert order1.sides == tuple(self.system.sides)
        assert order1.drinks == tuple(self.system.drinks)
        GourmetBurgerSystem.checkout(order1)
        assert order1.status == "being prepared"

        # placing order 2 - not valid
        try:
            order2.set_sides(self.system.sides)
        except OutOfStockError as e:
            assert "Large Fries" in e.msg

        try:
            order2.set_drinks(self.system.drinks)
        except OutOfStockError as e:
            assert "Large Orange Juice" in e.msg

        assert order2.status == "selection"
Exemple #6
0
 def _increment_all(cls, sign, items):
     for item in items:
         item.increment(sign * item.quantity_per_serving)