Coverage for backend \ app \ Productos \ controllers \ productoController.py: 86.36%

22 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2025-12-29 16:13 -0500

1from fastapi import APIRouter, Depends 

2from app.Productos.services.productoService import ProductoService 

3from app.Productos.schemas.productoSchemas import * 

4from app.database import obtenerSesion 

5from app.configuracionGeneral.seguridadJWT import protegerRuta 

6from app.configuracionGeneral.schemasGenerales import respuestaApi 

7 

8router = APIRouter() 

9 

10@router.get("/", tags=["Producto"], summary="Obtener todos los productos", status_code=200, response_model=respuestaApi) 

11async def obtenerTodosLosProductos(dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Productos", "GET"))): 

12 return ProductoService(dbSession).listarProductos() 

13 

14@router.get("/{idProducto}", tags=["Producto"], summary="Obtener un producto por id", status_code=200, response_model=respuestaApi) 

15async def obtenerProductoPorId(idProducto: int, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Productos", "GET"))): 

16 return ProductoService(dbSession).obtenerPorId(idProducto) 

17 

18@router.post("/", tags=["Producto"], description="Crear un nuevo producto. Si se envía 'cantidadDisponible' y/o 'cantidadMinima', se creará automáticamente el inventario con esas cantidades; si no se envían, se crearán con 0 y podrán ajustarse luego mediante el endpoint /inventario.", status_code=201, response_model=respuestaApi) 

19async def crearProducto(producto: ProductoCrearSchema, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Productos", "ALL"))): 

20 return ProductoService(dbSession).crearProducto(producto) 

21 

22@router.put("/{idProducto}", tags=["Producto"], summary="Actualizar un producto por id", status_code=200, response_model=respuestaApi) 

23async def actualizarProducto(idProducto: int, producto: ProductoActualizarSchema, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Productos", "ALL"))): 

24 return ProductoService(dbSession).modificarProducto(idProducto, producto) 

25 

26@router.delete("/{idProducto}", tags=["Producto"], summary="Deshabilitar un producto por id", status_code=200, response_model=respuestaApi) 

27async def deshabilitarProducto(idProducto: int, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Productos", "ALL"))): 

28 return ProductoService(dbSession).deshabilitarProducto(idProducto)