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