import { afterEach, describe, expect, mock, spyOn, test } from "bun:test" import { Effect } from "effect" import { Instance } from "../../src/project/instance" import { Server } from "../../src/server/server" import { Session } from "../../src/session" import { SessionPrompt } from "../../src/session/prompt" import { Log } from "../../src/util/log" import { tmpdir } from "../fixture/fixture" Log.init({ print: false }) afterEach(async () => { mock.restore() await Instance.disposeAll() }) describe("session action routes", () => { test("abort route calls SessionPrompt.cancel", async () => { await using tmp = await tmpdir({ git: true }) await Instance.provide({ directory: tmp.path, fn: async () => { const session = await Session.create({}) const cancel = spyOn(SessionPrompt, "cancel").mockResolvedValue() const app = Server.Default().app const res = await app.request(`/session/${session.id}/abort`, { method: "POST" }) expect(res.status).toBe(200) expect(await res.json()).toBe(true) expect(cancel).toHaveBeenCalledWith(session.id) await Session.remove(session.id) }, }) }) })