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
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
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
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
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
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
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
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
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