Ejemplo n.º 1
0
    def test_add_stock_with_different_price_creates_new_product(self):
        product = ProductFactory(order_round=None, base_price=1)
        ProductStockFactory(product=product, amount=5)
        self.assertEqual(product.all_stock(), 5)

        ret = self.client.post(self.url, data={
            'amount': 7,
            'product_id': product.id,
            'type': 'added',
            'notes': "foo",
            'base_price': "1.5"  # different than '1'
        })

        self.assertEqual(ret.status_code, 201)
        prod_stock = ProductStock.objects.last()

        self.assertEqual(ProductStock.objects.count(), 2)

        new_product = Product.objects.last()

        self.assertEqual(prod_stock.product, new_product)
        self.assertEqual(prod_stock.type, 'added')
        self.assertEqual(prod_stock.amount, 7)
        self.assertEqual(prod_stock.notes, 'foo')

        self.assertEqual(product.all_stock(), 5)
        self.assertEqual(new_product.all_stock(), 7)

        # Check cloned product
        self.assertEqual(new_product.base_price, 1.5)
        self.assertEqual(new_product.name, product.name)
        self.assertEqual(new_product.unit, product.unit)
        self.assertEqual(new_product.unit_amount, product.unit_amount)
        self.assertEqual(new_product.supplier, product.supplier)
        self.assertEqual(new_product.order_round, product.order_round)
        self.assertEqual(new_product.category, product.category)
        self.assertEqual(new_product.new, product.new)
        self.assertEqual(new_product.maximum_total_order,
                         product.maximum_total_order)
        self.assertEqual(new_product.enabled, product.enabled)
Ejemplo n.º 2
0
    def test_subtract_stock(self):
        product = ProductFactory(order_round=None)
        ProductStockFactory(product=product, amount=5)
        self.assertEqual(product.all_stock(), 5)

        ret = self.client.post(self.url, data={
            'amount': 3,
            'product_id': product.id,
            'type': 'lost',
            'notes': "foo",
            'base_price': str(product.base_price)
        })

        self.assertEqual(ret.status_code, 201)
        prod_stock = ProductStock.objects.last()

        self.assertEqual(ProductStock.objects.count(), 2)

        self.assertEqual(prod_stock.product, product)
        self.assertEqual(prod_stock.type, 'lost')
        self.assertEqual(prod_stock.amount, 3)
        self.assertEqual(prod_stock.notes, 'foo')

        self.assertEqual(product.all_stock(), 2)
Ejemplo n.º 3
0
    def test_new_stock(self):
        product = ProductFactory(order_round=None)
        self.assertFalse(ProductStock.objects.all())
        self.assertEqual(product.all_stock(), 0)

        ret = self.client.post(self.url, data={
            'amount': 10,
            'product_id': product.id,
            'type': 'added',
            'notes': "foo",
            'base_price': str(product.base_price)
        })

        self.assertEqual(ret.status_code, 201)
        prod_stock = ProductStock.objects.first()

        self.assertCountEqual(product.stock.all(),
                              (prod_stock,))

        self.assertEqual(prod_stock.product, product)
        self.assertEqual(prod_stock.type, 'added')
        self.assertEqual(prod_stock.amount, 10)
        self.assertEqual(prod_stock.notes, 'foo')
        self.assertEqual(product.all_stock(), 10)