Esempio n. 1
0
def test_variant_picker_data_with_translations(
    product, translated_variant_fr, settings
):
    settings.LANGUAGE_CODE = "fr"
    variant_picker_data = get_variant_picker_data(product)
    attribute = variant_picker_data["variantAttributes"][0]
    assert attribute["name"] == translated_variant_fr.name
Esempio n. 2
0
def test_variant_picker_data_price_range(product_type, category, taxes, site_settings):

    site_settings.include_taxes_in_prices = False
    site_settings.save()

    product = models.Product.objects.create(
        product_type=product_type, category=category, price=Money("15.00", "USD")
    )
    product.variants.create(sku="1")
    product.variants.create(sku="2", price_override=Money("20.00", "USD"))
    product.variants.create(sku="3", price_override=Money("11.00", "USD"))

    start = TaxedMoney(net=Money("11.00", "USD"), gross=Money("13.53", "USD"))
    stop = TaxedMoney(net=Money("20.00", "USD"), gross=Money("24.60", "USD"))

    picker_data = get_variant_picker_data(
        product, discounts=None, taxes=taxes, local_currency=None
    )

    min_price = picker_data["availability"]["priceRange"]["minPrice"]
    min_price = TaxedMoney(
        net=Money(min_price["net"], min_price["currency"]),
        gross=Money(min_price["gross"], min_price["currency"]),
    )

    max_price = picker_data["availability"]["priceRange"]["maxPrice"]
    max_price = TaxedMoney(
        net=Money(max_price["net"], max_price["currency"]),
        gross=Money(max_price["gross"], max_price["currency"]),
    )

    assert min_price == start
    assert max_price == stop
Esempio n. 3
0
def test_get_variant_picker_data_no_nested_attributes(variant, product_type,
                                                      category):
    """Ensures that if someone bypassed variant attributes checks (e.g. a raw SQL query)
    and inserted an attribute with multiple values, it doesn't return invalid data
    to the storefront that would crash it."""

    variant_attr = Attribute.objects.create(
        slug="modes",
        name="Available Modes",
        input_type=AttributeInputType.MULTISELECT)

    attr_val_1 = AttributeValue.objects.create(attribute=variant_attr,
                                               name="Eco Mode",
                                               slug="eco")
    attr_val_2 = AttributeValue.objects.create(attribute=variant_attr,
                                               name="Performance Mode",
                                               slug="power")

    product_type.variant_attributes.clear()
    product_type.variant_attributes.add(variant_attr)

    variant.attributes = {
        str(variant_attr.pk): [str(attr_val_1.pk),
                               str(attr_val_2.pk)]
    }
    variant.save(update_fields=["attributes"])

    product = variant.product
    data = get_variant_picker_data(product,
                                   discounts=None,
                                   local_currency=None)

    assert len(data["variantAttributes"]) == 0
Esempio n. 4
0
def test_get_variant_picker_data_proper_variant_count(product):
    data = get_variant_picker_data(product,
                                   discounts=None,
                                   taxes=None,
                                   local_currency=None)

    assert len(data['variantAttributes'][0]['values']) == 1
Esempio n. 5
0
def test_get_variant_picker_data_proper_variant_count(product):
    data = get_variant_picker_data(product,
                                   discounts=None,
                                   extensions=None,
                                   local_currency=None)

    assert len(data["variantAttributes"][0]["values"]) == 1
Esempio n. 6
0
def test_variant_picker_data_price_range(product_type, category):
    product = models.Product.objects.create(product_type=product_type,
                                            category=category,
                                            price=Money("15.00", "MXN"))
    product.variants.create(sku="1")
    product.variants.create(sku="2", price_override=Money("20.00", "MXN"))
    product.variants.create(sku="3", price_override=Money("11.00", "MXN"))

    start = TaxedMoney(net=Money("11.00", "MXN"), gross=Money("11.00", "MXN"))
    stop = TaxedMoney(net=Money("20.00", "MXN"), gross=Money("20.00", "MXN"))

    picker_data = get_variant_picker_data(product,
                                          discounts=None,
                                          local_currency=None)

    min_price = picker_data["availability"]["priceRange"]["minPrice"]
    min_price = TaxedMoney(
        net=Money(min_price["net"], min_price["currency"]),
        gross=Money(min_price["gross"], min_price["currency"]),
    )

    max_price = picker_data["availability"]["priceRange"]["maxPrice"]
    max_price = TaxedMoney(
        net=Money(max_price["net"], max_price["currency"]),
        gross=Money(max_price["gross"], max_price["currency"]),
    )

    assert min_price == start
    assert max_price == stop
def test_variant_picker_data_price_range(product_type, category, taxes,
                                         site_settings):

    site_settings.include_taxes_in_prices = False
    site_settings.save()

    product = models.Product.objects.create(product_type=product_type,
                                            category=category,
                                            price=Money('15.00', 'USD'))
    product.variants.create(sku='1')
    product.variants.create(sku='2', price_override=Money('20.00', 'USD'))
    product.variants.create(sku='3', price_override=Money('11.00', 'USD'))

    start = TaxedMoney(net=Money('11.00', 'USD'), gross=Money('13.53', 'USD'))
    stop = TaxedMoney(net=Money('20.00', 'USD'), gross=Money('24.60', 'USD'))

    picker_data = get_variant_picker_data(product,
                                          discounts=None,
                                          taxes=taxes,
                                          local_currency=None)

    min_price = picker_data['availability']['priceRange']['minPrice']
    min_price = TaxedMoney(net=Money(min_price['net'], min_price['currency']),
                           gross=Money(min_price['gross'],
                                       min_price['currency']))

    max_price = picker_data['availability']['priceRange']['maxPrice']
    max_price = TaxedMoney(net=Money(max_price['net'], max_price['currency']),
                           gross=Money(max_price['gross'],
                                       max_price['currency']))

    assert min_price == start
    assert max_price == stop
Esempio n. 8
0
def test_variant_picker_data_with_translations(
        product, translated_variant_fr, settings):
    settings.LANGUAGE_CODE = 'fr'
    variant_picker_data = get_variant_picker_data(product)
    attribute = variant_picker_data['variantAttributes'][0]
    assert attribute['name'] == translated_variant_fr.name
Esempio n. 9
0
def test_variant_picker_data_with_translations(
        product, translated_variant_fr, settings):
    settings.LANGUAGE_CODE = 'fr'
    variant_picker_data = get_variant_picker_data(product)
    attribute = variant_picker_data['variantAttributes'][0]
    assert attribute['name'] == translated_variant_fr.name
Esempio n. 10
0
def test_get_variant_picker_data_proper_variant_count(product):
    data = get_variant_picker_data(
        product, discounts=None, taxes=None, local_currency=None)

    assert len(data['variantAttributes'][0]['values']) == 1