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:
36
front-public/src/app/core/error.service.spec.ts
Normal file
36
front-public/src/app/core/error.service.spec.ts
Normal 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');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user