Poner en práctica Cursor para:
- Generar pruebas.
- Refactorizar código con code smells.
- Documentar en contexto.
- Mantener el control técnico sobre cada cambio.
Usaremos un proyecto mínimo en TypeScript con funciones sencillas pero ideales para ejercitar IA en el IDE:
calculateFinal(total, iva, discount)→ (precio final).groupOrdersReport(orders)→ (función larga con duplicación y nombres poco claros).
Descarga el repo starter: 📦 cursor_homework_starter.zip
Requisitos: Node 18+, Cursor IDE instalado.
Comandos:
npm i
npm run test
npm run test:cov-
Pídele a Cursor que genere tests para
calculateFinal. -
Casos:
- IVA por defecto.
- Con descuento.
- Manejo de decimales.
- Errores por parámetros inválidos.
-
Usa patrón AAA y nombres descriptivos.
-
Meta: cobertura ≥ 90% en
price.tsy ≥ 70% global.
-
Solicita diagnóstico de code smells y refactor de
groupOrdersReport. -
Pide:
- Reducir complejidad
< 10. - Extraer funciones.
- Mejorar nombres.
- Reducir complejidad
-
No cambies el comportamiento.
-
Valida corriendo los tests.
-
Agrega JSDoc a
calculateFinalygroupOrdersReport. -
Crea/actualiza un README en
src/libcon:- Propósito.
- Ejemplo de uso.
- Limitaciones.
Genera tests para src/lib/price.ts (función calculateFinal).
Cubre IVA por defecto, descuento, manejo de decimales y errores por parámetros inválidos.
Usa Jest con patrón AAA y nombres descriptivos.
Objetivo: cobertura ≥90% en price.ts.
Analiza src/lib/orders.ts y sugiere refactor para groupOrdersReport():
extrae funciones, reduce complejidad <10, usa nombres claros y mantiene el mismo comportamiento.
Dame el diff propuesto.
Agrega JSDoc a calculateFinal y groupOrdersReport (descripción breve, params, return, ejemplo).
Genera un README para src/lib con propósito, ejemplo de uso y limitaciones (Markdown).
No es necesario entregar esta homework, pero te invitamos a preparar los siguientes elementos para cerrar el ejercicio con una buena práctica profesional:
- Proyecto actualizado (en GitHub o en .zip)
- Captura de pantalla del reporte de cobertura después de tus cambios.
- Archivo README en src/lib/ con la documentación del módulo.
- 1–2 commits con mensajes claros (idealmente usando Conventional Commits).