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)
Exemple #3
0
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
Exemple #6
0
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
Exemple #7
0
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