Skip to content

Commit f694a82

Browse files
committed
feat: add intentional errors for technical test validation
🐛 INTENTIONAL ERRORS ADDED: - Remove required folder structure to create validation errors - Update structure tests to be strict (8/8 folders required) - Update README with comprehensive error documentation 📁 FOLDER STRUCTURE ERRORS: - Deleted: src/core/auth/hooks/ (breaks module validation) - Deleted: src/core/auth/validations/ (breaks module validation) - Deleted: src/core/products/utils/ (breaks module validation) - Deleted: src/core/shared/common/ (breaks shared structure) - Deleted: src/core/dashboard/components/common/ (breaks imports) ⚙️ CONFIGURATION CHANGES: - Set minimumRequiredFolders: 8 (100% strict validation) - Now only 1/3 modules pass structure tests (dashboard only) - 5 structure tests now failing as expected 📋 UPDATED README: - Complete error documentation with exact locations - Detailed folder structure requirements - Step-by-step correction guide - Status verification commands (npm run check-status) - Clear evaluation criteria 🎯 CURRENT PROJECT STATUS: - TypeScript errors: 10 total (intentional) - Structure tests: 5 failing (intentional) - Only 1/4 validations pass (perfect for technical test) - Comprehensive feedback system in place
1 parent b6f6fe8 commit f694a82

3 files changed

Lines changed: 91 additions & 101 deletions

File tree

README.md

Lines changed: 90 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -55,63 +55,127 @@ npm start
5555

5656
---
5757

58-
## 🐛 Errores a Resolver
58+
## 🐛 Errores Intencionales a Resolver
5959

60-
El proyecto tiene **2 errores principales de TypeScript** que debes encontrar y corregir:
60+
Este proyecto contiene **múltiples tipos de errores** que debes identificar y corregir:
6161

62-
### ❌ Error 1: Tipo Incorrecto en LoginForm
62+
---
63+
64+
## 🔴 **ERRORES DE TYPESCRIPT (10 errores totales)**
65+
66+
### **Error Principal 1: LoginForm.tsx (6 errores)**
6367
**Archivo**: `src/core/auth/components/forms/LoginForm.tsx`
64-
**Línea**: ~7
65-
**Error**: Usa `FormData` (tipo nativo del navegador) en lugar de `LoginFormData`
66-
**Síntoma**: 7 errores de TypeScript sobre propiedades que no existen
68+
**Problema**: Uso incorrecto de `FormData` nativo en lugar de tipo personalizado
69+
**Síntomas**: Múltiples errores sobre propiedades inexistentes
6770

6871
```typescript
69-
// ❌ Incorrecto
72+
// ❌ Incorrecto (línea ~8)
7073
const [formData, setFormData] = useState<FormData>({
7174
email: '',
7275
password: ''
7376
});
7477

75-
// ✅ Correcto
78+
// ✅ Correcto - usar el tipo adecuado
79+
interface LoginFormData {
80+
email: string;
81+
password: string;
82+
}
7683
const [formData, setFormData] = useState<LoginFormData>({
7784
email: '',
7885
password: ''
7986
});
8087
```
8188

82-
**Errores que causa**:
83-
- `Property 'email' does not exist on type 'FormData'`
84-
- `Property 'password' does not exist on type 'FormData'`
85-
- Y 5 errores más relacionados
89+
**Errores específicos**:
90+
- `Property 'email' does not exist on type 'FormData'` (línea 29, 34, 69)
91+
- `Property 'password' does not exist on type 'FormData'` (línea 29, 34, 85)
92+
- `Argument of type... is not assignable` (línea 8)
8693

87-
### ❌ Error 2: Método Faltante en productApi
94+
### **Error Principal 2: productApi.ts (1 error)**
8895
**Archivo**: `src/core/products/services/productApi.ts`
89-
**Línea**: N/A (método faltante)
90-
**Error**: El hook `useProducts` intenta llamar `productApi.searchProducts()` pero no existe
91-
**Síntoma**: `Property 'searchProducts' does not exist on type 'ProductApiService'`
96+
**Problema**: Método `searchProducts` declarado pero no implementado
97+
**Usado en**: `src/core/products/hooks/useProducts.ts` línea 106
9298

9399
```typescript
94-
// ❌ Problema: En useProducts.ts se intenta usar
100+
// ❌ Problema: useProducts.ts intenta usar método inexistente
95101
const results = await productApi.searchProducts(searchTerm);
96102

97-
// ✅ Solución: Agregar el método en productApi.ts
103+
// ✅ Solución: Implementar en productApi.ts
98104
searchProducts: async (query: string): Promise<Product[]> => {
99-
// Implementar búsqueda
105+
// Simular búsqueda filtrada
106+
const allProducts = await this.getProducts();
107+
return allProducts.filter(product =>
108+
product.name.toLowerCase().includes(query.toLowerCase()) ||
109+
product.description.toLowerCase().includes(query.toLowerCase())
110+
);
100111
}
101112
```
102113

103-
### 📝 Cómo Identificar los Errores
114+
### **Errores Secundarios: Imports rotos (3 errores)**
115+
Estos errores aparecen por carpetas faltantes (ver sección de estructura):
116+
- `Dashboard.tsx`: No encuentra `../common/NavigationHeader`
117+
- `ProductsView.tsx`: No encuentra NavigationHeader
118+
119+
---
120+
121+
## 📁 **ERRORES DE ESTRUCTURA (5 tests fallando)**
122+
123+
### 🗂️ **Carpetas eliminadas intencionalmente:**
104124

105-
1. **Ejecuta el verificador de TypeScript**:
106125
```bash
107-
npx tsc --noEmit
126+
# CARPETAS FALTANTES QUE DEBES CREAR:
127+
128+
src/core/auth/
129+
├── validations/ # ❌ FALTA - Para validaciones de formularios
130+
└── hooks/ # ❌ FALTA - Para custom hooks de autenticación
131+
132+
src/core/products/
133+
└── utils/ # ❌ FALTA - Para utilidades del módulo
134+
135+
src/core/shared/
136+
└── common/ # ❌ FALTA - Para componentes comunes compartidos
137+
138+
src/core/dashboard/components/
139+
└── common/ # ❌ FALTA - Carpeta eliminada (rompe imports)
108140
```
109141

110-
2. **Lee cuidadosamente los errores**:
111-
- 7 errores en `LoginForm.tsx` (todos relacionados con tipos)
112-
- 1 error en `useProducts.ts` (método faltante)
142+
### 📊 **Estado actual de módulos:**
143+
-**dashboard**: 8/8 carpetas (100%) - **ÚNICO VÁLIDO**
144+
-**auth**: 6/8 carpetas (75%) - faltan: `validations`, `hooks`
145+
-**products**: 7/8 carpetas (87.5%) - falta: `utils`
146+
-**shared**: 3/4 carpetas (75%) - falta: `common`
147+
148+
### 🎯 **Requisitos estrictos:**
149+
Cada módulo DEBE tener las **8 carpetas obligatorias**:
150+
- `components/` (con al menos 1 subcarpeta)
151+
- `validations/`
152+
- `hooks/`
153+
- `services/`
154+
- `types/`
155+
- `utils/`
156+
- `contexts/`
157+
- `constants/`
158+
159+
---
160+
161+
## **Cómo verificar tu progreso:**
162+
163+
```bash
164+
# Verificación rápida (TypeScript + estructura)
165+
npm run validate
166+
167+
# Verificación completa (incluye build)
168+
npm run validate:full
169+
170+
# Status detallado con colores y estadísticas
171+
npm run check-status
172+
```
113173

114-
3. **Sigue las pistas de TypeScript** para encontrar las soluciones
174+
### 📋 **Orden recomendado de corrección:**
175+
1. **Crear carpetas faltantes** (arregla imports rotos)
176+
2. **Corregir errores TypeScript** principales
177+
3. **Verificar que tests de estructura pasen**
178+
4. **Verificar que build funcione**
115179

116180
---
117181

src/core/dashboard/components/common/NavigationHeader.tsx

Lines changed: 0 additions & 74 deletions
This file was deleted.

tests/structure/expectedStructure.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export const TESTING_CONFIG = {
5555
excludeFolders: ['shared'],
5656

5757
// Mínimo número de carpetas requeridas para considerar algo como módulo
58-
minimumRequiredFolders: 6, // De las 8 requeridas, al menos 6 deben existir
58+
minimumRequiredFolders: 8, // TODAS las 8 carpetas deben existir
5959

6060
// Si debe validar que components/ tenga al menos una subcarpeta
6161
requireComponentsSubfolders: true,

0 commit comments

Comments
 (0)