feat: added tests for web

This commit is contained in:
2024-11-22 22:09:10 +01:00
parent b057b70a31
commit 8d6eb3d61c
17 changed files with 61 additions and 8 deletions
+2 -5
View File
@@ -1,6 +1,7 @@
import django_filters import django_filters
from django.utils.text import gettext_lazy as _ from django.utils.text import gettext_lazy as _
from django_filters import OrderingFilter from django_filters import OrderingFilter
from shop.models import Product from shop.models import Product
@@ -9,11 +10,7 @@ class ProductFilter(django_filters.FilterSet):
field_name="name", lookup_expr="icontains", label=_("Nombre") field_name="name", lookup_expr="icontains", label=_("Nombre")
) )
tags = django_filters.BaseInFilter(field_name="tags", label=_("Etiquetas")) tags = django_filters.BaseInFilter(field_name="tags", label=_("Etiquetas"))
ordering = OrderingFilter( ordering = OrderingFilter(fields={"name": "name"})
fields={
'name': 'name'
}
)
class Meta: class Meta:
model = Product model = Product
@@ -36,5 +36,5 @@ class Migration(migrations.Migration):
), ),
migrations.RunPython( migrations.RunPython(
add_product_slug, add_product_slug,
) ),
] ]
+5 -2
View File
@@ -3,7 +3,8 @@ from uuid import uuid4
from django.db import models from django.db import models
from django.utils import timezone from django.utils import timezone
from django.utils.text import gettext_lazy as _, slugify from django.utils.text import gettext_lazy as _
from django.utils.text import slugify
class TimestampedModel(models.Model): class TimestampedModel(models.Model):
@@ -70,7 +71,9 @@ class Product(TimestampedModel):
on_delete=models.SET_NULL, on_delete=models.SET_NULL,
verbose_name=_("marca"), verbose_name=_("marca"),
) )
slug = models.SlugField(default="", blank=True, null=True, max_length=128, verbose_name=_('Slug')) slug = models.SlugField(
default="", blank=True, null=True, max_length=128, verbose_name=_("Slug")
)
def __str__(self): def __str__(self):
return self.name return self.name
View File
+31
View File
@@ -0,0 +1,31 @@
from decimal import Decimal
from django.utils.timezone import now
from shop.models import Product, ProductPrice, Tax
class CreateProductsMixin:
def create_product(
self,
sku="000001",
name="Producto 1",
description="Descripción",
price=Decimal("10.00"),
) -> Product:
tax = Tax.objects.create(
code="IVA",
value=21,
)
product = Product.objects.create(
sku=sku,
name=name,
description=description,
)
ProductPrice.objects.create(
price=price,
product=product,
date=now(),
tax=tax,
)
return product
View File
+22
View File
@@ -0,0 +1,22 @@
from django.test import TestCase
from django.urls import reverse
from shop.tests.mixins import CreateProductsMixin
class TestIndex(TestCase, CreateProductsMixin):
def setUp(self):
self.product = self.create_product()
def test_index_view(self):
response = self.client.get(reverse("shop:index"))
assert response.status_code == 200
def test_product_detail_view(self):
response = self.client.get(
reverse(
"shop:product_detail",
kwargs={"pk": self.product.pk, "slug": self.product.slug},
)
)
assert response.status_code == 200