def test_amount_4(self): """Manage stock amount; refresh to 2 but no product is there anymore. """ self.p1.manage_stock_amount = True self.p1.stock_amount = 1 self.p1.save() rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 1}) request.session = self.session request.user = self.user # Add product to cart result = add_to_cart(request) cart = muecke.cart.utils.get_cart(request) self.assertEqual(cart.get_amount_of_items(), 1.0) self.p1.stock_amount = 0 self.p1.save() # Try to increase item to two, but there is no product in stock anymore request = rf.post("/", {"product_id": self.p1.id, "amount-cart-item_%s" % cart.get_items()[0].id: 2}) request.session = self.session request.user = self.user # Refresh to amount of two is not possible result = simplejson.loads(refresh_cart(request).content) self.assertEqual(result.get("message"), "Sorry, but 'Product 1' is not available anymore.") self.assertEqual(cart.get_amount_of_items(), 0.0)
def test_amount_1(self): """Don't manage stock amount. """ rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 1}) request.session = self.session request.user = self.user # Add product to cart result = add_to_cart(request) cart = muecke.cart.utils.get_cart(request) self.assertEqual(cart.get_amount_of_items(), 1.0) # Refresh item amount request = rf.post( "/", { "product_id": self.p1.id, "amount-cart-item_%s" % cart.get_items()[0].id: 2 }) request.session = self.session request.user = self.user refresh_cart(request) self.assertEqual(cart.get_amount_of_items(), 2.0)
def test_amount_4(self): """Manage stock amount; refresh to 2 but no product is there anymore. """ self.p1.manage_stock_amount = True self.p1.stock_amount = 1 self.p1.save() rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 1}) request.session = self.session request.user = self.user # Add product to cart result = add_to_cart(request) cart = muecke.cart.utils.get_cart(request) self.assertEqual(cart.get_amount_of_items(), 1.0) self.p1.stock_amount = 0 self.p1.save() # Try to increase item to two, but there is no product in stock anymore request = rf.post( "/", { "product_id": self.p1.id, "amount-cart-item_%s" % cart.get_items()[0].id: 2 }) request.session = self.session request.user = self.user # Refresh to amount of two is not possible result = simplejson.loads(refresh_cart(request).content) self.assertEqual(result.get("message"), "Sorry, but 'Product 1' is not available anymore.") self.assertEqual(cart.get_amount_of_items(), 0.0)
def test_amount_3(self): """Manage stock amount; refresh to 3 only 2 products there. """ self.p1.manage_stock_amount = True self.p1.stock_amount = 2 self.p1.save() rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 1}) request.session = self.session request.user = self.user # Add product to cart result = add_to_cart(request) cart = muecke.cart.utils.get_cart(request) self.assertEqual(cart.get_amount_of_items(), 1.0) # Increase items to two request = rf.post("/", {"product_id": self.p1.id, "amount-cart-item_%s" % cart.get_items()[0].id: 2}) request.session = self.session request.user = self.user # Refresh to amount of two is possible result = simplejson.loads(refresh_cart(request).content) self.assertEqual(result.get("message"), "") self.assertEqual(cart.get_amount_of_items(), 2.0) # Try to increase item to 3, but there are only 2 in stock request = rf.post("/", {"product_id": self.p1.id, "amount-cart-item_%s" % cart.get_items()[0].id: 3}) request.session = self.session request.user = self.user result = simplejson.loads(refresh_cart(request).content) self.assertEqual(result.get("message"), "Sorry, but \'Product 1\' is only 2.0 times available.") # And the amount of the item is still 2.0 self.assertEqual(cart.get_amount_of_items(), 2.0) # If the product is ordered the customer can add it into cart again self.p1.order_time = self.dt self.p1.save() result = simplejson.loads(refresh_cart(request).content) self.assertEqual(result.get("message"), "") self.assertEqual(cart.get_amount_of_items(), 3.0) # Or if LFS not managing stock amount the product can be added to the cart self.p1.order_time = None self.p1.manage_stock_amount = False self.p1.save() result = simplejson.loads(refresh_cart(request).content) self.assertEqual(result.get("message"), "") self.assertEqual(cart.get_amount_of_items(), 3.0)
def test_amount_2(self): """Manage stock amount; refresh to 2 only 1 products there. """ self.p1.manage_stock_amount = True self.p1.stock_amount = 1 self.p1.save() rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 1}) request.session = self.session request.user = self.user # Add product to cart result = add_to_cart(request) cart = muecke.cart.utils.get_cart(request) self.assertEqual(cart.get_amount_of_items(), 1.0) # Try to increase item to two, but there is only one in stock request = rf.post( "/", { "product_id": self.p1.id, "amount-cart-item_%s" % cart.get_items()[0].id: 2 }) request.session = self.session request.user = self.user # This results into a message to the customer result = simplejson.loads(refresh_cart(request).content) self.assertEqual( result.get("message"), "Sorry, but \'Product 1\' is only one time available.") # And the amount of the item is still 1.0 self.assertEqual(cart.get_amount_of_items(), 1.0) # If the product is ordered the customer can add it into cart again self.p1.order_time = self.dt self.p1.save() result = simplejson.loads(refresh_cart(request).content) self.assertEqual(result.get("message"), "") self.assertEqual(cart.get_amount_of_items(), 2.0) # Or if LFS not managing stock amount the product can be added to the cart self.p1.order_time = None self.p1.manage_stock_amount = False self.p1.save() result = simplejson.loads(refresh_cart(request).content) self.assertEqual(result.get("message"), "") self.assertEqual(cart.get_amount_of_items(), 2.0)
def test_add_to_cart_stock_2(self): """Try to add product three times to cart if only two is in stock. """ self.p1.active = True self.p1.deliverable = True self.p1.manage_stock_amount = True self.p1.stock_amount = 2 self.p1.save() rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 3}) request.session = self.session request.user = self.user # This need to result in a message to the customer result = add_to_cart(request) self.failIf(result.cookies.get("message").__str__().find("Sorry%2C%20but%20%27Product%201%27%20is%20only%202.0%20times%20available.") == -1) # But no message if product is ordered ... self.p1.order_time = self.dt self.p1.save() result = add_to_cart(request) self.failIf("message" in result.cookies) # ... or LFS doesn't manage stock amount self.p1.manage_stock_amount = False self.p1.order_time = None self.p1.save() result = add_to_cart(request) self.failIf("message" in result.cookies)
def test_add_to_cart_stock_2(self): """Try to add product three times to cart if only two is in stock. """ self.p1.active = True self.p1.deliverable = True self.p1.manage_stock_amount = True self.p1.stock_amount = 2 self.p1.save() rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 3}) request.session = self.session request.user = self.user # This need to result in a message to the customer result = add_to_cart(request) self.failIf( result.cookies.get("message").__str__().find( "Sorry%2C%20but%20%27Product%201%27%20is%20only%202.0%20times%20available." ) == -1) # But no message if product is ordered ... self.p1.order_time = self.dt self.p1.save() result = add_to_cart(request) self.failIf("message" in result.cookies) # ... or LFS doesn't manage stock amount self.p1.manage_stock_amount = False self.p1.order_time = None self.p1.save() result = add_to_cart(request) self.failIf("message" in result.cookies)
def test_add_to_cart_not_in_stock(self): """Try to add product to the cart which is not in stock. """ self.p1.active = True self.p1.deliverable = True self.p1.manage_stock_amount = True self.p1.stock_amount = 0 self.p1.save() rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 2}) request.session = self.session request.user = self.user self.assertRaises(Http404, add_to_cart, request) # But no message if product is ordered ... self.p1.order_time = self.dt self.p1.save() result = add_to_cart(request) self.failIf("message" in result.cookies) # ... or LFS doesn't manage stock amount self.p1.manage_stock_amount = False self.p1.order_time = None self.p1.save() result = add_to_cart(request) self.failIf("message" in result.cookies)
def test_add_to_cart_non_active(self): """Try to add product to the cart which is not active. """ rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 1}) request.session = self.session request.user = self.user self.assertRaises(Http404, add_to_cart, request, self.p1.id)
def test_amount_1(self): """Don't manage stock amount. """ rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 1}) request.session = self.session request.user = self.user # Add product to cart result = add_to_cart(request) cart = muecke.cart.utils.get_cart(request) self.assertEqual(cart.get_amount_of_items(), 1.0) # Refresh item amount request = rf.post("/", {"product_id": self.p1.id, "amount-cart-item_%s" % cart.get_items()[0].id: 2}) request.session = self.session request.user = self.user refresh_cart(request) self.assertEqual(cart.get_amount_of_items(), 2.0)
def test_add_to_cart_not_deliverable(self): """Try to add product to the cart which is not deliverable. """ self.p1.active = True self.p1.deliverable = False self.p1.save() rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 1}) request.session = self.session request.user = self.user # Not deliverable self.assertRaises(Http404, add_to_cart, request, self.p1.id)
def test_totals_2(self): """Add a product with explicit quantity to cart """ rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id, "quantity": 2}) request.session = self.session request.user = self.user # Check we are using german locale shop = muecke_get_object_or_404(Shop, pk=1) self.assertEqual(shop.default_locale, 'en_US.UTF-8') # Added product_1 two times to cart add_to_cart(request) response = added_to_cart_items(request) self.failIf(response.find(u"Total: $20.00") == -1) # Added product_1 two times to cart again add_to_cart(request) response = added_to_cart_items(request) self.failIf(response.find(u"Total: $40.00") == -1)
def test_totals_1(self): """Add a product without quantity to cart (implicit 1) """ rf = RequestFactory() request = rf.post("/", {"product_id": self.p1.id}) request.session = self.session request.user = self.user # Added product_1 to cart add_to_cart(request) response = added_to_cart_items(request) # Check we are using german locale shop = muecke_get_object_or_404(Shop, pk=1) self.assertEqual(shop.default_locale, 'en_US.UTF-8') # need to test for two versions of currency output (Mac and Ubuntu differ) self.failIf(response.find(u"Total: $10.00") == -1) # Added product_1 to cart again add_to_cart(request) response = added_to_cart_items(request) self.failIf(response.find(u"Total: $20.00") == -1)