Example #1
0
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
Example #2
0
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)
Example #3
0
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
    }
Example #4
0
    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}
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
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)
Example #9
0
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
Example #10
0
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) == {}