from .base import OrdersTestCase class CartTests(OrdersTestCase): def setUp(self): self.client.force_authenticate(user=self.customer) def test_cart_groups_items_by_store(self): self.add_to_cart(self.product1, quantity=2) self.add_to_cart(self.product2, quantity=1) response = self.client.get('/api/v1/cart/') self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data['groups']), 2) self.assertEqual(response.data['grand_total'], (28_500 * 2 + 15_000) + (85_000 + 20_000)) def test_adding_same_product_twice_increments_quantity(self): self.add_to_cart(self.product1, quantity=1) self.add_to_cart(self.product1, quantity=2) response = self.client.get('/api/v1/cart/') items = response.data['groups'][0]['items'] self.assertEqual(len(items), 1) self.assertEqual(items[0]['quantity'], 3) def test_free_delivery_threshold_zeroes_delivery_fee(self): self.store1.free_delivery_threshold = 50_000 self.store1.save() self.add_to_cart(self.product1, quantity=2) # 57,000 >= 50,000 threshold response = self.client.get('/api/v1/cart/') self.assertEqual(response.data['groups'][0]['delivery_fee'], 0) def test_remove_cart_item(self): add_response = self.add_to_cart(self.product1, quantity=1) item_uuid = add_response.data['uuid'] response = self.client.delete(f'/api/v1/cart/items/{item_uuid}/') self.assertEqual(response.status_code, 204) cart_response = self.client.get('/api/v1/cart/') self.assertEqual(cart_response.data['groups'], [])