def test_variant_availability_status(unavailable_product): product = unavailable_product product.product_type.has_variants = True variant = product.variants.create(sku="test") variant.quantity = 0 variant.save() status = get_variant_availability_status(variant) assert status == VariantAvailabilityStatus.OUT_OF_STOCK variant.quantity = 5 variant.save() get_variant_availability_status(variant)
def test_variant_availability_status(unavailable_product): product = unavailable_product product.product_type.has_variants = True variant = product.variants.create(sku='test') variant.quantity = 0 variant.save() status = get_variant_availability_status(variant) assert status == VariantAvailabilityStatus.OUT_OF_STOCK variant.quantity = 5 variant.save() status = get_variant_availability_status(variant)
def test_variant_availability_status(stock, current_stock, expected_status): stock.quantity = current_stock stock.save(update_fields=["quantity"]) variant = stock.product_variant status = get_variant_availability_status(variant, "US") assert status == expected_status
def test_variant_is_still_available_when_another_variant_is_unavailable( product_variant_list): """ Ensure a variant is not incorrectly flagged as out of stock when another variant from the parent product is unavailable. """ unavailable_variant, available_variant = product_variant_list[:2] unavailable_variant.quantity = 0 available_variant.quantity = 1 available_variant.quantity_allocated = 0 status = get_variant_availability_status(available_variant) assert status == VariantAvailabilityStatus.AVAILABLE status = get_variant_availability_status(unavailable_variant) assert status == VariantAvailabilityStatus.OUT_OF_STOCK
def test_variant_is_out_of_stock_when_product_is_unavalable( unavailable_product): product = unavailable_product product.product_type.has_variants = True variant = product.variants.create(sku="test") variant.quantity = 0 variant.save(update_fields=["quantity"]) status = get_variant_availability_status(variant) assert status == VariantAvailabilityStatus.OUT_OF_STOCK
def test_variant_is_out_of_stock_when_product_is_unavalable( unavailable_product, warehouse): product = unavailable_product product.product_type.has_variants = True variant = product.variants.create(sku="test") Stock.objects.create(product_variant=variant, warehouse=warehouse, quantity=0) status = get_variant_availability_status(variant, "US") assert status == VariantAvailabilityStatus.OUT_OF_STOCK
def test_variant_is_still_available_when_another_variant_is_unavailable( product_variant_list, warehouse): """ Ensure a variant is not incorrectly flagged as out of stock when another variant from the parent product is unavailable. """ unavailable_variant, available_variant = product_variant_list[:2] Stock.objects.create(product_variant=unavailable_variant, warehouse=warehouse, quantity=0) Stock.objects.create( product_variant=available_variant, warehouse=warehouse, quantity=1, ) status = get_variant_availability_status(available_variant, "US") assert status == VariantAvailabilityStatus.AVAILABLE status = get_variant_availability_status(unavailable_variant, "US") assert status == VariantAvailabilityStatus.OUT_OF_STOCK
def test_variant_availability_status(variant, stock, expected_status): variant.quantity = stock variant.quantity_allocated = 0 status = get_variant_availability_status(variant) assert status == expected_status