mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-03-30 13:54:01 +00:00
Adds test cases for filtering sessions by directory, root sessions only, start time, search terms, and result limits to ensure the listing functionality works correctly for all filter combinations.
91 lines
2.7 KiB
TypeScript
91 lines
2.7 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import path from "path"
|
|
import { Instance } from "../../src/project/instance"
|
|
import { Session } from "../../src/session"
|
|
import { Log } from "../../src/util/log"
|
|
|
|
const projectRoot = path.join(__dirname, "../..")
|
|
Log.init({ print: false })
|
|
|
|
describe("Session.list", () => {
|
|
test("filters by directory", async () => {
|
|
await Instance.provide({
|
|
directory: projectRoot,
|
|
fn: async () => {
|
|
const first = await Session.create({})
|
|
|
|
const otherDir = path.join(projectRoot, "..", "__session_list_other")
|
|
const second = await Instance.provide({
|
|
directory: otherDir,
|
|
fn: async () => Session.create({}),
|
|
})
|
|
|
|
const sessions = [...Session.list({ directory: projectRoot })]
|
|
const ids = sessions.map((s) => s.id)
|
|
|
|
expect(ids).toContain(first.id)
|
|
expect(ids).not.toContain(second.id)
|
|
},
|
|
})
|
|
})
|
|
|
|
test("filters root sessions", async () => {
|
|
await Instance.provide({
|
|
directory: projectRoot,
|
|
fn: async () => {
|
|
const root = await Session.create({ title: "root-session" })
|
|
const child = await Session.create({ title: "child-session", parentID: root.id })
|
|
|
|
const sessions = [...Session.list({ roots: true })]
|
|
const ids = sessions.map((s) => s.id)
|
|
|
|
expect(ids).toContain(root.id)
|
|
expect(ids).not.toContain(child.id)
|
|
},
|
|
})
|
|
})
|
|
|
|
test("filters by start time", async () => {
|
|
await Instance.provide({
|
|
directory: projectRoot,
|
|
fn: async () => {
|
|
const session = await Session.create({ title: "new-session" })
|
|
const futureStart = Date.now() + 86400000
|
|
|
|
const sessions = [...Session.list({ start: futureStart })]
|
|
expect(sessions.length).toBe(0)
|
|
},
|
|
})
|
|
})
|
|
|
|
test("filters by search term", async () => {
|
|
await Instance.provide({
|
|
directory: projectRoot,
|
|
fn: async () => {
|
|
await Session.create({ title: "unique-search-term-abc" })
|
|
await Session.create({ title: "other-session-xyz" })
|
|
|
|
const sessions = [...Session.list({ search: "unique-search" })]
|
|
const titles = sessions.map((s) => s.title)
|
|
|
|
expect(titles).toContain("unique-search-term-abc")
|
|
expect(titles).not.toContain("other-session-xyz")
|
|
},
|
|
})
|
|
})
|
|
|
|
test("respects limit parameter", async () => {
|
|
await Instance.provide({
|
|
directory: projectRoot,
|
|
fn: async () => {
|
|
await Session.create({ title: "session-1" })
|
|
await Session.create({ title: "session-2" })
|
|
await Session.create({ title: "session-3" })
|
|
|
|
const sessions = [...Session.list({ limit: 2 })]
|
|
expect(sessions.length).toBe(2)
|
|
},
|
|
})
|
|
})
|
|
})
|