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
« 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 *
6class CategoriaProductoService:
7 def __init__(self, dbSession):
8 self.dbSession = dbSession
9 self.categoriaRepository = CategoriaProductoRepository(dbSession)
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)
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)
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)
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)
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)