chore: formatted stuff
This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
celery==5.2.7
|
celery==5.4.0
|
||||||
django==5.0.3
|
django==5.0.3
|
||||||
django-cors-headers==3.13.0
|
django-cors-headers==3.13.0
|
||||||
django-cryptography==1.1
|
django-cryptography==1.1
|
||||||
|
|||||||
+10
-5
@@ -107,13 +107,13 @@ class OrderLineViewSet(ModelViewSet):
|
|||||||
|
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
order = get_object_or_404(Order, uuid=self.kwargs.get('order_id'))
|
order = get_object_or_404(Order, uuid=self.kwargs.get("order_id"))
|
||||||
product = serializer.validated_data.get('product')
|
product = serializer.validated_data.get("product")
|
||||||
price = product.prices.last()
|
price = product.prices.last()
|
||||||
tax = price.tax.value
|
tax = price.tax.value
|
||||||
quantity = serializer.validated_data.get('quantity')
|
quantity = serializer.validated_data.get("quantity")
|
||||||
base_total = quantity * price.price
|
base_total = quantity * price.price
|
||||||
taxes = base_total * (tax / Decimal('100'))
|
taxes = base_total * (tax / Decimal("100"))
|
||||||
total = base_total + taxes
|
total = base_total + taxes
|
||||||
|
|
||||||
instance = serializer.save(
|
instance = serializer.save(
|
||||||
@@ -139,4 +139,9 @@ class OrderLineViewSet(ModelViewSet):
|
|||||||
order.save()
|
order.save()
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return super().get_queryset().select_related('order').filter(order__uuid=self.kwargs.get("order_id"))
|
return (
|
||||||
|
super()
|
||||||
|
.get_queryset()
|
||||||
|
.select_related("order")
|
||||||
|
.filter(order__uuid=self.kwargs.get("order_id"))
|
||||||
|
)
|
||||||
|
|||||||
@@ -61,11 +61,11 @@ class TestOrdersAPI(APITestCase, TestUserAuthenticationMixin):
|
|||||||
"shipping_country": self.customer.country,
|
"shipping_country": self.customer.country,
|
||||||
"shipping_zip": self.customer.zip,
|
"shipping_zip": self.customer.zip,
|
||||||
"contact_phone": "612345678",
|
"contact_phone": "612345678",
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
assert response.status_code == status.HTTP_201_CREATED
|
assert response.status_code == status.HTTP_201_CREATED
|
||||||
pk = response.data.get('uuid')
|
pk = response.data.get("uuid")
|
||||||
|
|
||||||
response = self.client.get(f"/api/v1/shop/orders/{pk}/")
|
response = self.client.get(f"/api/v1/shop/orders/{pk}/")
|
||||||
assert response.status_code == status.HTTP_200_OK
|
assert response.status_code == status.HTTP_200_OK
|
||||||
@@ -88,34 +88,36 @@ class TestOrdersAPI(APITestCase, TestUserAuthenticationMixin):
|
|||||||
"shipping_country": self.customer.country,
|
"shipping_country": self.customer.country,
|
||||||
"shipping_zip": self.customer.zip,
|
"shipping_zip": self.customer.zip,
|
||||||
"contact_phone": "612345678",
|
"contact_phone": "612345678",
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
assert response.status_code == status.HTTP_201_CREATED
|
assert response.status_code == status.HTTP_201_CREATED
|
||||||
pk = response.data.get('uuid')
|
pk = response.data.get("uuid")
|
||||||
|
|
||||||
response = self.client.get(f"/api/v1/shop/orders/{pk}/")
|
response = self.client.get(f"/api/v1/shop/orders/{pk}/")
|
||||||
assert response.status_code == status.HTTP_200_OK
|
assert response.status_code == status.HTTP_200_OK
|
||||||
assert Decimal(response.data.get('base_total')) == Decimal('0.00')
|
assert Decimal(response.data.get("base_total")) == Decimal("0.00")
|
||||||
assert Decimal(response.data.get('total')) == Decimal('0.00')
|
assert Decimal(response.data.get("total")) == Decimal("0.00")
|
||||||
|
|
||||||
response = self.client.post(
|
response = self.client.post(
|
||||||
f"/api/v1/shop/orders/{pk}/lines/",
|
f"/api/v1/shop/orders/{pk}/lines/",
|
||||||
{
|
{
|
||||||
"product": self.product.pk,
|
"product": self.product.pk,
|
||||||
"quantity": "5",
|
"quantity": "5",
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
assert response.status_code == status.HTTP_201_CREATED
|
assert response.status_code == status.HTTP_201_CREATED
|
||||||
response = self.client.get(f"/api/v1/shop/orders/{pk}/lines/")
|
response = self.client.get(f"/api/v1/shop/orders/{pk}/lines/")
|
||||||
assert len(response.data.get('results')) == 1
|
assert len(response.data.get("results")) == 1
|
||||||
|
|
||||||
response = self.client.get(f"/api/v1/shop/orders/{pk}/")
|
response = self.client.get(f"/api/v1/shop/orders/{pk}/")
|
||||||
assert response.status_code == status.HTTP_200_OK
|
assert response.status_code == status.HTTP_200_OK
|
||||||
|
|
||||||
assert Decimal(response.data.get('base_total')) == Decimal('6.00')
|
assert Decimal(response.data.get("base_total")) == Decimal("6.00")
|
||||||
assert Decimal(response.data.get('total')) == Decimal('6.00') + (Decimal('6.00') * Decimal('0.21'))
|
assert Decimal(response.data.get("total")) == Decimal("6.00") + (
|
||||||
|
Decimal("6.00") * Decimal("0.21")
|
||||||
|
)
|
||||||
|
|
||||||
def test_create_delete_order_with_lines(self):
|
def test_create_delete_order_with_lines(self):
|
||||||
self.login()
|
self.login()
|
||||||
@@ -136,18 +138,18 @@ class TestOrdersAPI(APITestCase, TestUserAuthenticationMixin):
|
|||||||
"shipping_country": self.customer.country,
|
"shipping_country": self.customer.country,
|
||||||
"shipping_zip": self.customer.zip,
|
"shipping_zip": self.customer.zip,
|
||||||
"contact_phone": "612345678",
|
"contact_phone": "612345678",
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
assert response.status_code == status.HTTP_201_CREATED
|
assert response.status_code == status.HTTP_201_CREATED
|
||||||
pk = response.data.get('uuid')
|
pk = response.data.get("uuid")
|
||||||
|
|
||||||
response = self.client.get(f"/api/v1/shop/orders/{pk}/")
|
response = self.client.get(f"/api/v1/shop/orders/{pk}/")
|
||||||
assert response.status_code == status.HTTP_200_OK
|
assert response.status_code == status.HTTP_200_OK
|
||||||
|
|
||||||
# Assert order is created with 0.00€
|
# Assert order is created with 0.00€
|
||||||
assert Decimal(response.data.get('base_total')) == Decimal('0.00')
|
assert Decimal(response.data.get("base_total")) == Decimal("0.00")
|
||||||
assert Decimal(response.data.get('total')) == Decimal('0.00')
|
assert Decimal(response.data.get("total")) == Decimal("0.00")
|
||||||
|
|
||||||
# Create order line
|
# Create order line
|
||||||
response = self.client.post(
|
response = self.client.post(
|
||||||
@@ -155,21 +157,23 @@ class TestOrdersAPI(APITestCase, TestUserAuthenticationMixin):
|
|||||||
{
|
{
|
||||||
"product": self.product.pk,
|
"product": self.product.pk,
|
||||||
"quantity": "5",
|
"quantity": "5",
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
line_pk = response.data.get('id')
|
line_pk = response.data.get("id")
|
||||||
|
|
||||||
assert response.status_code == status.HTTP_201_CREATED
|
assert response.status_code == status.HTTP_201_CREATED
|
||||||
response = self.client.get(f"/api/v1/shop/orders/{pk}/lines/")
|
response = self.client.get(f"/api/v1/shop/orders/{pk}/lines/")
|
||||||
assert len(response.data.get('results')) == 1
|
assert len(response.data.get("results")) == 1
|
||||||
|
|
||||||
response = self.client.get(f"/api/v1/shop/orders/{pk}/")
|
response = self.client.get(f"/api/v1/shop/orders/{pk}/")
|
||||||
assert response.status_code == status.HTTP_200_OK
|
assert response.status_code == status.HTTP_200_OK
|
||||||
|
|
||||||
# Assert order totals are set
|
# Assert order totals are set
|
||||||
assert Decimal(response.data.get('base_total')) == Decimal('6.00')
|
assert Decimal(response.data.get("base_total")) == Decimal("6.00")
|
||||||
assert Decimal(response.data.get('total')) == Decimal('6.00') + (Decimal('6.00') * Decimal('0.21'))
|
assert Decimal(response.data.get("total")) == Decimal("6.00") + (
|
||||||
|
Decimal("6.00") * Decimal("0.21")
|
||||||
|
)
|
||||||
|
|
||||||
# Delete line
|
# Delete line
|
||||||
response = self.client.delete(f"/api/v1/shop/orders/{pk}/lines/{line_pk}/")
|
response = self.client.delete(f"/api/v1/shop/orders/{pk}/lines/{line_pk}/")
|
||||||
@@ -179,5 +183,5 @@ class TestOrdersAPI(APITestCase, TestUserAuthenticationMixin):
|
|||||||
assert response.status_code == status.HTTP_200_OK
|
assert response.status_code == status.HTTP_200_OK
|
||||||
|
|
||||||
# Assert order totals are 0.00
|
# Assert order totals are 0.00
|
||||||
assert Decimal(response.data.get('base_total')) == Decimal('0.00')
|
assert Decimal(response.data.get("base_total")) == Decimal("0.00")
|
||||||
assert Decimal(response.data.get('total')) == Decimal('0.00')
|
assert Decimal(response.data.get("total")) == Decimal("0.00")
|
||||||
|
|||||||
@@ -5,11 +5,14 @@ from django.urls import reverse
|
|||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
from tpv.models import PaymentTransaction
|
from tpv.models import PaymentTransaction
|
||||||
from tpv.redsys import RedsysClient
|
from tpv.redsys import RedsysClient
|
||||||
from tpv.settings import ERROR_CODES
|
from tpv.settings import ERROR_CODES
|
||||||
|
|
||||||
|
from tpv.utils import validate_expiry_date
|
||||||
|
|
||||||
|
|
||||||
class TestRedsysTPV(APITestCase):
|
class TestRedsysTPV(APITestCase):
|
||||||
def test_redsys_client(self):
|
def test_redsys_client(self):
|
||||||
@@ -179,3 +182,14 @@ class TestRedsysTPV(APITestCase):
|
|||||||
reverse("tpv:ko", kwargs={"transaction": transaction.hash})
|
reverse("tpv:ko", kwargs={"transaction": transaction.hash})
|
||||||
)
|
)
|
||||||
assert response.status_code == status.HTTP_200_OK
|
assert response.status_code == status.HTTP_200_OK
|
||||||
|
|
||||||
|
def test_expiry_date(self):
|
||||||
|
now = timezone.now()
|
||||||
|
previous_year = str(now.year - 1).rjust(2, "0")
|
||||||
|
current_month = str(now.month).rjust(2, "0")
|
||||||
|
current_year = str(now.year)[-2:]
|
||||||
|
|
||||||
|
assert not validate_expiry_date("042024")
|
||||||
|
assert not validate_expiry_date(f"{previous_year}{current_month}")
|
||||||
|
|
||||||
|
assert validate_expiry_date(f"{current_year}{current_month}")
|
||||||
|
|||||||
+1
-6
@@ -1,12 +1,7 @@
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
from users.views import login, register, reset_password
|
|
||||||
|
|
||||||
|
|
||||||
app_name = "users"
|
app_name = "users"
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = []
|
||||||
path("login", login, name="login"),
|
|
||||||
path("sign-up", register, name="register"),
|
|
||||||
path("reset-password", reset_password, name="reset_password"),
|
|
||||||
]
|
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
from django.shortcuts import render
|
|
||||||
|
|
||||||
|
|
||||||
def login(request):
|
|
||||||
return render(request, "users/login.html", {})
|
|
||||||
|
|
||||||
|
|
||||||
def register(request):
|
|
||||||
return render(request, "users/register.html", {})
|
|
||||||
|
|
||||||
|
|
||||||
def reset_password(request):
|
|
||||||
return render(request, "users/reset_password.html", {})
|
|
||||||
|
|||||||
Reference in New Issue
Block a user