def test__apply_discount_on_price_with_nonexistant_value(): discount = Discount(data=DISCOUNT_DATA) discount_value = 10 price = 200 item = {'article_id': 8, 'type': 'nonexistant', 'value': discount_value} assert discount._apply_discount_on_price(discount=item, price=price)\ == price
def test__apply_discount_on_price_with_percentage_value(): discount = Discount(data=DISCOUNT_DATA) discount_value = 10 price = 200 item = {'article_id': 8, 'type': 'percentage', 'value': discount_value} assert discount._apply_discount_on_price(discount=item, price=price)\ == (price - price * discount_value / 100)
def test__get_discount_by_article_id_with_existing_id(): discount = Discount(data=DISCOUNT_DATA) assert discount._get_discount_by_article_id(article_id=2) == { 'article_id': 2, 'type': 'amount', 'value': 25 }
def generate_output(self): articles = Articles(data=self.input_data.get('articles', [])) delivery = DeliveryFee(data=self.input_data.get('delivery_fees', [])) discount = Discount(data=self.input_data.get('discounts', [])) checkout_list = [] for cart_data in self.input_data.get('carts', []): cart = Cart(cart_id=cart_data.get('id'), items=cart_data.get('items'), articles=articles, delivery=delivery, discount=discount) checkout_list.append({'id': cart.id, 'total': cart.total}) return {'carts': checkout_list}
def test_total_with_delivery_fee(): articles = Articles(data=ARTICLES_DATA) delivery = DeliveryFee(data=DELIVERY_DATA) discount = Discount(data=[]) items = [ { 'article_id': 1, 'quantity': 6 }, { 'article_id': 2, 'quantity': 2 }, ] cart = Cart(cart_id=1, items=items, articles=articles, delivery=delivery, discount=discount) assert cart.total == (100 * 6 + 200 * 2) + 400
def test__calculate_items_total(): articles = Articles(data=ARTICLES_DATA) delivery = DeliveryFee(data=DELIVERY_DATA) discount = Discount(data=[]) items = [ { 'article_id': 1, 'quantity': 6 }, { 'article_id': 2, 'quantity': 2 }, ] cart = Cart(cart_id=1, items=items, articles=articles, delivery=delivery, discount=discount) assert cart._calculate_items_total() == 100 * 6 + 200 * 2
def test__apply_delivery_fee(): articles = Articles(data=ARTICLES_DATA) delivery = DeliveryFee(data=DELIVERY_DATA) discount = Discount(data=[]) items = [ { 'article_id': 1, 'quantity': 6 }, { 'article_id': 2, 'quantity': 2 }, ] cart = Cart(cart_id=1, items=items, articles=articles, delivery=delivery, discount=discount) cart_price = 1000 assert cart._apply_delivery_fee(price=cart_price) == cart_price + 400
def from_json_to_object(json): gama_produs = json["gama_produs"] procent = json["procent"] data_expirare = json["data_expirare"] return Discount(gama_produs, procent, data_expirare)
def test_get_article_price_without_discount(): discount = Discount(data=DISCOUNT_DATA) article = {'id': 70, 'price': 400} assert discount.get_article_price(article=article) == 400
def test__get_discount_by_article_id_with_nonexistant_id(): discount = Discount(data=DISCOUNT_DATA) assert discount._get_discount_by_article_id(article_id=1) == {}