winofy-backend/apps/orders/tests/test_cart.py
Ali Asadi 52adc732fa Initial Winofy backend: marketplace core (no payment integration)
Django 6 + DRF resource server against the Gooyal accounts OAuth2 service,
matching the Winsoo ecosystem's conventions. Covers locations, stores,
catalog, cart, checkout/orders (with the multi-store-cart split and the
status stepper), reviews, and notifications, plus a demo-data seed command.

Payment integration (wallet debits, online gateway, seller payouts) is
intentionally left out here — see feature/payment.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 14:03:15 +03:30

43 lines
1.6 KiB
Python

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'], [])