SPB Git forge
38commits 1branches 0releases
338.7 MBsize
maindefault branch
4 h agolast push
HTML 53.9% TypeScript 44.5% JavaScript 0.6% SQL 0.5%
2.5 KB · 46 lines typescript
Raw Blame History
1import { describe, expect, it } from "vitest";2import { discoverySignificance, eventFingerprint, eventTitle, significanceFor, TRACKED_FACILITY_FIELDS } from "./events.js";34const spec = (field: string) => TRACKED_FACILITY_FIELDS.find((s) => s.field === field)!;56describe("event fingerprint", () => {7  it("is stable for the same entity/type/value/day and differs otherwise", () => {8    const a = eventFingerprint("facility", "fac_1", "capacity_changed", 48, "2026-09-11");9    expect(a).toBe(eventFingerprint("facility", "fac_1", "capacity_changed", 48, "2026-09-11"));10    expect(a).not.toBe(eventFingerprint("facility", "fac_1", "capacity_changed", 48, "2026-09-12"));11    expect(a).not.toBe(eventFingerprint("facility", "fac_1", "capacity_changed", 60, "2026-09-11"));12    expect(a).not.toBe(eventFingerprint("facility", "fac_2", "capacity_changed", 48, "2026-09-11"));13    expect(a).toMatch(/^[0-9a-f]{64}$/);14  });15});1617describe("significance", () => {18  it("follows the documented scale", () => {19    expect(significanceFor(spec("status"), "announced", "under_construction")).toBe(90);20    expect(significanceFor(spec("operatorId"), "op_a", "op_b")).toBe(85);21    expect(significanceFor(spec("itCapacityMw"), 100, 125)).toBe(80); // +25 %22    expect(significanceFor(spec("itCapacityMw"), 100, 110)).toBe(50); // +10 %23    expect(significanceFor(spec("plannedPowerMw"), 120, 180)).toBe(80);24    expect(significanceFor(spec("openedOn"), "2026", "2027-Q2")).toBe(60);25    expect(significanceFor(spec("facilityType"), "colocation", "hyperscale")).toBe(20);26  });27  it("discovery: 65 for big or pipeline facilities, 40 otherwise", () => {28    expect(discoverySignificance(80, false)).toBe(65);29    expect(discoverySignificance(10, true)).toBe(65);30    expect(discoverySignificance(10, false)).toBe(40);31    expect(discoverySignificance(null, false)).toBe(40);32  });33});3435describe("titles", () => {36  it("renders the planned capacity template", () => {37    const t = eventTitle("Compass Red Oak", spec("plannedPowerMw"), 120, 180);38    expect(t.summary).toBe("Planned capacity changed from 120 MW to 180 MW.");39    expect(t.title).toContain("planned capacity changed to 180 MW");40  });41  it("renders status and date templates", () => {42    expect(eventTitle("X", spec("status"), "announced", "under_construction").summary).toBe("Status changed from announced to under construction.");43    expect(eventTitle("X", spec("openedOn"), "2026", "2027-Q2").summary).toBe("Opening date changed from 2026 to Q2 2027.");44  });45});46