# TEST PLANS - ERP CONSTRUCCION

**Fecha:** 2025-11-25
**Basado en:** ADR-010 Testing Strategy
**Version:** 1.0.0

---

## Estrategia de Testing

Basado en ADR-010, el ERP Construccion implementa una estrategia de testing en piramide:

### Piramide de Testing

```
        /\
       /  \     E2E Tests (60% coverage)
      /----\    - Flujos criticos completos
     /      \   - Happy paths principales
    /--------\  Integration Tests (70% coverage)
   /          \ - APIs
  /------------\ - Database
 /              \ Unit Tests (80% coverage)
/----------------\ - Logica de negocio
                   - Validaciones
                   - Utilidades
```

### Objetivos de Cobertura

| Tipo de Test | Objetivo | Herramienta |
|--------------|----------|-------------|
| Unit Tests | 80% | Jest / Vitest |
| Integration Tests | 70% | Jest + Supertest |
| E2E Tests | 60% flujos criticos | Playwright |

---

## Estructura de Directorio

```
04-test-plans/
+-- README.md (este archivo)
+-- PLAN-PRUEBAS-GENERAL.md
+-- PLAN-PRUEBAS-INTEGRACION.md
+-- PLAN-PRUEBAS-E2E.md
+-- MATRIZ-CASOS-PRUEBA.md
+-- modulos/
|   +-- TEST-PLAN-MAI-001.md
|   +-- TEST-PLAN-MAI-002.md
|   +-- ...
```

---

## Plan General de Pruebas

### Fase 1: Unit Tests (Backend)

**Prioridad:** P0
**Cobertura objetivo:** 80%

**Modulos criticos:**
1. MAI-001 - Autenticacion y RBAC
2. MAI-003 - Calculos de presupuesto
3. MAI-008 - Calculos de estimaciones

**Casos de prueba:**
- Validaciones de entrada
- Logica de calculos
- Transformaciones de datos
- Funciones utilitarias

### Fase 2: Integration Tests

**Prioridad:** P0
**Cobertura objetivo:** 70%

**Modulos criticos:**
1. MAI-001 - Auth endpoints
2. MAI-002 - CRUD Proyectos
3. MAI-004 - Flujo de requisiciones
4. MAI-005 - Captura de avances
5. MAI-008 - Workflow estimaciones

**Casos de prueba:**
- APIs CRUD
- Validaciones de negocio
- RLS policies
- Workflows de estado

### Fase 3: E2E Tests

**Prioridad:** P1
**Cobertura objetivo:** 60% flujos criticos

**Flujos criticos:**
1. Login -> Dashboard -> Logout
2. Crear fraccionamiento -> Etapas -> Lotes
3. Crear presupuesto -> Asignar a prototipo
4. Requisicion -> Aprobar -> OC -> Recibir
5. Capturar avance -> Aprobar -> Estimacion
6. Estimacion -> Workflow -> Aprobar

---

## Criterios de Aceptacion

### Para Unit Tests
- [ ] Cobertura >= 80%
- [ ] Todos los tests pasan
- [ ] Sin mocks excesivos
- [ ] Tests aislados

### Para Integration Tests
- [ ] Cobertura >= 70%
- [ ] Database real (test)
- [ ] Cleanup despues de cada test
- [ ] Tests independientes

### Para E2E Tests
- [ ] Flujos criticos cubiertos
- [ ] Screenshots en fallas
- [ ] Tiempos de respuesta < 3s
- [ ] Multi-browser (Chrome, Firefox)

---

## Herramientas

### Backend
- **Jest:** Framework de testing
- **Supertest:** Testing de APIs
- **Faker.js:** Generacion de datos
- **TestContainers:** PostgreSQL para tests

### Frontend
- **Vitest:** Unit tests
- **React Testing Library:** Componentes
- **MSW:** Mock de APIs
- **Playwright:** E2E tests

### CI/CD
- **GitHub Actions:** Pipeline de CI
- **Coverage Reports:** Codecov / SonarQube

---

## Ambiente de Testing

```yaml
test_environment:
  database: PostgreSQL (TestContainers o dedicada)
  redis: Redis (mock o TestContainers)
  storage: LocalStorage mock
  external_apis: MSW mocks

test_data:
  seeds: /database/seeds/test/
  factories: /src/test/factories/
```

---

## Proximos Pasos

1. [ ] Crear TEST-PLAN-MAI-001.md a MAI-013
2. [ ] Definir casos de prueba por modulo
3. [ ] Configurar Jest/Vitest
4. [ ] Configurar Playwright
5. [ ] Configurar CI pipeline

---

## Referencias

- [ADR-010: Testing Strategy](../adr/ADR-010-testing-strategy.md)
- [ERP Generico - Test Plans](/projects/erp-generic/docs/04-test-plans/)

---

**Ultima actualizacion:** 2025-11-25
**Version:** 1.0.0
