Skip to content

Commit afaa331

Browse files
committed
fix: Actualizar README y corregir tests de estructura
- Añadida documentación detallada en README.md - Corregido formato en tests de estructura - Mejorada la legibilidad del código de validación - Actualizados los mensajes de error en los tests
1 parent 1c11355 commit afaa331

3 files changed

Lines changed: 250 additions & 128 deletions

File tree

README.md

Lines changed: 64 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,24 @@ Este proyecto es una **prueba técnica frontend** que implementa una aplicación
1313
## 🎯 Objetivos de la Prueba
1414

1515
### 1. **Estructura de Carpetas (25 puntos)**
16+
1617
- Mantener la arquitectura `core` con módulos dinámicos
1718
- Validar que la estructura siga las convenciones establecidas
1819
- Cada módulo debe tener las 8 carpetas requeridas
1920

20-
### 2. **Resolución de Errores (50 puntos)**
21+
### 2. **Resolución de Errores (50 puntos)**
22+
2123
- Identificar y corregir **2 errores principales** (8 errores de TypeScript en total)
2224
- Hacer que la aplicación funcione sin warnings ni errores
2325

2426
### 3. **Testing Dinámico (25 puntos)**
27+
2528
- Entender el sistema de testing de estructura
2629
- Ejecutar y validar que todos los tests pasen
2730
- Opcional: Agregar tests adicionales
2831

2932
### 4. **Funcionalidad (25 puntos)**
33+
3034
- Completar el módulo de productos
3135
- Navegar y usar todas las funcionalidades
3236
- Opcional: Agregar nuevas características
@@ -36,11 +40,13 @@ Este proyecto es una **prueba técnica frontend** que implementa una aplicación
3640
## 🚀 Setup Inicial
3741

3842
### Prerrequisitos
39-
- Node.js 18+
43+
44+
- Node.js 18+
4045
- npm o yarn
4146
- Git
4247

4348
### Instalación
49+
4450
```bash
4551
# Clonar el repositorio
4652
git clone [repository-url]
@@ -64,15 +70,16 @@ Este proyecto contiene **múltiples tipos de errores** que debes identificar y c
6470
## 🔴 **ERRORES DE TYPESCRIPT (10 errores totales)**
6571

6672
### **Error Principal 1: LoginForm.tsx (6 errores)**
73+
6774
**Archivo**: `src/core/auth/components/forms/LoginForm.tsx`
6875
**Problema**: Uso incorrecto de `FormData` nativo en lugar de tipo personalizado
6976
**Síntomas**: Múltiples errores sobre propiedades inexistentes
7077

7178
```typescript
7279
// ❌ Incorrecto (línea ~8)
7380
const [formData, setFormData] = useState<FormData>({
74-
email: '',
75-
password: ''
81+
email: "",
82+
password: "",
7683
});
7784

7885
// ✅ Correcto - usar el tipo adecuado
@@ -81,17 +88,19 @@ interface LoginFormData {
8188
password: string;
8289
}
8390
const [formData, setFormData] = useState<LoginFormData>({
84-
email: '',
85-
password: ''
91+
email: "",
92+
password: "",
8693
});
8794
```
8895

8996
**Errores específicos**:
97+
9098
- `Property 'email' does not exist on type 'FormData'` (línea 29, 34, 69)
9199
- `Property 'password' does not exist on type 'FormData'` (línea 29, 34, 85)
92100
- `Argument of type... is not assignable` (línea 8)
93101

94102
### **Error Principal 2: productApi.ts (1 error)**
103+
95104
**Archivo**: `src/core/products/services/productApi.ts`
96105
**Problema**: Método `searchProducts` declarado pero no implementado
97106
**Usado en**: `src/core/products/hooks/useProducts.ts` línea 106
@@ -104,15 +113,18 @@ const results = await productApi.searchProducts(searchTerm);
104113
searchProducts: async (query: string): Promise<Product[]> => {
105114
// Simular búsqueda filtrada
106115
const allProducts = await this.getProducts();
107-
return allProducts.filter(product =>
108-
product.name.toLowerCase().includes(query.toLowerCase()) ||
109-
product.description.toLowerCase().includes(query.toLowerCase())
116+
return allProducts.filter(
117+
(product) =>
118+
product.name.toLowerCase().includes(query.toLowerCase()) ||
119+
product.description.toLowerCase().includes(query.toLowerCase())
110120
);
111-
}
121+
};
112122
```
113123

114124
### **Errores Secundarios: Imports rotos (3 errores)**
125+
115126
Estos errores aparecen por carpetas faltantes (ver sección de estructura):
127+
116128
- `Dashboard.tsx`: No encuentra `../common/NavigationHeader`
117129
- `ProductsView.tsx`: No encuentra NavigationHeader
118130

@@ -129,7 +141,7 @@ src/core/auth/
129141
├── validations/ # ❌ FALTA - Para validaciones de formularios
130142
└── hooks/ # ❌ FALTA - Para custom hooks de autenticación
131143

132-
src/core/products/
144+
src/core/products/
133145
└── utils/ # ❌ FALTA - Para utilidades del módulo
134146

135147
src/core/shared/
@@ -140,15 +152,18 @@ src/core/dashboard/components/
140152
```
141153

142154
### 📊 **Estado actual de módulos:**
155+
143156
-**dashboard**: 8/8 carpetas (100%) - **ÚNICO VÁLIDO**
144157
-**auth**: 6/8 carpetas (75%) - faltan: `validations`, `hooks`
145-
-**products**: 7/8 carpetas (87.5%) - falta: `utils`
158+
-**products**: 7/8 carpetas (87.5%) - falta: `utils`
146159
-**shared**: 3/4 carpetas (75%) - falta: `common`
147160

148161
### 🎯 **Requisitos estrictos:**
162+
149163
Cada módulo DEBE tener las **8 carpetas obligatorias**:
164+
150165
- `components/` (con al menos 1 subcarpeta)
151-
- `validations/`
166+
- `validations/`
152167
- `hooks/`
153168
- `services/`
154169
- `types/`
@@ -167,11 +182,12 @@ npm run validate
167182
# Verificación completa (incluye build)
168183
npm run validate:full
169184

170-
# Status detallado con colores y estadísticas
185+
# Status detallado con colores y estadísticas
171186
npm run check-status
172187
```
173188

174189
### 📋 **Orden recomendado de corrección:**
190+
175191
1. **Crear carpetas faltantes** (arregla imports rotos)
176192
2. **Corregir errores TypeScript** principales
177193
3. **Verificar que tests de estructura pasen**
@@ -182,6 +198,7 @@ npm run check-status
182198
## 🧪 Testing de Estructura
183199

184200
### Ejecutar Tests
201+
185202
```bash
186203
# Ejecutar tests de estructura
187204
npm run test:structure
@@ -203,6 +220,7 @@ El proyecto incluye un **sistema de testing dinámico** que:
203220
- 🏗️ **Verifica arquitectura** de cada módulo
204221

205222
### Estructura Validada
223+
206224
```
207225
src/core/
208226
├── shared/ # ✅ Componentes compartidos
@@ -229,22 +247,25 @@ src/core/
229247
### GitHub Actions Workflows
230248

231249
#### 1. **Structure Validation** (feature → developer)
250+
232251
**Archivo**: `.github/workflows/structure-validation.yml`
233252

234253
```yaml
235254
# Se ejecuta cuando:
236-
- PR hacia developer/develop
255+
- PR hacia developer/develop
237256
- Push a developer/develop
238257
- Cambios en src/core/** o tests/**
239258
```
240259
241260
**Validaciones**:
261+
242262
- ✅ Testing de estructura de carpetas
243-
- ✅ Verificación de módulos dinámicos
263+
- ✅ Verificación de módulos dinámicos
244264
- ✅ Validación de subcarpetas requeridas
245265
- ✅ Comentarios automáticos en PR
246266
247-
#### 2. **Promote to Main** (developer → main)
267+
#### 2. **Promote to Main** (developer → main)
268+
248269
**Archivo**: `.github/workflows/promote-to-main.yml`
249270

250271
```yaml
@@ -254,6 +275,7 @@ src/core/
254275
```
255276

256277
**Validaciones**:
278+
257279
- ✅ Testing completo de estructura
258280
- ✅ Validación de contenido en módulos
259281
- ✅ Build de producción
@@ -278,36 +300,41 @@ graph LR
278300
### Funcionalidades Implementadas
279301

280302
#### 🏠 Vista Principal (`ProductsView`)
303+
281304
- **Dashboard de estadísticas** (total, en stock, sin stock)
282305
- **Búsqueda avanzada** por nombre, descripción, tags
283306
- **Filtros por categoría**
284307
- **Lista responsive** de productos
285308
- **CRUD básico** (ver, editar, eliminar)
286309

287-
#### 🃏 Tarjeta de Producto (`ProductCard`)
310+
#### 🃏 Tarjeta de Producto (`ProductCard`)
311+
288312
- **Imagen** del producto con fallback
289313
- **Información detallada** (precio, stock, categoría)
290314
- **Tags dinámicos** con límite visual
291315
- **Estados visuales** (sin stock, nuevo, etc.)
292316
- **Acciones rápidas** (ver, editar, eliminar)
293317

294318
#### 🎣 Hook Personalizado (`useProducts`)
319+
295320
- **Estado centralizado** de productos
296321
- **Operaciones CRUD** completas
297322
- **Filtros dinámicos** aplicables
298323
- **Gestión de errores** integrada
299324
- **Loading states** automáticos
300325

301326
#### 🌐 API Service (`productApi`)
327+
302328
- **Datos mock realistas** para demostración
303329
- **5 productos de ejemplo** con imágenes
304330
- **4 categorías** (Tecnología, Ropa, Hogar, Deportes)
305331
- **Simulación de latencia** de red
306332
- **Operaciones async** completas
307333

308334
### Navegación
335+
309336
1. **Login** → Dashboard (admin@test.com / password)
310-
2. **Dashboard** → Click en card "Productos"
337+
2. **Dashboard** → Click en card "Productos"
311338
3. **Productos** → Vista completa de gestión
312339

313340
---
@@ -338,15 +365,15 @@ tecnicafrontend/
338365
│ │ │ ├── validations/
339366
│ │ │ └── constants/
340367
│ │ │
341-
│ │ ├── dashboard/ # 📊 Módulo dashboard
368+
│ │ ├── dashboard/ # 📊 Módulo dashboard
342369
│ │ │ ├── components/
343370
│ │ │ │ └── views/ # ❌ Dashboard (Error 1,2)
344371
│ │ │ └── [otras carpetas...]
345372
│ │ │
346373
│ │ └── products/ # 📦 Módulo productos
347374
│ │ ├── components/
348375
│ │ │ ├── cards/ # ProductCard
349-
│ │ │ └── views/ # ProductsView
376+
│ │ │ └── views/ # ProductsView
350377
│ │ ├── hooks/ # useProducts
351378
│ │ ├── services/ # productApi
352379
│ │ ├── types/ # Product interfaces
@@ -373,24 +400,28 @@ tecnicafrontend/
373400
## 🎯 Instrucciones de Resolución
374401
375402
### Paso 1: Identificar Errores (25 pts)
403+
376404
1. **Ejecutar** `npm start` → Observar errores en consola
377405
2. **Revisar** archivos mencionados en la sección "Errores"
378406
3. **Corregir** uno por uno hasta que la app funcione
379407
4. **Verificar** que no haya warnings en la consola
380408
381-
### Paso 2: Validar Testing (25 pts)
409+
### Paso 2: Validar Testing (25 pts)
410+
382411
1. **Ejecutar** `npm run test:structure`
383412
2. **Verificar** que todos los tests pasen (11/11)
384413
3. **Entender** el reporte de estructura generado
385414
4. **Opcional**: Agregar un nuevo módulo y ver que se detecte
386415
387416
### Paso 3: Probar Funcionalidad (25 pts)
388-
1. **Login** con credenciales: `admin@test.com` / `password`
417+
418+
1. **Login** con credenciales: `admin@test.com` / `password`
389419
2. **Navegar** desde Dashboard → Productos
390420
3. **Probar** búsqueda, filtros, eliminación
391421
4. **Verificar** que las estadísticas se actualicen
392422
393423
### Paso 4: Entender CI/CD (25 pts)
424+
394425
1. **Revisar** archivos en `.github/workflows/`
395426
2. **Entender** el flujo feature → developer → main
396427
3. **Opcional**: Crear una feature branch y PR
@@ -402,10 +433,10 @@ tecnicafrontend/
402433
403434
```bash
404435
# 🚀 Desarrollo
405-
npm start # Ejecutar en modo desarrollo
436+
npm start # Ejecutar en modo desarrollo
406437
npm run build # Build de producción
407438
408-
# 🧪 Testing
439+
# 🧪 Testing
409440
npm run test:structure # Tests de estructura
410441
npm run test:structure:watch # Tests en modo watch
411442
npm run test:structure:ui # Interfaz visual de tests
@@ -420,25 +451,29 @@ npm run test # Tests unitarios (React)
420451
## 🏆 Criterios de Evaluación
421452

422453
### Excelente (90-100 pts)
454+
423455
- ✅ Todos los errores corregidos sin ayuda
424456
- ✅ Tests pasando al 100%
425457
- ✅ Funcionalidad completa probada
426458
- ✅ Comprensión clara del CI/CD
427459
- ✅ Mejoras o funcionalidades adicionales
428460

429-
### Bueno (70-89 pts)
461+
### Bueno (70-89 pts)
462+
430463
- ✅ 3-4 errores corregidos
431464
- ✅ Tests mayormente pasando
432465
- ✅ Funcionalidad básica funcionando
433466
- ✅ Entendimiento general del proyecto
434467

435468
### Aceptable (50-69 pts)
436-
- ✅ 2-3 errores corregidos
469+
470+
- ✅ 2-3 errores corregidos
437471
- ✅ Algunos tests pasando
438472
- ✅ App ejecutándose básicamente
439473
- ⚠️ Necesita ayuda para CI/CD
440474

441475
### Insuficiente (<50 pts)
476+
442477
- ❌ Errores sin corregir
443478
- ❌ Tests fallando
444479
- ❌ App no funciona correctamente
@@ -479,7 +514,7 @@ Prepárate para explicar:
479514
## 💡 Tips para el Éxito
480515

481516
- 🔍 **Lee los errores** en consola cuidadosamente
482-
- 🧪 **Ejecuta tests** frecuentemente durante el desarrollo
517+
- 🧪 **Ejecuta tests** frecuentemente durante el desarrollo
483518
- 🎯 **Usa las herramientas** de desarrollo de React
484519
- 📖 **Revisa la estructura** antes de hacer cambios
485520
- 🚀 **Prueba la navegación** completa de la app
@@ -495,4 +530,4 @@ Esta prueba técnica está diseñada para evaluar tus habilidades reales de desa
495530

496531
---
497532

498-
*Creado con ❤️ para evaluar desarrolladores frontend talentosos*
533+
_Creado con ❤️ para evaluar desarrolladores frontend talentosos_

0 commit comments

Comments
 (0)