def test_calculate_prices_promotion_jarramania_3(order_promotion_jarramania): expected = Order( barista='txema', chips=[ Chips( type='deluxe', size='grandes', price=3.5, ), ], drinks=[ Drink( type='burribeer', price=2.5, ), Drink( type='burribeer', price=2.5, ), ], price=8.5, promotions=[], ) assert PromotionJarramania().is_applicable(order_promotion_jarramania) is False result = orders.calculate_prices(order=order_promotion_jarramania) assert_dicts(original=result.dict(), expected=expected.dict())
def test_calculate_prices_3(order_3): expected = Order( barista='txema', chips=[ Chips( type='deluxe', size='grandes', price=3.5, ), Chips( type='gajo', size='grandes', price=3.5, ), ], drinks=[ Drink( type='burribeer', price=2.5, ), ], price=9.5, promotions=[], ) result = orders.calculate_prices(order=order_3) assert_dicts(original=result.dict(), expected=expected.dict())
def add_order(order: Order, ) -> Order: """ Add a new document at mongoDB. :param Order order: order :return Order: order inserted """ collection = _get_mongo_db_client()[os.getenv('MONGODB_COLLECTION')] now = datetime.now() order.dt_created = now.strftime("%Y-%m-%d %H:%M:%S") collection.insert_one( document=dict(_id=ObjectId.from_datetime(now), **order.dict())) return order
def test_calculate_prices_2(order_2): expected = Order( barista='txema', hamburgers=[ Hamburger( meats=[ Meat( type='cerdo', size='250g', cooked='al punto', price=2.5, ), Meat( type='cerdo', size='380g', cooked='al punto', price=3.5, ), ], extra_tomato=ExtraTomato( type='normal', price=1.0, ), price=12.0 * (100 - 15) / 100, ), ], chips=[ Chips( type='de la abuela', size='grandes', price=3.5, ), ], drinks=[ Drink( type='burribeer', price=2.5, ), ], price=16.2, promotions=['burrimenu'], ) result = orders.calculate_prices(order=order_2) assert_dicts(original=result.dict(), expected=expected.dict())
def test_calculate_prices_promotion_burrimenu(order_promotion_menu): expected = Order( barista='txema', hamburgers=[ Hamburger( meats=[ Meat( type='pollo', size='250g', cooked='al punto', price=2.5, ) ], extra_cheese=ExtraCheese( type='cheddar', price=1.5, ), extra_tomato=ExtraTomato( type='normal', price=1.0, ), price=10.0 * (100 - 15) / 100, ), ], chips=[ Chips( type='gajo', size='pequeñas', price=2.5, ), ], drinks=[ Drink( type='burribeer', price=2.5, ), ], price=13.5, promotions=['burrimenu'], ) assert PromotionBurrimenu().is_applicable( order=order_promotion_menu) is True result = orders.calculate_prices(order=order_promotion_menu) assert_dicts(original=result.dict(), expected=expected.dict())
def test_calculate_prices_1(order_1): expected = Order( barista='txema', hamburgers=[ Hamburger( meats=[ Meat( type='pollo', size='250g', cooked='al punto', price=2.5, ) ], extra_cheese=ExtraCheese( type='cheddar', price=1.5, ), extra_tomato=ExtraTomato( type='normal', price=1.0, ), price=10.0, ), ], chips=[ Chips( type='gajo', size='pequeñas', price=2.5, ), ], price=12.5, promotions=[], ) result = orders.calculate_prices(order=order_1) assert_dicts(original=result.dict(), expected=expected.dict())