Files
proyecto-final/tienda/tests.py
T
2026-04-16 10:17:54 +02:00

111 lines
4.8 KiB
Python

from django.test import TestCase
from .models import *
import string, random
class UserTestCase(TestCase):
def setUp(self):
User.objects.create(
username="elordenador",
first_name="Hello",
last_name="World",
email="a@a.a"
)
User.objects.create(
username="roader",
first_name="RODOR",
last_name="goll",
email="b@b.b"
)
def test_users_should_not_be_verified(self):
elordenador = User.objects.get(username="elordenador")
roader = User.objects.get(username="roader")
self.assertEqual(elordenador.registration_status, User.RegisterStatus.CONFIRMATION_REQUIRED)
self.assertEqual(elordenador.registration_status, User.RegisterStatus.CONFIRMATION_REQUIRED)
def test_users_can_set_and_verify_password(self):
usernames = ["elordenador", "roader"]
for username in usernames:
user = User.objects.get(username=username)
password = "".join(random.choices(string.digits, k=16))
user.set_password(password)
self.assertTrue(user.check_password(password), "Log-in should work!!")
class VerificationCodeTests(TestCase):
# First create a user
def setUp(self):
self.user = User.objects.create(
username = "test_user_01"
)
def test_able_to_create_fifty_codes(self):
for i in range(50):
modes = [VerificationCode.VerificationModes.VERIFY_ACCOUNT, VerificationCode.VerificationModes.RESET_PASSWORD]
code = VerificationCode.generate(self.user, random.choice(modes))
class CategoryTests(TestCase):
def setUp(self):
self.lista = []
def test_able_to_create_a_hundred_categories(self):
for i in range(100):
cat_name = "test_{}_{}".format(i, "".join(random.choices(string.digits, k=3)))
category = Category.objects.create(name=cat_name)
self.lista.append(cat_name)
def test_category_have_that_name(self):
for i in self.lista:
self.assertTrue(Category.objects.filter(name=i).exists(), "Category does NOT exist")
class ProductTests(TestCase):
def setUp(self):
self.categorias = []
self.products = []
for i in range(5):
cat_name = "test_{}_{}".format(i, "".join(random.choices(string.digits, k=3)))
category = Category.objects.create(name=cat_name)
self.categorias.append(cat_name)
self.user = User.objects.create(username="product_test_user")
def test_able_to_create_a_hundred_products(self):
for i in range(100):
cat = random.choice(self.categorias)
categoria = Category.objects.filter(name=cat).first()
prod_name = "product_{}{}".format(i, "".join(random.choices(string.digits, k=3)))
prod_description = "".join(random.choices(string.ascii_letters, k=255))
prod_briefdesc = "".join(random.choices(string.ascii_letters, k=50))
prod_price = random.randint(1,1000)
prod_stock = random.randint(1,100)
creator = self.user.username
product = Product.objects.create(
name = prod_name,
description = prod_description,
briefdesc = prod_briefdesc,
price = prod_price,
stock = prod_stock,
category = categoria,
creator = self.user
)
diction = {
"name": prod_name,
"description": prod_description,
"briefdesc": prod_briefdesc,
"price": prod_price,
"stock": prod_stock,
"creator": creator
}
self.products.append(diction)
def test_verify_products(self):
for prod in self.products:
producto = Product.objects.filter(name=prod["name"])
self.assertTrue(producto.exists(), "Product DOES NOT EXIST")
producto = producto.first()
self.assertEqual(producto.name, prod["name"], "product name {} does not match".format(producto.name))
self.assertEqual(producto.description, prod["description"], "product {} description does not match".format(producto.name))
self.assertEqual(producto.briefdesc, prod["briefdesc"], "product {} brief description does not match".format(producto.name))
self.assertEqual(producto.price, prod["price"], "product {} price does not match ({} != {})".format(producto.name, producto.price, prod["price"]))
self.assertEqual(producto.stock, prod["stock"], "product {} stock does not match".format(producto.name))
self.assertEqual(producto.creator.username, prod["creator"], "product {} owner does not match".format(producto.name))