SPB Git forge

spb/toveli

Public
14commits 1branches 0releases
1.1 MBsize
maindefault branch
2 h agolast push
TypeScript 50.6% JavaScript 46.1% SQL 2.1% Shell 0.6% CSS 0.5%
2.3 KB · 24 lines typescript
Raw Blame History
1import { describe, expect, it } from "vitest";2import { addressKey, parseAddress, normCity, saleCategory, rentCategory, normRegion, displayCity, coordKey } from "../src/lib/normalize";3describe("normalisation d'adresses", () => {4  it("construit une clé stable malgré abréviations et accents", () => {5    expect(addressKey("1225 Rue Saint-Marc", "Montréal")).toBe(addressKey("1225 St-Marc", "montreal"));6    expect(addressKey("200 Boul. René-Lévesque O", "Québec")).toBe(addressKey("200 boulevard Rene-Levesque Ouest", "Quebec City"));7  });8  it("sépare numéro civique, unité et rue", () => {9    const p = parseAddress("1234-A Avenue des Érables, app. 4");10    expect(p.civic).toBe("1234a"); expect(p.unit).toBe("4"); expect(p.street).toBe("avenue erables");11  });12  it("refuse une clé sans numéro civique (évite les fusions hasardeuses)", () => { expect(addressKey("Rue des Érables", "Québec")).toBeNull(); });13  it("normalise les villes", () => { expect(normCity("Québec City")).toBe("quebec"); expect(normCity("St-Jérôme")).toBe("saint jerome"); expect(displayCity("val dor")).toBe("Val Dor"); expect(displayCity("Saint-Félix-de-Valois")).toBe("Saint-Félix-de-Valois"); });14  it("cellule de coordonnées ~10 m", () => { expect(coordKey(45.49218, -73.57886)).toBe("45.4922,-73.5789"); });15});16describe("catégories", () => {17  it("vente", () => { expect(saleCategory("Maison")).toBe("maison"); expect(saleCategory("Condo")).toBe("condo"); expect(saleCategory("Triplex")).toBe("plex"); expect(saleCategory("Terrain")).toBe("terrain"); expect(saleCategory("Fermette/Agricole")).toBe("maison"); expect(saleCategory("", "Condo à vendre")).toBe("condo"); });18  it("location", () => { expect(rentCategory("4½")).toBe("logement"); expect(rentCategory("Chambre")).toBe("chambre"); expect(rentCategory("Maison")).toBe("maison"); });19});20describe("régions", () => {21  it("codes et graphies", () => { expect(normRegion("15")).toBe("Laurentides"); expect(normRegion("Monteregie Rive Sud Montreal")).toBe("Montérégie"); expect(normRegion("Region De Quebec")).toBe("Capitale-Nationale"); });22  it("repli par municipalité", () => { expect(normRegion(null, "Brossard")).toBe("Montérégie"); expect(normRegion("", "Val Dor")).toBe("Abitibi-Témiscamingue"); expect(normRegion(null, "Nulle-Part")).toBeNull(); });23});24