SPB Git forge

spb/ka-maps

Public
6commits 1branches 0releases
448.0 KBsize
maindefault branch
29 days agolast push
TypeScript 87.7% CSS 12.3%
1.3 KB · 38 lines typescript
Raw Blame History
1/**2 * Author: Simon-Pierre Boucher3 * Contact: contact@spboucher.ai4 * Project: Groupe Ka / Ka Maps5 */67import { describe, expect, it } from "vitest";8import { cameraFromParams, cameraToParams } from "../src/utils/url.js";910describe("camera URL state", () => {11  it("round-trips lat/lng/zoom", () => {12    const params = cameraToParams({ lat: 46.8139, lng: -71.208, zoom: 13 });13    expect(params.get("lat")).toBe("46.81390");14    expect(params.get("lng")).toBe("-71.20800");15    expect(params.get("zoom")).toBe("13");16    expect(cameraFromParams(params)).toEqual({ lat: 46.8139, lng: -71.208, zoom: 13 });17  });1819  it("preserves unrelated params", () => {20    const base = new URLSearchParams("city=Québec&view=carte");21    const params = cameraToParams({ lat: 46.8, lng: -71.2, zoom: 12.25 }, base);22    expect(params.get("city")).toBe("Québec");23    expect(params.get("zoom")).toBe("12.25");24  });2526  it("returns null on malformed or missing values", () => {27    expect(cameraFromParams(new URLSearchParams(""))).toBeNull();28    expect(cameraFromParams(new URLSearchParams("lat=x&lng=1&zoom=2"))).toBeNull();29    expect(cameraFromParams(new URLSearchParams("lat=99&lng=1&zoom=2"))).toBeNull();30  });3132  it("clamps zoom into [0,22]", () => {33    expect(34      cameraFromParams(new URLSearchParams("lat=46&lng=-71&zoom=40"))?.zoom,35    ).toBe(22);36  });37});38