feat: improved coverage
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
from decimal import Decimal
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
|
||||
from shop.models import Cart, CartItem, Order, CustomerAddress, ShippingMethod, ShopSettings
|
||||
from shop.tests.mixins import CreateProductsMixin
|
||||
|
||||
|
||||
class TestOrders(TestCase, CreateProductsMixin):
|
||||
def setUp(self):
|
||||
self.product = self.create_product()
|
||||
self.user = User.objects.create_user("anakin", "anakin@skywalker.com", "ihatesand")
|
||||
self.cart_for_user = self.create_cart(user=self.user)
|
||||
self.anonymous_cart = self.create_cart()
|
||||
self.address = CustomerAddress.objects.create(
|
||||
vat_id="11111111H",
|
||||
full_name="Vader",
|
||||
address="Tatooine",
|
||||
address_town="Mos Eisley",
|
||||
address_zip="00001",
|
||||
address_state="Tatooine",
|
||||
address_country="Mos Eisley",
|
||||
address_phone="00000000",
|
||||
address_type=CustomerAddress.Types.BILLING,
|
||||
email=self.user.email,
|
||||
default=True,
|
||||
)
|
||||
self.shipping_method = self.create_shipping_method()
|
||||
self.settings = ShopSettings.load()
|
||||
self.settings.shared_secret = "sq7HjrUOBfKmC576ILgskD5srU870gJ7" # Debug secret
|
||||
self.settings.save()
|
||||
|
||||
def create_cart(self, user=None):
|
||||
cart = Cart.objects.create(
|
||||
user=user,
|
||||
)
|
||||
CartItem.objects.create(
|
||||
cart=cart,
|
||||
product=self.product,
|
||||
quantity=1,
|
||||
)
|
||||
return cart
|
||||
|
||||
def create_shipping_method(self):
|
||||
product = self.create_product(sku="SM1", name="SM1", price=Decimal("1.00"))
|
||||
method = ShippingMethod.objects.create(name="SM 1", shipping_product=product)
|
||||
return method
|
||||
|
||||
def test_logged_user_orders_page(self):
|
||||
self.client.force_login(self.user)
|
||||
response = self.client.get(reverse("web:orders"))
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_logged_user_create_get_order_page(self):
|
||||
self.client.force_login(self.user)
|
||||
response = self.client.get(reverse("web:cart_detail"))
|
||||
assert response.status_code == 200
|
||||
|
||||
# Crear pedido
|
||||
data = {
|
||||
"email": self.user.email,
|
||||
"shipping_address_full_name": self.address.full_name,
|
||||
"shipping_address": self.address.address,
|
||||
"shipping_address_town": self.address.address_town,
|
||||
"shipping_address_zip": self.address.address_zip,
|
||||
"shipping_address_state": self.address.address_state,
|
||||
"shipping_address_country": self.address.address_country,
|
||||
"shipping_address_phone": self.address.address_phone,
|
||||
"same_as_shipping": True,
|
||||
"billing_address_full_name": self.address.full_name,
|
||||
"billing_address": self.address.address,
|
||||
"billing_address_town": self.address.address_town,
|
||||
"billing_address_zip": self.address.address_zip,
|
||||
"billing_address_state": self.address.address_state,
|
||||
"billing_address_country": self.address.address_country,
|
||||
"billing_address_phone": self.address.address_phone,
|
||||
"shipping_method": self.shipping_method.pk,
|
||||
}
|
||||
|
||||
response = self.client.post(reverse("web:cart_detail"), data)
|
||||
assert response.status_code == 302
|
||||
|
||||
order = Order.objects.filter(user=self.user).first()
|
||||
assert order is not None
|
||||
|
||||
response = self.client.get(response.url)
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_logged_user_create_get_order_page_invalid_data(self):
|
||||
self.client.force_login(self.user)
|
||||
response = self.client.get(reverse("web:cart_detail"))
|
||||
assert response.status_code == 200
|
||||
|
||||
# Sin e-mail
|
||||
data = {
|
||||
"shipping_address_full_name": self.address.full_name,
|
||||
"shipping_address": self.address.address,
|
||||
"shipping_address_town": self.address.address_town,
|
||||
"shipping_address_zip": self.address.address_zip,
|
||||
"shipping_address_state": self.address.address_state,
|
||||
"shipping_address_country": self.address.address_country,
|
||||
"shipping_address_phone": self.address.address_phone,
|
||||
"same_as_shipping": True,
|
||||
"billing_address_full_name": self.address.full_name,
|
||||
"billing_address": self.address.address,
|
||||
"billing_address_town": self.address.address_town,
|
||||
"billing_address_zip": self.address.address_zip,
|
||||
"billing_address_state": self.address.address_state,
|
||||
"billing_address_country": self.address.address_country,
|
||||
"billing_address_phone": self.address.address_phone,
|
||||
"shipping_method": self.shipping_method.pk,
|
||||
}
|
||||
|
||||
response = self.client.post(reverse("web:cart_detail"), data)
|
||||
assert response.status_code == 200
|
||||
|
||||
assert not Order.objects.filter(user=self.user).exists()
|
||||
Reference in New Issue
Block a user