Casos de prueba del frontend
Esta sección documenta, spec por spec, los casos de uso que cubren las pruebas unitarias del frontend Angular (describe > it, escenario, resultado esperado y mocks). Complementa la visión general de Testing y calidad.
Fuente: instantánea de la rama feat/meta_connections del frontend.
Cifras
| Métrica | Valor |
|---|---|
Archivos *.spec.ts | 92 |
Bloques describe | 308 |
Casos it(...) | 883 |
Specs con TestBed | 65 |
Specs sin TestBed (instancia directa con new) | 27 |
Specs con xit, xdescribe, fdescribe o fit | 0 (ninguno omitido ni enfocado) |
| Área | Specs | Tests |
|---|---|---|
core/services | 11 | 71 |
core/states | 14 | 140 |
core/guards | 4 | 19 |
core/interceptors | 2 | 12 |
core/helpers | 2 | 19 |
shared | 13 | 102 |
features | 46 | 520 |
Páginas
| Página | Contenido |
|---|---|
| Servicios y helpers del core | servicios API y UI, presence.helper, nav.constant |
| Estados NgRx del core | acciones, reducers, efectos y selectores |
| Guards e interceptores | auth, loggedIn, admin, permission, device-token, http-error |
| Compartidos | componentes, directivas, pipe truncate, rutas |
| Conexiones (Meta) | tabla y modal de WhatsApp; huecos de la rama Meta |
| Whaticket: lista de chats | chat-list.component.spec.ts |
| Whaticket: componentes del chat | conversación, menús, diálogos, routing |
| Chat interno | chat interno y mensajes programados |
| Features de gestión | departamentos, etiquetas, respuestas rápidas, tickets bloqueados, módulos, contactos |
| Features de cuenta y configuración | login, perfil, configuración |
Cómo ejecutar
npm test # ng test: Karma + Jasmine, Chrome, modo watch
ng test --watch=false --browsers=ChromeHeadless # una sola pasada
ng test --code-coverage # informe en coverage/backoffice
ng test --include='**/connections-table.component.spec.ts' # un solo spec
Configuración: karma.conf.js (frameworks jasmine y @angular-devkit/build-angular, reporters progress y kjhtml, restartOnFileChange), tsconfig.spec.json (tipos jasmine, incluye src/**/*.spec.ts) y src/test.ts (teardown.destroyAfterEach: true). No hay helpers ni mocks compartidos: cada spec define sus propios dobles.
Convenciones de TestBed y mocking
- Dobles con Jasmine:
jasmine.createSpyObj(49 specs) para servicios,Router,ToastrNotificationService, etc.;spyOnpara métodos puntuales. - Instancia directa: 27 specs no usan
TestBed; construyen la clase connewy espías (por ejemploconnections-table.component.spec.ts). - HTTP:
HttpClientTestingModuleoprovideHttpClientTestingconHttpTestingControlleren 8 specs (servicios API e interceptores). - NgRx:
provideMockStore(4 specs) yprovideMockActions(6 specs) para efectos; reducers, acciones y selectores se prueban como funciones puras. - Plantillas:
NO_ERRORS_SCHEMAen 27 specs para ignorar componentes hijos;TranslateModuleen 34 specs. - Asincronía:
fakeAsyncen 4 specs yjasmine.clocken 1; no se usan marble tests.
Qué NO está cubierto
- No hay pruebas e2e ni de integración con backend real.
- No hay umbrales de cobertura configurados (solo reporte).
- Sin specs:
ConnectionInstagramModalComponent,connection-channel-modal,connection-web-modal,connections-filter,authorizeInstagram,handleMetaOAuthReturn,instagramExpiry(detalle en Conexiones (Meta)). - Los servicios, guards, interceptores y estados sin spec propio no se documentan aquí por definición: solo hay 92 specs frente a más de 100 archivos no-spec en
core/services,core/guards,core/interceptorsycore/states.