Ejemplo n.º 1
0
    def test_drinks_out_of_stock(self):
        self.x = Order(1)

        drink1 = item.initialise_drinks(dict())[0]
        drink1.stock = drink1.quantity_per_serving - 1

        self.x.set_drinks([drink1])

        # check that checkout out fails
        with pytest.raises(OutOfStockError) as e:
            GourmetBurgerSystem.checkout(self.x)

        assert len(e.value.msg) == 1

        assert drink1.name in e.value.msg

        # check that checking the item list fails
        item_list = [drink1]
        with pytest.raises(OutOfStockError) as e:
            GourmetBurgerSystem.check_item_list(item_list)

        assert len(e.value.msg) == 1

        assert drink1.name in e.value.msg

        assert self.x.drinks == (drink1, )
        assert self.x.price == drink1.price
Ejemplo n.º 2
0
    def test_out_of_stock(self):
        empty_system = GourmetBurgerSystem()
        bun_string_list = ['Sesame bun']
        buns = [
            empty_system.get_object_by_name(bun) for bun in bun_string_list
        ]

        with pytest.raises(OutOfStockError) as e:
            GourmetBurgerSystem.check_item_list(buns)
        assert "Sesame bun" in e.value.msg
Ejemplo n.º 3
0
    def test_creation_out_of_stock(self):

        ingredients = item.initialise_ingredients(dict())
        bun = item.initialise_buns(dict())[0]

        self.x = Order(1)

        for ingredient in ingredients:
            ingredient.increment(ingredient.quantity_per_serving)

        bun.increment(bun.quantity_per_serving)

        burger = Burger(ingredients, [bun] * 2)

        wrap = Wrap(ingredients)

        self.x.set_wraps([wrap])
        self.x.set_burgers([burger])

        # check that checking out fails
        with pytest.raises(OutOfStockError) as e:
            GourmetBurgerSystem.checkout(self.x)

        assert len(e.value.msg) == len(ingredients) + 1

        for ingredient in ingredients:
            assert ingredient.name in e.value.msg

        assert bun.name in e.value.msg

        #check that checking the item list fails
        item_list = list(wrap.ingredients) + list(
            burger.ingredients) + burger.number_of_buns * [burger.bun]
        with pytest.raises(OutOfStockError) as e:
            GourmetBurgerSystem.check_item_list(item_list)

        assert len(e.value.msg) == len(ingredients) + 1

        for ingredient in ingredients:
            assert ingredient.name in e.value.msg

        assert bun.name in e.value.msg
Ejemplo n.º 4
0
def check_errors(items_dict, mains, action, adding_main):
    errors = {}
    items_required = []
    for main in mains:
        items_required += main.items

    if "Add Main" == action:
        if adding_main == 'custom_burger':
            items_required += items_dict['ingredients_list'] + items_dict[
                'buns_list']
            try:
                system.create_burger(items_dict['ingredients_list'],
                                     items_dict['buns_list'])
            except InvalidOrderError as e:
                errors['head'] = 'Invalid burger: ' + e.msg
        elif adding_main == 'custom_wrap':
            items_required += items_dict['ingredients_list']
            try:
                system.create_wrap(items_dict['ingredients_list'])
            except InvalidOrderError as e:
                errors['head'] = 'Invalid wrap: ' + e.msg
        elif adding_main == 'standard_burger':
            items_required += system.standard_burger.items
        elif adding_main == 'standard_wrap':
            items_required += system.standard_wrap.items

    else:
        items_required += items_dict['drinks_list'] + items_dict['sides_list']

    try:
        GourmetBurgerSystem.check_item_list(items_required)
    except OutOfStockError as e:
        for item in e.msg:
            errors[item] = item + ' out of stock.'

    return errors