Coverage for backend \ app \ Productos \ services \ categoriaProductoService.py: 100.00%

42 statements  

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

1from app.Productos.repositories.categoriaProductoRepository import CategoriaProductoRepository 

2from app.configuracionGeneral.schemasGenerales import respuestaApi 

3from fastapi import HTTPException 

4from app.Productos.schemas.categoriaProductoSchemas import * 

5 

6class CategoriaProductoService: 

7 def __init__(self, dbSession): 

8 self.dbSession = dbSession 

9 self.categoriaRepository = CategoriaProductoRepository(dbSession) 

10 

11 def listarCategorias(self): 

12 categorias = self.categoriaRepository.listarCategorias() 

13 if categorias is None: 

14 return respuestaApi(success=True, message="No se encontraron categorias", data=[]) 

15 categorias = [CategoriaProductoRespuestaSchema.from_orm(c) for c in categorias] 

16 return respuestaApi(success=True, message="Categorias encontrados", data=categorias) 

17 

18 def obtenerPorId(self, idCategoria: int): 

19 categoria = self.categoriaRepository.obtenerPorId(idCategoria) 

20 if categoria is None: 

21 raise HTTPException(status_code=404, detail="Categoria no encontrada") 

22 categoria = CategoriaProductoRespuestaSchema.from_orm(categoria) 

23 return respuestaApi(success=True, message="Categoria encontrada", data=categoria) 

24 

25 def crearCategoria(self, categoria: CategoriaProductoCrearSchema): 

26 creado = self.categoriaRepository.crearCategoria(categoria) 

27 if creado is None: 

28 raise HTTPException(status_code=400, detail="La categoria ya existe") 

29 creado = CategoriaProductoRespuestaSchema.from_orm(creado) 

30 return respuestaApi(success=True, message="Categoria creada", data=creado) 

31 

32 def modificarCategoria(self, idCategoria: int, categoria: CategoriaProductoActualizarSchema): 

33 actualizado = self.categoriaRepository.modificarCategoria(idCategoria, categoria) 

34 if actualizado is None: 

35 raise HTTPException(status_code=404, detail="Categoria no encontrada") 

36 if actualizado is False: 

37 raise HTTPException(status_code=400, detail="El nombre de categoria ya existe") 

38 actualizado = CategoriaProductoRespuestaSchema.from_orm(actualizado) 

39 return respuestaApi(success=True, message="Categoria actualizada", data=actualizado) 

40 

41 def deshabilitarCategoria(self, idCategoria: int): 

42 des = self.categoriaRepository.deshabilitarCategoria(idCategoria) 

43 if des is None: 

44 raise HTTPException(status_code=404, detail="Categoria no encontrada") 

45 if des is False: 

46 raise HTTPException(status_code=400, detail="No se puede deshabilitar la categoría: existen productos activos asociados") 

47 des = CategoriaProductoRespuestaSchema.from_orm(des) 

48 return respuestaApi(success=True, message="Categoria deshabilitada", data=des)