session-select.test.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { describe, expect } from "bun:test"
  2. import { Effect, Layer } from "effect"
  3. import { Session } from "@/session/session"
  4. import { TestInstance } from "../fixture/fixture"
  5. import { testEffect } from "../lib/effect"
  6. import { httpApiLayer, requestInDirectory } from "./httpapi-layer"
  7. const it = testEffect(Layer.mergeAll(Session.defaultLayer, httpApiLayer))
  8. describe("tui.selectSession endpoint", () => {
  9. it.instance(
  10. "should return 200 when called with valid session",
  11. () =>
  12. Effect.gen(function* () {
  13. const tmp = yield* TestInstance
  14. const session = yield* Session.use.create({})
  15. const response = yield* requestInDirectory("/tui/select-session", tmp.directory, {
  16. method: "POST",
  17. headers: { "Content-Type": "application/json" },
  18. body: JSON.stringify({ sessionID: session.id }),
  19. })
  20. expect(response.status).toBe(200)
  21. const body = yield* response.json
  22. expect(body).toBe(true)
  23. }),
  24. { git: true },
  25. )
  26. it.instance(
  27. "should return 404 when session does not exist",
  28. () =>
  29. Effect.gen(function* () {
  30. const tmp = yield* TestInstance
  31. const nonExistentSessionID = "ses_nonexistent123"
  32. const response = yield* requestInDirectory("/tui/select-session", tmp.directory, {
  33. method: "POST",
  34. headers: { "Content-Type": "application/json" },
  35. body: JSON.stringify({ sessionID: nonExistentSessionID }),
  36. })
  37. expect(response.status).toBe(404)
  38. }),
  39. { git: true },
  40. )
  41. it.instance(
  42. "should return 400 when session ID format is invalid",
  43. () =>
  44. Effect.gen(function* () {
  45. const tmp = yield* TestInstance
  46. const invalidSessionID = "invalid_session_id"
  47. const response = yield* requestInDirectory("/tui/select-session", tmp.directory, {
  48. method: "POST",
  49. headers: { "Content-Type": "application/json" },
  50. body: JSON.stringify({ sessionID: invalidSessionID }),
  51. })
  52. expect(response.status).toBe(400)
  53. }),
  54. { git: true },
  55. )
  56. })