import { DataProviderKey } from "./dataProviderKey"; type LegacyCheckedTicket = { id: string }; type ControlRateType = "A" | "B"; type ControlStats = { checkedTickets: LegacyCheckedTicket[]; gauge: number; insidePeople: number; soldTickets: number; controlRateType: ControlRateType; totalCheckedTickets: number; }; describe("DataProviderKey", () => { it("chaîne sans optional chaining quand le schéma Swagger a des propriétés optionnelles", () => { type Perm = {access_control?: {use_app?: boolean}}; type AdminLike = {permissions?: Perm}; const key = new DataProviderKey("admin"); const useApp = key.permissions.access_control.use_app; expect(useApp.path).toBe("admin.permissions.access_control.use_app"); }); it("construit le chemin cumulatif via les accès", () => { const myKey = new DataProviderKey( "idDonneesDeStats", ).checkedTickets[0]; expect(myKey.toString()).toBe("idDonneesDeStats.checkedTickets.0"); expect(myKey.path).toBe("idDonneesDeStats.checkedTickets.0"); }); it("permet la navigation type-safe sur les propriétés", () => { const key = new DataProviderKey("stats"); const gaugeKey = key.gauge; expect(gaugeKey.path).toBe("stats.gauge"); expect(gaugeKey.toString()).toBe("stats.gauge"); }); it("fonctionne avec new", () => { const key = new DataProviderKey("root"); expect(key.path).toBe("root"); }); });