Add tests/test_products.py
This commit is contained in:
47
tests/test_products.py
Normal file
47
tests/test_products.py
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
from decimal import Decimal
|
||||||
|
from app.services import product_service
|
||||||
|
from app.services import category_service
|
||||||
|
from app.schemas.product import ProductCreate
|
||||||
|
from app.schemas.category import CategoryCreate
|
||||||
|
|
||||||
|
|
||||||
|
def test_create_and_get_product(db):
|
||||||
|
cat = category_service.create_category(db, CategoryCreate(name="Cat Test"))
|
||||||
|
prod = product_service.create_product(
|
||||||
|
db,
|
||||||
|
ProductCreate(
|
||||||
|
sku="SKU-001",
|
||||||
|
name="Producto Test",
|
||||||
|
price=Decimal("19.99"),
|
||||||
|
category_id=cat.id,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
assert prod.id is not None
|
||||||
|
assert prod.sku == "SKU-001"
|
||||||
|
|
||||||
|
|
||||||
|
def test_low_stock_alert(db):
|
||||||
|
prod = product_service.create_product(
|
||||||
|
db,
|
||||||
|
ProductCreate(
|
||||||
|
sku="LOW-001",
|
||||||
|
name="Stock Bajo",
|
||||||
|
price=Decimal("5.00"),
|
||||||
|
min_stock=10,
|
||||||
|
current_stock=3,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
low = product_service.get_low_stock_products(db)
|
||||||
|
assert any(p.id == prod.id for p in low)
|
||||||
|
|
||||||
|
|
||||||
|
def test_product_pagination(db):
|
||||||
|
for i in range(25):
|
||||||
|
product_service.create_product(
|
||||||
|
db,
|
||||||
|
ProductCreate(sku=f"SKU-{i}", name=f"Prod {i}", price=Decimal("1.00")),
|
||||||
|
)
|
||||||
|
page1 = product_service.get_products(db, skip=0, limit=10)
|
||||||
|
page2 = product_service.get_products(db, skip=10, limit=10)
|
||||||
|
assert len(page1) == 10
|
||||||
|
assert len(page2) == 10
|
||||||
Reference in New Issue
Block a user