session-actions.test.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { afterEach, describe, expect, mock, spyOn, test } from "bun:test"
  2. import { Effect } from "effect"
  3. import { Instance } from "../../src/project/instance"
  4. import { Server } from "../../src/server/server"
  5. import { Session } from "../../src/session"
  6. import { SessionPrompt } from "../../src/session/prompt"
  7. import { Log } from "../../src/util/log"
  8. import { tmpdir } from "../fixture/fixture"
  9. Log.init({ print: false })
  10. afterEach(async () => {
  11. mock.restore()
  12. await Instance.disposeAll()
  13. })
  14. describe("session action routes", () => {
  15. test("abort route calls SessionPrompt.cancel", async () => {
  16. await using tmp = await tmpdir({ git: true })
  17. await Instance.provide({
  18. directory: tmp.path,
  19. fn: async () => {
  20. const session = await Session.create({})
  21. const cancel = spyOn(SessionPrompt, "cancel").mockResolvedValue()
  22. const app = Server.Default().app
  23. const res = await app.request(`/session/${session.id}/abort`, { method: "POST" })
  24. expect(res.status).toBe(200)
  25. expect(await res.json()).toBe(true)
  26. expect(cancel).toHaveBeenCalledWith(session.id)
  27. await Session.remove(session.id)
  28. },
  29. })
  30. })
  31. })