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