front(test): Vitest + premier spec (ErrorService)

- Vitest (cohérent avec le back) pour les tests de logique/services purs ;
  vitest-setup charge @angular/compiler (fallback JIT requis pour importer
  les symboles @angular/* partiellement compilés)
- error.service.spec.ts : 6 cas couvrant toMessage()
- script test -> vitest run (+ test:watch). Tests de composants TestBed =
  plugin Angular dédié, hors périmètre pour l'instant.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
z3n
2026-06-26 13:17:00 +00:00
parent c9fa0cd97b
commit f9df2dd1bb
5 changed files with 188 additions and 8 deletions

View File

@@ -0,0 +1,36 @@
import { describe, it, expect } from 'vitest';
import { HttpErrorResponse } from '@angular/common/http';
import { ErrorService } from './error.service';
describe('ErrorService.toMessage', () => {
const svc = new ErrorService();
it('retourne un body string', () => {
const err = new HttpErrorResponse({ error: 'Boom', status: 500 });
expect(svc.toMessage(err)).toBe('Boom');
});
it('extrait body.message', () => {
const err = new HttpErrorResponse({ error: { message: 'Champ invalide' }, status: 400 });
expect(svc.toMessage(err)).toBe('Champ invalide');
});
it('joint un body.message tableau', () => {
const err = new HttpErrorResponse({ error: { message: ['a', 'b'] }, status: 400 });
expect(svc.toMessage(err)).toBe('a, b');
});
it('status 0 -> serveur injoignable', () => {
const err = new HttpErrorResponse({ status: 0 });
expect(svc.toMessage(err)).toContain('injoignable');
});
it('Error standard -> son message', () => {
expect(svc.toMessage(new Error('oops'))).toBe('oops');
});
it('valeur inconnue -> fallback', () => {
expect(svc.toMessage(null)).toBe('Une erreur est survenue.');
expect(svc.toMessage(undefined, 'custom')).toBe('custom');
});
});