示例#1
0
    def test_for_empty_price_excl_tax(self):
        basket = factories.BasketFactory()
        product_class = factories.ProductClassFactory(track_stock=False)
        product = factories.ProductFactory(product_class=product_class, stockrecords=[])
        factories.StockRecordFactory.build(price_excl_tax=None, product=product)

        data = {'quantity': 1}
        form = forms.AddToBasketForm(basket=basket, product=product, data=data)
        self.assertFalse(form.is_valid())
        self.assertEqual(form.errors['__all__'][0], 'unavailable')
示例#2
0
    def setUp(self):
        # Override all loggers, suppressing logging calls of severity CRITICAL and below
        logging.disable(logging.CRITICAL)

        user = User.objects.create_user(username='******',
                                        email='*****@*****.**',
                                        password='******')

        self.product_class = factories.ProductClassFactory(
            name='Seat', requires_shipping=False, track_stock=False)

        product_attribute = factories.ProductAttributeFactory(
            name='course_key',
            code='course_key',
            product_class=self.product_class,
            type='text')

        fried_chicken = factories.ProductFactory(
            structure='parent',
            title=u'𝑭𝒓𝒊𝒆𝒅 𝑪𝒉𝒊𝒄𝒌𝒆𝒏',
            product_class=self.product_class,
            stockrecords=None,
        )

        factories.ProductAttributeValueFactory(
            attribute=product_attribute,
            product=fried_chicken,
            value_text='pollos/chickenX/2015')

        pollos_hermanos = factories.ProductFactory(
            structure='child',
            parent=fried_chicken,
            title=u'𝕃𝕠𝕤 ℙ𝕠𝕝𝕝𝕠𝕤 ℍ𝕖𝕣𝕞𝕒𝕟𝕠𝕤',
            stockrecords__partner_sku=u'ṠÖṀЁṪḦЇṄĠ⸚ḊЁḶЇĊЇÖÜṠ',
            stockrecords__price_excl_tax=D('9.99'),
        )

        self.attribute_value = factories.ProductAttributeValueFactory(
            attribute=product_attribute,
            product=pollos_hermanos,
            value_text='pollos/hermanosX/2015')

        self.basket = factories.create_basket(empty=True)
        self.basket.add_product(pollos_hermanos, 1)

        self.order = factories.create_order(number=self.ORDER_NUMBER,
                                            basket=self.basket,
                                            user=user)
        # the processor will pass through a string representation of this
        self.order_total = unicode(self.order.total_excl_tax)

        # Remove logger override
        self.addCleanup(logging.disable, logging.NOTSET)
    def test_attributes_refresh(self):
        product_class = factories.ProductClassFactory()
        product_class.attributes.create(name='a1', code='a1', required=True)
        product = factories.ProductFactory(product_class=product_class)
        product.attr.a1 = "v1"
        product.attr.save()

        product_attr = ProductAttribute.objects.get(code="a1", product=product)
        product_attr.save_value(product, "v2")
        assert product.attr.a1 == "v1"

        product.attr.refresh()
        assert product.attr.a1 == "v2"
示例#4
0
    def test_are_stock_allocations_available_track_stock_off(self):
        product_class = factories.ProductClassFactory(requires_shipping=False,
                                                      track_stock=False)
        product = factories.ProductFactory(product_class=product_class)
        basket = factories.create_basket(empty=True)
        add_product(basket, D('10.00'), 5, product=product)
        order = factories.create_order(basket=basket)

        line = order.lines.get()
        self.assertEqual(
            self.handler.are_stock_allocations_available([line], [105]),
            True,
        )
示例#5
0
    def test_cancel_stock_allocations_without_line_arguments(self):
        product_class = factories.ProductClassFactory(requires_shipping=False,
                                                      track_stock=True)
        product = factories.ProductFactory(product_class=product_class)
        basket = factories.create_basket(empty=True)
        add_product(basket, D('10.00'), 5, product=product)
        order = factories.create_order(basket=basket)

        stockrecord = product.stockrecords.get()
        num_allocated = stockrecord.num_allocated

        self.handler.cancel_stock_allocations(order)

        stockrecord.refresh_from_db()
        self.assertEqual(stockrecord.num_allocated, num_allocated - 5,
                         "Allocated stock should have decreased, but didn't.")
    def test_attributes_initialised_before_write(self):
        # Regression test for https://github.com/django-oscar/django-oscar/issues/3258
        product_class = factories.ProductClassFactory()
        product_class.attributes.create(name='a1', code='a1', required=True)
        product_class.attributes.create(name='a2', code='a2', required=False)
        product_class.attributes.create(name='a3', code='a3', required=True)
        product = factories.ProductFactory(product_class=product_class)
        product.attr.a1 = "v1"
        product.attr.a3 = "v3"
        product.attr.save()

        product = Product.objects.get(pk=product.pk)
        product.attr.a1 = "v2"
        product.attr.a3 = "v6"
        product.attr.save()

        product = Product.objects.get(pk=product.pk)
        assert product.attr.a1 == "v2"
        assert product.attr.a3 == "v6"
示例#7
0
    def test_cancel_stock_allocations_track_stock_off(self):
        product_class = factories.ProductClassFactory(requires_shipping=False,
                                                      track_stock=False)
        product = factories.ProductFactory(product_class=product_class)
        basket = factories.create_basket(empty=True)
        add_product(basket, D('10.00'), 5, product=product)
        order = factories.create_order(basket=basket)

        stockrecord = product.stockrecords.get()
        num_allocated = stockrecord.num_allocated

        lines = order.lines.all()
        self.handler.cancel_stock_allocations(
            order, lines, [line.quantity for line in lines])

        stockrecord.refresh_from_db()
        self.assertEqual(
            stockrecord.num_allocated, num_allocated,
            "Allocated stock shouldn't have changed, but it did.")
示例#8
0
文件: mixins.py 项目: wkoha/ecommerce
    def setUp(self):
        super(BasketCreationMixin, self).setUp()

        product_class = factories.ProductClassFactory(name=u'𝑨𝒖𝒕𝒐𝒎𝒐𝒃𝒊𝒍𝒆',
                                                      requires_shipping=False,
                                                      track_stock=False)
        self.base_product = factories.ProductFactory(
            structure='parent',
            title=u'𝑳𝒂𝒎𝒃𝒐𝒓𝒈𝒉𝒊𝒏𝒊 𝑮𝒂𝒍𝒍𝒂𝒓𝒅𝒐',
            product_class=product_class,
            stockrecords=None,
        )
        self.free_product = factories.ProductFactory(
            structure='child',
            parent=self.base_product,
            title=u'𝑪𝒂𝒓𝒅𝒃𝒐𝒂𝒓𝒅 𝑪𝒖𝒕𝒐𝒖𝒕',
            stockrecords__partner_sku=self.FREE_SKU,
            stockrecords__price_excl_tax=Decimal('0.00'),
        )
示例#9
0
    def setUp(self):
        super(BasketCreationMixin, self).setUp()

        self.user = self.create_user()

        product_class = factories.ProductClassFactory(name=u'Áutomobilé',
                                                      requires_shipping=False,
                                                      track_stock=False)
        self.base_product = factories.ProductFactory(
            structure='parent',
            title=u'Lamborghinï Gallardœ',
            product_class=product_class,
            stockrecords=None,
        )
        self.free_product = factories.ProductFactory(
            structure='child',
            parent=self.base_product,
            title='Cardboard Cutout',
            stockrecords__partner_sku=self.FREE_SKU,
            stockrecords__price_excl_tax=Decimal('0.00'),
        )
示例#10
0
    def setUp(self):
        user = UserFactory()
        self.product_class = factories.ProductClassFactory(
            name='Seat', requires_shipping=False, track_stock=False
        )

        self.course = factories.ProductFactory(
            structure='parent', upc='001', title='EdX DemoX Course', product_class=self.product_class
        )
        self.seat = factories.ProductFactory(
            structure='child',
            upc='002',
            title='Seat in EdX DemoX Course with Honor Certificate',
            product_class=None,
            parent=self.course
        )
        for stock_record in self.seat.stockrecords.all():
            stock_record.price_currency = 'USD'
            stock_record.save()

        basket = BasketFactory()
        basket.add_product(self.seat, 1)
        self.order = factories.create_order(number=1, basket=basket, user=user)
 def setUp(self):
     self.product_class = factories.ProductClassFactory()
 def setUp(self):
     self.product_class = factories.ProductClassFactory()
     self.product = factories.create_product(
         product_class=self.product_class)
     self.option = factories.OptionFactory()
示例#13
0
 def setUp(self):
     self.product_class = factories.ProductClassFactory(
         requires_shipping=False, track_stock=False)
示例#14
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)
示例#15
0
 def setUp(self):
     self.product_class = oscar_factories.ProductClassFactory()
     self.user = oscar_factories.UserFactory()
示例#16
0
 def setUp(self):
     product_class = factories.ProductClassFactory(
         requires_shipping=False, track_stock=False)
     self.product = factories.ProductFactory(product_class=product_class)
     self.stockrecord = factories.create_stockrecord(
         self.product, price_excl_tax=D('10.00'), num_in_stock=10)