From 0c79c86b40a02338891365d6ecce9bc004fdef01 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 13 Mar 2026 21:25:20 +0000 Subject: [PATCH] test: tighten shared singleton and sample coverage --- src/shared/global-singleton.test.ts | 16 ++++++++++++++++ src/shared/string-sample.test.ts | 24 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/src/shared/global-singleton.test.ts b/src/shared/global-singleton.test.ts index 0f0a29c506c..3d537f5cc4b 100644 --- a/src/shared/global-singleton.test.ts +++ b/src/shared/global-singleton.test.ts @@ -27,6 +27,15 @@ describe("resolveGlobalSingleton", () => { expect(resolveGlobalSingleton(TEST_KEY, create)).toBeUndefined(); expect(create).toHaveBeenCalledTimes(1); }); + + it("reuses a prepopulated global value without calling the factory", () => { + const existing = { value: 7 }; + const create = vi.fn(() => ({ value: 1 })); + (globalThis as Record)[TEST_KEY] = existing; + + expect(resolveGlobalSingleton(TEST_KEY, create)).toBe(existing); + expect(create).not.toHaveBeenCalled(); + }); }); describe("resolveGlobalMap", () => { @@ -36,4 +45,11 @@ describe("resolveGlobalMap", () => { expect(first).toBe(second); }); + + it("preserves existing map contents across repeated resolution", () => { + const map = resolveGlobalMap(TEST_MAP_KEY); + map.set("a", 1); + + expect(resolveGlobalMap(TEST_MAP_KEY).get("a")).toBe(1); + }); }); diff --git a/src/shared/string-sample.test.ts b/src/shared/string-sample.test.ts index 4cff7957fe0..7ced1e7407a 100644 --- a/src/shared/string-sample.test.ts +++ b/src/shared/string-sample.test.ts @@ -4,6 +4,7 @@ import { summarizeStringEntries } from "./string-sample.js"; describe("summarizeStringEntries", () => { it("returns emptyText for empty lists", () => { expect(summarizeStringEntries({ entries: [], emptyText: "any" })).toBe("any"); + expect(summarizeStringEntries({ entries: null })).toBe(""); }); it("joins short lists without a suffix", () => { @@ -18,4 +19,27 @@ describe("summarizeStringEntries", () => { }), ).toBe("a, b, c, d (+1)"); }); + + it("uses a floored limit and clamps non-positive values to one entry", () => { + expect( + summarizeStringEntries({ + entries: ["a", "b", "c"], + limit: 2.8, + }), + ).toBe("a, b (+1)"); + expect( + summarizeStringEntries({ + entries: ["a", "b", "c"], + limit: 0, + }), + ).toBe("a (+2)"); + }); + + it("uses the default limit when none is provided", () => { + expect( + summarizeStringEntries({ + entries: ["a", "b", "c", "d", "e", "f", "g"], + }), + ).toBe("a, b, c, d, e, f (+1)"); + }); });