session.test.ts 1.2 KB

1234567891011121314151617181920212223242526272829
  1. import { describe, expect, test } from "bun:test"
  2. import type { SessionMessageInfo } from "@opencode-ai/sdk/v2"
  3. import { isDefaultTitle, lastAssistantWithUsage } from "../../src/util/session"
  4. describe("util.session", () => {
  5. test("recognizes generated parent and child titles", () => {
  6. expect(isDefaultTitle("New session - 2026-06-06T12:34:56.789Z")).toBeTrue()
  7. expect(isDefaultTitle("Child session - 2026-06-06T12:34:56.789Z")).toBeTrue()
  8. expect(isDefaultTitle("New session - custom")).toBeFalse()
  9. })
  10. test("tracks usage across undo and redo boundaries", () => {
  11. const assistant = (id: string, input: number): SessionMessageInfo => ({
  12. id,
  13. type: "assistant",
  14. agent: "build",
  15. model: { id: "model", providerID: "provider" },
  16. content: [],
  17. tokens: { input, output: 0, reasoning: 0, cache: { read: 0, write: 0 } },
  18. time: { created: 0 },
  19. })
  20. const messages = [assistant("msg_z", 10), assistant("msg_a", 30)]
  21. expect(lastAssistantWithUsage(messages)?.tokens.input).toBe(30)
  22. expect(lastAssistantWithUsage(messages, "msg_a")?.tokens.input).toBe(10)
  23. expect(lastAssistantWithUsage(messages, "msg_missing")).toBeUndefined()
  24. expect(lastAssistantWithUsage(messages)?.tokens.input).toBe(30)
  25. })
  26. })