session-title-fallback.test.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { describe, expect, test } from "bun:test"
  2. import { SessionTitleFallback } from "../src/session-title-fallback.js"
  3. const root = { title: undefined, time: { created: 0 } }
  4. const child = { ...root, parentID: "ses_parent" }
  5. describe("SessionTitleFallback", () => {
  6. test("supplies timestamped compatibility titles", () => {
  7. expect(SessionTitleFallback.withTimestampedFallback(root)).toBe("New session - 1970-01-01T00:00:00.000Z")
  8. expect(SessionTitleFallback.withTimestampedFallback(child)).toBe("Child session - 1970-01-01T00:00:00.000Z")
  9. expect(SessionTitleFallback.withTimestampedFallback({ ...root, title: "Generated title" })).toBe("Generated title")
  10. expect(SessionTitleFallback.withTimestampedFallback({ ...root, title: "" })).toBe("")
  11. })
  12. test("supplies compact display labels", () => {
  13. expect(SessionTitleFallback.displayLabel(root)).toBe("New session")
  14. expect(SessionTitleFallback.displayLabel(child)).toBe("Child session")
  15. expect(SessionTitleFallback.displayLabel({ title: "", parentID: "ses_parent" })).toBe("Child session")
  16. expect(SessionTitleFallback.displayLabel({ title: "New session - 2026-07-30T18:45:03.662Z" })).toBe("New session")
  17. expect(SessionTitleFallback.displayLabel({ title: "Child session - 2026-07-30T18:45:03.662Z" })).toBe(
  18. "Child session",
  19. )
  20. expect(SessionTitleFallback.displayLabel({ title: "Generated title" })).toBe("Generated title")
  21. })
  22. test("recognizes historical fallback titles", () => {
  23. expect(SessionTitleFallback.isFallbackTitle(undefined)).toBeTrue()
  24. expect(SessionTitleFallback.isFallbackTitle("New session - 2026-07-30T18:45:03.662Z")).toBeTrue()
  25. expect(SessionTitleFallback.isFallbackTitle("Child session - 2026-07-30T18:45:03.662Z")).toBeTrue()
  26. expect(SessionTitleFallback.isFallbackTitle("")).toBeFalse()
  27. expect(SessionTitleFallback.isFallbackTitle("New session - custom")).toBeFalse()
  28. })
  29. test("recognizes only the fallback associated with a session", () => {
  30. expect(SessionTitleFallback.isExactRootFallback(root)).toBeTrue()
  31. expect(
  32. SessionTitleFallback.isExactRootFallback({ ...root, title: "New session - 1970-01-01T00:00:00.000Z" }),
  33. ).toBeTrue()
  34. expect(
  35. SessionTitleFallback.isExactRootFallback({ ...root, title: "New session - 2099-01-01T00:00:00.000Z" }),
  36. ).toBeFalse()
  37. expect(
  38. SessionTitleFallback.isExactRootFallback({
  39. ...child,
  40. title: "Child session - 1970-01-01T00:00:00.000Z",
  41. }),
  42. ).toBeFalse()
  43. })
  44. })