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
« 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
8router = APIRouter()
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()
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)
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)
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)
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)