feat: add session slug generator

This commit is contained in:
Peter Steinberger
2026-01-17 06:23:21 +00:00
parent bd32cc40e6
commit 5ebfc0738f
5 changed files with 171 additions and 3 deletions

View File

@@ -0,0 +1,26 @@
import { afterEach, describe, expect, it, vi } from "vitest";
import { createSessionSlug } from "./session-slug.js";
describe("session slug", () => {
afterEach(() => {
vi.restoreAllMocks();
});
it("generates a two-word slug by default", () => {
vi.spyOn(Math, "random").mockReturnValue(0);
const slug = createSessionSlug();
expect(slug).toBe("amber-atlas");
});
it("adds a numeric suffix when the base slug is taken", () => {
vi.spyOn(Math, "random").mockReturnValue(0);
const slug = createSessionSlug((id) => id === "amber-atlas");
expect(slug).toBe("amber-atlas-2");
});
it("falls back to three words when collisions persist", () => {
vi.spyOn(Math, "random").mockReturnValue(0);
const slug = createSessionSlug((id) => id === "amber-atlas" || id === "amber-atlas-2");
expect(slug).toBe("amber-atlas-atlas");
});
});