111 lines
4.8 KiB
Python
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)) |