Beispiel #1
0
def test_product_copy_stock_managed(rf, admin_user):
    shop = factories.get_default_shop()
    supplier = get_simple_supplier()
    request = apply_request_middleware(rf.get("/", {}), user=admin_user)
    price = 10
    product = factories.create_product("product",
                                       shop=shop,
                                       supplier=supplier,
                                       default_price=price)

    shop_product = product.get_shop_instance(shop)

    assert Product.objects.count() == 1
    view_func = ProductCopyView.as_view()
    response = view_func(request, pk=shop_product.pk)
    if hasattr(response, "render"):
        response.render()

    assert Product.objects.count() == 2
    new_product = Product.objects.first()
    new_shop_product = new_product.get_shop_instance(shop)
    assert new_product
    assert new_product.pk != product.pk
    assert new_product.name == product.name
    assert new_shop_product
    assert new_shop_product.suppliers.first() == shop_product.suppliers.first()
    origin_product_stock_count = StockCount.objects.get_or_create(
        supplier=supplier, product=product)[0]
    new_product_stock_count = StockCount.objects.get_or_create(
        supplier=supplier, product=new_product)[0]
    assert origin_product_stock_count.stock_managed == new_product_stock_count.stock_managed

    # Make stock not managed and re-copy original product
    assert bool(origin_product_stock_count.stock_managed)  # stock managed True
    origin_product_stock_count.stock_managed = False
    origin_product_stock_count.save()

    assert Product.objects.count() == 2
    view_func = ProductCopyView.as_view()
    response = view_func(request, pk=shop_product.pk)
    if hasattr(response, "render"):
        response.render()

    assert Product.objects.count() == 3
    new_product = Product.objects.first()
    new_product_stock_count = StockCount.objects.get_or_create(
        supplier=supplier, product=new_product)[0]
    assert not bool(new_product_stock_count.stock_managed)
Beispiel #2
0
def test_product_copy_customer_group_pricing(rf, admin_user):
    shop = factories.get_default_shop()
    supplier = factories.get_default_supplier()
    request = apply_request_middleware(rf.get("/", {}), user=admin_user)
    price = 10
    product = factories.create_product("product", shop=shop, supplier=supplier, default_price=price)

    group = factories.get_default_customer_group()
    group_price_value = 9999
    CgpPrice.objects.create(product=product, shop=shop, group=group, price_value=group_price_value)
    shop_product = product.get_shop_instance(shop)

    assert Product.objects.count() == 1
    view_func = ProductCopyView.as_view()
    response = view_func(request, pk=shop_product.pk)
    if hasattr(response, "render"):
        response.render()

    assert Product.objects.count() == 2
    new_product = Product.objects.first()
    new_shop_product = new_product.get_shop_instance(shop)
    assert new_product
    assert new_product.pk != product.pk

    group_price = CgpPrice.objects.filter(product=new_product, shop=shop, group=group).first()
    assert group_price.price_value == group_price_value
Beispiel #3
0
def test_copy_works_without_simple_supplier(rf, admin_user, settings):
    settings.INSTALLED_APPS.remove("shuup.simple_supplier")

    assert not has_installed("shuup.simple_supplier")
    shop = factories.get_default_shop()
    supplier = factories.get_default_supplier()
    request = apply_request_middleware(rf.get("/", {}), user=admin_user)
    price = 10
    product = factories.create_product("product",
                                       shop=shop,
                                       supplier=supplier,
                                       default_price=price)

    shop_product = product.get_shop_instance(shop)

    assert Product.objects.count() == 1
    view_func = ProductCopyView.as_view()
    response = view_func(request, pk=shop_product.pk)
    if hasattr(response, "render"):
        response.render()

    assert Product.objects.count() == 2

    # Add back so rest of the tests work
    settings.INSTALLED_APPS.append("shuup.simple_supplier")
def test_product_copy(rf, admin_user):
    factories.get_default_attribute_set()
    shop = factories.get_default_shop()
    supplier = factories.get_default_supplier()
    request = apply_request_middleware(rf.get("/", {}), user=admin_user)
    price = 10
    product = factories.create_product("product",
                                       shop=shop,
                                       supplier=supplier,
                                       default_price=price)

    attribute_key = "author"
    attribute_value = "batman"
    product.set_attribute_value(attribute_key, attribute_value)

    media = ProductMedia.objects.create(
        product=product,
        kind=ProductMediaKind.IMAGE,
        file=factories.get_random_filer_image(),
        enabled=True,
        public=True)
    product.primary_image = media
    product.media.add(media)
    product.save()

    category = factories.get_default_category()
    shop_product = product.get_shop_instance(shop)
    shop_product.primary_category = category
    shop_product.save()
    shop_product.categories.set([category])

    assert Product.objects.count() == 1
    view_func = ProductCopyView.as_view()
    response = view_func(request, pk=shop_product.pk)
    if hasattr(response, "render"):
        response.render()

    assert Product.objects.count() == 2
    new_product = Product.objects.first()
    new_shop_product = new_product.get_shop_instance(shop)
    assert new_product
    assert new_product.pk != product.pk
    assert new_product.name == product.name
    assert new_shop_product
    assert new_shop_product.suppliers.first() == shop_product.suppliers.first()
    assert new_shop_product.categories.first(
    ) == shop_product.categories.first()
    assert new_product.media.first().file.pk == product.media.first().file.pk
    assert new_product.get_attribute_value(attribute_key) == attribute_value