def test_sale_applies_to_correct_products(product_type, default_category): product = Product.objects.create(name='Test Product', price=Money(10, 'USD'), description='', pk=111, product_type=product_type, category=default_category) variant = ProductVariant.objects.create(product=product, sku='firstvar') product2 = Product.objects.create(name='Second product', price=Money(15, 'USD'), description='', product_type=product_type, category=default_category) sec_variant = ProductVariant.objects.create(product=product2, sku='secvar', pk=111) sale = Sale.objects.create(name='Test sale', value=3, type=DiscountValueType.FIXED) sale.products.add(product) assert product2 not in sale.products.all() product_discount = get_product_discount_on_sale(sale, variant.product) discounted_price = product_discount(product.price) assert discounted_price == Money(7, 'USD') with pytest.raises(NotApplicable): get_product_discount_on_sale(sale, sec_variant.product)
def test_sale_applies_to_correct_products(product_type, category): product = Product.objects.create( name="Test Product", price=Money(10, "USD"), description="", pk=111, product_type=product_type, category=category, ) variant = ProductVariant.objects.create(product=product, sku="firstvar") product2 = Product.objects.create( name="Second product", price=Money(15, "USD"), description="", product_type=product_type, category=category, ) sec_variant = ProductVariant.objects.create(product=product2, sku="secvar", pk=111) sale = Sale.objects.create(name="Test sale", value=3, type=DiscountValueType.FIXED) sale.products.add(product) assert product2 not in sale.products.all() product_discount = get_product_discount_on_sale(sale, variant.product) discounted_price = product_discount(product.price) assert discounted_price == Money(7, "USD") with pytest.raises(NotApplicable): get_product_discount_on_sale(sale, sec_variant.product)
def test_sale_applies_to_correct_products(product_type, category): product = Product.objects.create( name="Test Product", price=Money(10, "USD"), description="", pk=111, product_type=product_type, category=category, ) variant = ProductVariant.objects.create(product=product, sku="firstvar") product2 = Product.objects.create( name="Second product", price=Money(15, "USD"), description="", product_type=product_type, category=category, ) sec_variant = ProductVariant.objects.create(product=product2, sku="secvar", pk=111) sale = Sale.objects.create(name="Test sale", value=3, type=DiscountValueType.FIXED) sale.products.add(product) assert product2 not in sale.products.all() product_discount = get_product_discount_on_sale(sale, variant.product) discounted_price = product_discount(product.price) assert discounted_price == Money(7, "USD") with pytest.raises(NotApplicable): get_product_discount_on_sale(sale, sec_variant.product)
def test_sale_applies_to_correct_products(product_type, category): product = Product.objects.create( name="Test Product", price=Money(10, "MXN"), description="", pk=111, product_type=product_type, category=category, ) variant = ProductVariant.objects.create(product=product, sku="firstvar") product2 = Product.objects.create( name="Second product", price=Money(15, "MXN"), description="", product_type=product_type, category=category, ) sec_variant = ProductVariant.objects.create(product=product2, sku="secvar", pk=111) sale = Sale(name="Test sale", value=3, type=DiscountValueType.FIXED) discount = DiscountInfo(sale=sale, product_ids={product.id}, category_ids=set(), collection_ids=set()) product_discount = get_product_discount_on_sale(variant.product, discount) discounted_price = product_discount(product.price) assert discounted_price == Money(7, "MXN") with pytest.raises(NotApplicable): get_product_discount_on_sale(sec_variant.product, discount)
def test_sale_applies_to_correct_products(product_type, default_category): product = Product.objects.create( name='Test Product', price=10, description='', pk=10, product_type=product_type, category=default_category) variant = ProductVariant.objects.create(product=product, sku='firstvar') product2 = Product.objects.create( name='Second product', price=15, description='', product_type=product_type, category=default_category) sec_variant = ProductVariant.objects.create( product=product2, sku='secvar', pk=10) sale = Sale.objects.create( name='Test sale', value=5, type=DiscountValueType.FIXED) sale.products.add(product) assert product2 not in sale.products.all() product_discount = get_product_discount_on_sale(sale, variant.product) assert product_discount.amount == Price(net=5, currency='USD') with pytest.raises(NotApplicable): get_product_discount_on_sale(sale, sec_variant.product)