- Reutilise .ev-link pour le lien "Detail" de la liste des sites au lieu de dupliquer ses regles de style. - site.location vide est traite comme absent (affiche "-"), pas seulement null/undefined. - siteId de la page detail suit desormais route.paramMap de facon reactive plutot qu'une lecture ponctuelle du snapshot, pour rester a jour quand Angular reutilise l'instance du composant en changeant de site. - Ajoute provideRouter([]) manquant dans un test dashboard existant, necessaire depuis l'ajout du lien "Voir les sites" au rebase sur dev.
43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
import { TestBed } from '@angular/core/testing';
|
|
import { ActivatedRoute, convertToParamMap, provideRouter } from '@angular/router';
|
|
import { BehaviorSubject } from 'rxjs';
|
|
import { SiteDetailPlaceholder } from './site-detail-placeholder';
|
|
|
|
describe('SiteDetailPlaceholder', () => {
|
|
it("affiche l'identifiant du site depuis la route", () => {
|
|
const paramMap = new BehaviorSubject(convertToParamMap({ siteId: 'SITE001' }));
|
|
TestBed.configureTestingModule({
|
|
imports: [SiteDetailPlaceholder],
|
|
providers: [
|
|
provideRouter([]),
|
|
{ provide: ActivatedRoute, useValue: { paramMap } },
|
|
],
|
|
});
|
|
|
|
const fixture = TestBed.createComponent(SiteDetailPlaceholder);
|
|
fixture.detectChanges();
|
|
|
|
expect(fixture.nativeElement.textContent).toContain('SITE001');
|
|
});
|
|
|
|
it('met à jour l\'affichage quand le paramètre change sans recréer le composant', () => {
|
|
const paramMap = new BehaviorSubject(convertToParamMap({ siteId: 'SITE001' }));
|
|
TestBed.configureTestingModule({
|
|
imports: [SiteDetailPlaceholder],
|
|
providers: [
|
|
provideRouter([]),
|
|
{ provide: ActivatedRoute, useValue: { paramMap } },
|
|
],
|
|
});
|
|
|
|
const fixture = TestBed.createComponent(SiteDetailPlaceholder);
|
|
fixture.detectChanges();
|
|
|
|
paramMap.next(convertToParamMap({ siteId: 'SITE002' }));
|
|
fixture.detectChanges();
|
|
|
|
expect(fixture.nativeElement.textContent).toContain('SITE002');
|
|
expect(fixture.nativeElement.textContent).not.toContain('SITE001');
|
|
});
|
|
});
|