コード例 #1
0
def test_render_product_page_with_no_variant(unavailable_product, admin_client):
    product = unavailable_product
    product.is_published = True
    product.product_type.has_variants = True
    product.save()
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.VARIANTS_MISSSING
    url = reverse(
        "product:details", kwargs={"product_id": product.pk, "slug": product.get_slug()}
    )
    response = admin_client.get(url)
    assert response.status_code == 200
コード例 #2
0
def test_render_product_page_with_no_variant(
        unavailable_product, admin_client):
    product = unavailable_product
    product.is_published = True
    product.product_type.has_variants = True
    product.save()
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.VARIANTS_MISSSING
    url = reverse(
        'product:details',
        kwargs={'product_id': product.pk, 'slug': product.get_slug()})
    response = admin_client.get(url)
    assert response.status_code == 200
コード例 #3
0
def test_product_availability_status(unavailable_product, warehouse):
    product = unavailable_product
    product.product_type.has_variants = True

    # product is not published
    status = get_product_availability_status(product, "US")
    assert status == ProductAvailabilityStatus.NOT_PUBLISHED

    product.is_published = True
    product.save()

    # product has no variants
    status = get_product_availability_status(product, "US")
    assert status == ProductAvailabilityStatus.VARIANTS_MISSSING

    variant_1 = product.variants.create(sku="test-1")
    variant_2 = product.variants.create(sku="test-2")
    # create empty stock records
    stock_1 = Stock.objects.create(product_variant=variant_1,
                                   warehouse=warehouse,
                                   quantity=0)
    stock_2 = Stock.objects.create(product_variant=variant_2,
                                   warehouse=warehouse,
                                   quantity=0)

    status = get_product_availability_status(product, "US")
    assert status == ProductAvailabilityStatus.OUT_OF_STOCK

    # assign quantity to only one stock record
    stock_1.quantity = 5
    stock_1.save()
    status = get_product_availability_status(product, "US")
    assert status == ProductAvailabilityStatus.LOW_STOCK

    # both stock records have some quantity
    stock_2.quantity = 5
    stock_2.save()
    status = get_product_availability_status(product, "US")
    assert status == ProductAvailabilityStatus.READY_FOR_PURCHASE

    # set product availability date from future
    product.publication_date = datetime.date.today() + datetime.timedelta(
        days=1)
    product.save()
    status = get_product_availability_status(product, "US")
    assert status == ProductAvailabilityStatus.NOT_YET_AVAILABLE
コード例 #4
0
def test_product_availability_status(unavailable_product):
    product = unavailable_product
    product.product_type.has_variants = True

    # product is not published
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.NOT_PUBLISHED

    product.is_published = True
    product.save()

    # product has no variants
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.VARIANTS_MISSSING

    variant_1 = product.variants.create(sku='test-1')
    variant_2 = product.variants.create(sku='test-2')

    # create empty stock records
    variant_1.quantity = 0
    variant_2.quantity = 0
    variant_1.save()
    variant_2.save()
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.OUT_OF_STOCK

    # assign quantity to only one stock record
    variant_1.quantity = 5
    variant_1.save()
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.LOW_STOCK

    # both stock records have some quantity
    variant_2.quantity = 5
    variant_2.save()
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.READY_FOR_PURCHASE

    # set product availability date from future
    product.publication_date = (
        datetime.date.today() + datetime.timedelta(days=1))
    product.save()
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.NOT_YET_AVAILABLE
コード例 #5
0
def test_product_availability_status(unavailable_product):
    product = unavailable_product
    product.product_type.has_variants = True

    # product is not published
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.NOT_PUBLISHED

    product.is_published = True
    product.save()

    # product has no variants
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.VARIANTS_MISSSING

    variant_1 = product.variants.create(sku='test-1')
    variant_2 = product.variants.create(sku='test-2')

    # create empty stock records
    variant_1.quantity = 0
    variant_2.quantity = 0
    variant_1.save()
    variant_2.save()
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.OUT_OF_STOCK

    # assign quantity to only one stock record
    variant_1.quantity = 5
    variant_1.save()
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.LOW_STOCK

    # both stock records have some quantity
    variant_2.quantity = 5
    variant_2.save()
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.READY_FOR_PURCHASE

    # set product availability date from future
    product.available_on = datetime.date.today() + datetime.timedelta(days=1)
    product.save()
    status = get_product_availability_status(product)
    assert status == ProductAvailabilityStatus.NOT_YET_AVAILABLE