Example #1
0
 def test_product_with_empty_price(self):
     product_class = factories.ProductClassFactory(track_stock=False)
     product = factories.ProductFactory(product_class=product_class,
                                        stockrecords=[])
     factories.StockRecordFactory(price_excl_tax=None, product=product)
     info = self.strategy.fetch_for_product(product)
     self.assertFalse(info.availability.is_available_to_buy)
Example #2
0
 def create_digital_product(self):
     product_class = factories.ProductClassFactory(
         requires_shipping=False, track_stock=False)
     product = factories.ProductFactory(product_class=product_class)
     factories.StockRecordFactory(
         num_in_stock=None, price_excl_tax=D('12.00'), product=product)
     return product
Example #3
0
 def add_product_to_basket(self, product=None):
     if product is None:
         product = factories.ProductFactory()
         factories.StockRecordFactory(
             num_in_stock=10, price_excl_tax=D('12.00'), product=product)
     detail_page = self.get(product.get_absolute_url())
     form = detail_page.forms['add_to_basket_form']
     form.submit()
Example #4
0
 def test_availability_does_not_require_price(self):
     # regression test for https://github.com/django-oscar/django-oscar/issues/2664
     # The availability policy should be independent of price.
     product_class = factories.ProductClassFactory(track_stock=False)
     product = factories.ProductFactory(product_class=product_class,
                                        stockrecords=[])
     factories.StockRecordFactory(price_excl_tax=None, product=product)
     info = self.strategy.fetch_for_product(product)
     self.assertTrue(info.availability.is_available_to_buy)
Example #5
0
 def add_product_to_basket(self, product=None, **kwargs):
     if product is None:
         product = factories.ProductFactory()
         factories.StockRecordFactory(num_in_stock=10,
                                      price=D('12.00'),
                                      product=product)
     detail_page = self.get(product.get_absolute_url(),
                            user=kwargs.get('logged_in_user', self.user))
     form = detail_page.forms['add_to_basket_form']
     form.submit()
Example #6
0
 def create_line_models(obj, create, extracted, **kwargs):
     if not create:
         return
     if extracted:
         if not obj.basket.all_lines().exists():
             product = factories.ProductFactory(stockrecords=None)
             factories.StockRecordFactory(
                 product=product,
                 price_currency=settings.OSCAR_DEFAULT_CURRENCY)
             obj.basket.add_product(product)
         for line in obj.basket.all_lines():
             OrderCreator().create_line_models(obj, line)
    def test_works_for_standalone_product(self):
        product = factories.ProductFactory()
        factories.StockRecordFactory(product=product)

        detail_page = self.get(product.get_absolute_url())
        response = detail_page.forms['add_to_basket_form'].submit()

        self.assertIsRedirect(response)
        baskets = models.Basket.objects.all()
        self.assertEqual(1, len(baskets))

        basket = baskets[0]
        self.assertEqual(1, basket.num_items)
    def test_works_for_variant_product(self):
        parent = factories.ProductFactory()
        for x in range(3):
            variant = factories.ProductFactory(parent=parent)
            factories.StockRecordFactory(product=variant)

        detail_page = self.get(parent.get_absolute_url())
        form = detail_page.forms['add_to_basket_form']
        response = form.submit()

        self.assertIsRedirect(response)
        baskets = models.Basket.objects.all()
        self.assertEqual(1, len(baskets))

        basket = baskets[0]
        self.assertEqual(1, basket.num_items)
Example #9
0
 def test_pricing_policy_unavailable_if_no_price_excl_tax(self):
     product = factories.ProductFactory(stockrecords=[])
     factories.StockRecordFactory(price_excl_tax=None, product=product)
     info = strategy.US().fetch_for_product(product)
     self.assertFalse(info.price.exists)