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