Coverage for backend \ app \ Inventario \ controllers \ inventarioController.py: 85.19%

27 statements  

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

1from fastapi import APIRouter, Depends 

2from app.Inventario.services.inventarioService import InventarioService 

3from app.Inventario.schemas.inventarioSchemas 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=["Inventario"], summary="Obtener todos los inventarios", status_code=200, response_model=respuestaApi) 

11async def obtenerTodosLosInventarios(dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "GET"))): 

12 return InventarioService(dbSession).listarInventarios() 

13 

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

15async def obtenerInventarioPorId(idInventario: int, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "GET"))): 

16 return InventarioService(dbSession).obtenerPorId(idInventario) 

17 

18@router.get("/producto/{idProducto}", tags=["Inventario"], summary="Obtener inventario por id de producto", status_code=200, response_model=respuestaApi) 

19async def obtenerInventarioPorProducto(idProducto: int, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "GET"))): 

20 return InventarioService(dbSession).obtenerPorProducto(idProducto) 

21 

22@router.post("/", tags=["Inventario"], description="Crear un nuevo inventario para un producto existente", response_model=respuestaApi) 

23async def crearInventario(inventario: InventarioCrearSchema, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "POST"))): 

24 result, status = InventarioService(dbSession).crearInventario(inventario) 

25 from fastapi.responses import JSONResponse 

26 return JSONResponse(status_code=status, content=result.model_dump()) 

27 

28@router.put("/{idInventario}", tags=["Inventario"], summary="Actualizar un inventario por id", description="Administrador: puede modificar `cantidadDisponible`, `cantidadMinima` y `activoInventario`. Bodeguero: puede modificar `cantidadMinima` y `activoInventario` (no puede cambiar `cantidadDisponible`).", status_code=200, response_model=respuestaApi) 

29async def actualizarInventario(idInventario: int, inventario: InventarioActualizarSchema, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "PUT"))): 

30 return InventarioService(dbSession).modificarInventario(idInventario, inventario, usuario) 

31 

32@router.delete("/{idInventario}", tags=["Inventario"], summary="Deshabilitar un inventario por id", status_code=200, response_model=respuestaApi) 

33async def deshabilitarInventario(idInventario: int, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "DELETE"))): 

34 return InventarioService(dbSession).deshabilitarInventario(idInventario)