Skip to content

refactor(courseType): Estandarizar arquitectura del módulo 'courseType'#47

Merged
carlex74 merged 2 commits into
developfrom
refactor/standardize-courseType-module
Aug 27, 2025
Merged

refactor(courseType): Estandarizar arquitectura del módulo 'courseType'#47
carlex74 merged 2 commits into
developfrom
refactor/standardize-courseType-module

Conversation

@Frasquito3

Copy link
Copy Markdown
Collaborator

Issue Relacionada

Closes #38


Resumen

Este PR implementa el conjunto completo de endpoints CRUD para la entidad CourseType, permitiendo a los clientes de la API gestionar las categorías de los cursos. El módulo ha sido refactorizado para incluir validación, seguridad y respuestas estandarizadas.

Cambios Técnicos Implementados

  • Validación con valibot: Se ha creado el archivo courseType.schemas.ts con esquemas para validar los datos en las peticiones de creación y actualización.
  • Refactorización del Controlador: El archivo courseType.controller.ts ha sido reescrito para utilizar la clase HttpResponse estandarizada, mejorando la consistencia de las respuestas de la API y el manejo de errores.
  • Refactorización del Servicio: Se ha actualizado courseType.service.ts para utilizar los tipos definidos en los esquemas de valibot y para asegurar el uso correcto de ObjectId en todas las consultas a la base de datos.
  • Seguridad de Rutas: Se ha aplicado el authMiddleware a todas las rutas de escritura (POST, PUT, PATCH, DELETE) en courseType.routes.ts para asegurar que solo usuarios autenticados puedan realizar modificaciones.
  • Eliminación de Código Obsoleto: Se ha eliminado el middleware de sanitización manual (sanitizedCourseTypeInput), ya que validationMiddleware ahora maneja esta responsabilidad de forma más segura.

Guía para Pruebas y Revisión

  1. Iniciar el servidor del backend.
  2. Utilizar un cliente de API (como Postman o Insomnia).
  3. Probar Endpoints de Lectura (Públicos):
    • GET /api/courseTypes: Debe devolver una lista de todos los tipos de curso.
    • GET /api/courseTypes/:id: Debe devolver un solo tipo de curso o un error 404 si el ID no existe.
  4. Probar Endpoints de Escritura (Protegidos):
    • Obtener un token JWT de un usuario autenticado (por ahora, cualquier rol es válido).
    • POST /api/courseTypes (con token y un body válido): Verificar que devuelve 201 Created.
    • PUT /api/courseTypes/:id (con token y un body válido): Verificar que devuelve 200 OK.
    • DELETE /api/courseTypes/:id (con token): Verificar que devuelve 200 OK.
  5. Verificar Fallos de Validación:
    • POST /api/courseTypes (con token pero con un body inválido, ej. name vacío): Verificar que devuelve 400 Bad Request.
  6. Verificar Fallos de Autenticación:
    • Intentar acceder a cualquiera de los endpoints POST, PUT o DELETE sin un token de autorización: Verificar que devuelve 401 Unauthorized.

@Frasquito3 Frasquito3 self-assigned this Aug 26, 2025
@Frasquito3 Frasquito3 added needs-review This PR need review refactor Improve the code structure, readability, or performance without changing its external behavior labels Aug 26, 2025
@carlex74 carlex74 merged commit 0cd33d9 into develop Aug 27, 2025
1 check passed
@Frasquito3 Frasquito3 deleted the refactor/standardize-courseType-module branch August 27, 2025 02:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-review This PR need review refactor Improve the code structure, readability, or performance without changing its external behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor: Estandarizar arquitectura del módulo 'courseType'

3 participants