import { describe, it, expect } from "vitest"; import { Endpoint } from "./endpoint"; describe("Endpoint", () => { it("expose le path normalisé (trim)", () => { const e = new Endpoint<{ x: number }>(" communes?limit=1 "); expect(e.path).toBe("communes?limit=1"); expect(e.toString()).toBe("communes?limit=1"); }); it("refuse le path vide", () => { expect(() => new Endpoint("")).toThrow(RangeError); expect(() => new Endpoint(" ")).toThrow(RangeError); }); it("normalizePath et isNonEmpty", () => { expect(Endpoint.normalizePath("a")).toBe("a"); expect(Endpoint.isNonEmpty(" x ")).toBe(true); expect(Endpoint.isNonEmpty("")).toBe(false); }); it("normalizePath enlève le slash initial et les doubles slash (relatif)", () => { expect(Endpoint.normalizePath("/users/1")).toBe("users/1"); expect(Endpoint.normalizePath("//users//1")).toBe("users/1"); expect(Endpoint.normalizePath("v1//users//x?limit=1")).toBe( "v1/users/x?limit=1", ); }); it("normalizePath pour URL absolue : pathname sans doubles slash", () => { expect( Endpoint.normalizePath("https://example.com/api//v1//x"), ).toBe("https://example.com/api/v1/x"); }); it("looksLikeDataProviderPath", () => { expect(Endpoint.looksLikeDataProviderPath("dataProvider(foo)")).toBe(true); expect(Endpoint.looksLikeDataProviderPath(" DataProvider(x)")).toBe(true); expect(Endpoint.looksLikeDataProviderPath("users/1")).toBe(false); }); });