Пример #1
0
def test_limited_methods():
    """
    Test that products can declare that they limit available shipping methods.
    """
    unique_shipping_method = ShippingMethod(tax_class=get_default_tax_class(), module_data={"price": 0})
    unique_shipping_method.save()
    shop = get_default_shop()
    common_product = create_product(sku="SH_COMMON", shop=shop)  # A product that does not limit shipping methods
    unique_product = create_product(sku="SH_UNIQUE", shop=shop)  # A product that only supports unique_shipping_method
    unique_shop_product = unique_product.get_shop_instance(shop)
    unique_shop_product.limit_shipping_methods = True
    unique_shop_product.shipping_methods.add(unique_shipping_method)
    unique_shop_product.save()
    impossible_product = create_product(sku="SH_IMP", shop=shop)  # A product that can't be shipped at all
    imp_shop_product = impossible_product.get_shop_instance(shop)
    imp_shop_product.limit_shipping_methods = True
    imp_shop_product.save()
    for product_ids, method_ids in [
        ((common_product.pk, unique_product.pk), (unique_shipping_method.pk,)),
        ((common_product.pk,), ShippingMethod.objects.values_list("pk", flat=True)),
        ((unique_product.pk,), (unique_shipping_method.pk,)),
        ((unique_product.pk, impossible_product.pk,), ()),
        ((common_product.pk, impossible_product.pk,), ()),
    ]:
        product_ids = set(product_ids)
        assert ShippingMethod.objects.available_ids(shop=shop, products=product_ids) == set(method_ids)
Пример #2
0
def get_expensive_sweden_shipping_method():
    sm = ShippingMethod(
        identifier=ExpensiveSwedenShippingModule.identifier,
        module_identifier=ExpensiveSwedenShippingModule.identifier,
        tax_class=get_default_tax_class(),
    )
    sm.module_data = {"min_weight": "0.11000000", "max_weight": "3.00000000", "price_waiver_product_minimum": "370"}
    sm.save()
    return sm
Пример #3
0
def get_expensive_sweden_shipping_method():
    sm = ShippingMethod(
        identifier=ExpensiveSwedenShippingModule.identifier,
        module_identifier=ExpensiveSwedenShippingModule.identifier,
        tax_class=get_default_tax_class())
    sm.module_data = {
        "min_weight": "0.11000000",
        "max_weight": "3.00000000",
        "price_waiver_product_minimum": "370"
    }
    sm.save()
    return sm
Пример #4
0
def test_limited_methods():
    """
    Test that products can declare that they limit available shipping methods.
    """
    unique_shipping_method = ShippingMethod(tax_class=get_default_tax_class(),
                                            module_data={"price": 0})
    unique_shipping_method.save()
    shop = get_default_shop()
    common_product = create_product(
        sku="SH_COMMON",
        shop=shop)  # A product that does not limit shipping methods
    unique_product = create_product(
        sku="SH_UNIQUE",
        shop=shop)  # A product that only supports unique_shipping_method
    unique_shop_product = unique_product.get_shop_instance(shop)
    unique_shop_product.limit_shipping_methods = True
    unique_shop_product.shipping_methods.add(unique_shipping_method)
    unique_shop_product.save()
    impossible_product = create_product(
        sku="SH_IMP", shop=shop)  # A product that can't be shipped at all
    imp_shop_product = impossible_product.get_shop_instance(shop)
    imp_shop_product.limit_shipping_methods = True
    imp_shop_product.save()
    for product_ids, method_ids in [
        ((common_product.pk, unique_product.pk),
         (unique_shipping_method.pk, )),
        ((common_product.pk, ),
         ShippingMethod.objects.values_list("pk", flat=True)),
        ((unique_product.pk, ), (unique_shipping_method.pk, )),
        ((
            unique_product.pk,
            impossible_product.pk,
        ), ()),
        ((
            common_product.pk,
            impossible_product.pk,
        ), ()),
    ]:
        product_ids = set(product_ids)
        assert ShippingMethod.objects.available_ids(
            shop=shop, products=product_ids) == set(method_ids)