session.test.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { describe, expect, test } from "bun:test"
  2. import path from "path"
  3. import { Session } from "../../src/session"
  4. import { Bus } from "../../src/bus"
  5. import { Log } from "../../src/util/log"
  6. import { Instance } from "../../src/project/instance"
  7. const projectRoot = path.join(__dirname, "../..")
  8. Log.init({ print: false })
  9. describe("session.started event", () => {
  10. test("should emit session.started event when session is created", async () => {
  11. await Instance.provide({
  12. directory: projectRoot,
  13. fn: async () => {
  14. let eventReceived = false
  15. let receivedInfo: Session.Info | undefined
  16. const unsub = Bus.subscribe(Session.Event.Created, (event) => {
  17. eventReceived = true
  18. receivedInfo = event.properties.info as Session.Info
  19. })
  20. const session = await Session.create({})
  21. await new Promise((resolve) => setTimeout(resolve, 100))
  22. unsub()
  23. expect(eventReceived).toBe(true)
  24. expect(receivedInfo).toBeDefined()
  25. expect(receivedInfo?.id).toBe(session.id)
  26. expect(receivedInfo?.projectID).toBe(session.projectID)
  27. expect(receivedInfo?.directory).toBe(session.directory)
  28. expect(receivedInfo?.title).toBe(session.title)
  29. await Session.remove(session.id)
  30. },
  31. })
  32. })
  33. test("session.started event should be emitted before session.updated", async () => {
  34. await Instance.provide({
  35. directory: projectRoot,
  36. fn: async () => {
  37. const events: string[] = []
  38. const unsubStarted = Bus.subscribe(Session.Event.Created, () => {
  39. events.push("started")
  40. })
  41. const unsubUpdated = Bus.subscribe(Session.Event.Updated, () => {
  42. events.push("updated")
  43. })
  44. const session = await Session.create({})
  45. await new Promise((resolve) => setTimeout(resolve, 100))
  46. unsubStarted()
  47. unsubUpdated()
  48. expect(events).toContain("started")
  49. expect(events).toContain("updated")
  50. expect(events.indexOf("started")).toBeLessThan(events.indexOf("updated"))
  51. await Session.remove(session.id)
  52. },
  53. })
  54. })
  55. })