event-manifest.test.ts 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { describe, expect, test } from "bun:test"
  2. import { FileSystem, Integration, Permission, Project, Reference, Session, Workspace } from "../src"
  3. import { EventManifest } from "../src/event-manifest"
  4. import { IdeEvent } from "../src/ide-event"
  5. import { SessionEvent } from "../src/session-event"
  6. import { SessionTodo } from "../src/session-todo"
  7. import { SessionV1 } from "../src/session-v1"
  8. import { WorkspaceEvent } from "../src/workspace-event"
  9. describe("public event manifest", () => {
  10. test("owns the complete public event surface", () => {
  11. expect(EventManifest.ServerDefinitions.length).toBe(55)
  12. expect(EventManifest.Definitions.length).toBe(85)
  13. expect(SessionV1.Event.Definitions).toEqual([
  14. SessionV1.Event.Created,
  15. SessionV1.Event.Updated,
  16. SessionV1.Event.Deleted,
  17. SessionV1.Event.MessageUpdated,
  18. SessionV1.Event.MessageRemoved,
  19. SessionV1.Event.PartUpdated,
  20. SessionV1.Event.PartRemoved,
  21. SessionV1.Event.PartDelta,
  22. SessionV1.Event.Diff,
  23. SessionV1.Event.Error,
  24. ])
  25. expect(EventManifest.Latest.size).toBe(85)
  26. expect(EventManifest.Durable.size).toBe(32)
  27. })
  28. test("uses canonical definitions for current public events", () => {
  29. expect(Session.Event).toBe(SessionEvent)
  30. expect(Session.Event.Definitions).toBe(SessionEvent.Definitions)
  31. expect(Workspace.Event).toBe(WorkspaceEvent)
  32. expect(Workspace.Event.Definitions).toBe(WorkspaceEvent.Definitions)
  33. expect(EventManifest.Latest.get("session.next.step.ended")).toBe(SessionEvent.Step.Ended)
  34. expect(EventManifest.Latest.get("todo.updated")).toBe(SessionTodo.Event.Updated)
  35. expect(EventManifest.Latest.get("project.updated")).toBe(Project.Event.Updated)
  36. expect(Project.Event.Definitions).toEqual([Project.Event.Updated])
  37. expect(FileSystem.Event.Definitions).toEqual([FileSystem.Event.Edited])
  38. expect(Integration.Event.Definitions).toEqual([Integration.Event.Updated, Integration.Event.ConnectionUpdated])
  39. expect(Permission.Event.Definitions).toEqual([Permission.Event.Asked, Permission.Event.Replied])
  40. expect(Reference.Event.Definitions).toEqual([Reference.Event.Updated])
  41. expect(EventManifest.Latest.has("ide.installed")).toBe(false)
  42. expect(IdeEvent.Definitions).toEqual([IdeEvent.Installed])
  43. expect(EventManifest.Definitions.slice(40, 43)).toEqual([
  44. SessionV1.Event.PartDelta,
  45. SessionV1.Event.Diff,
  46. SessionV1.Event.Error,
  47. ])
  48. expect(EventManifest.Durable.has("session.next.step.ended.1")).toBe(false)
  49. expect(EventManifest.Durable.get("session.next.step.ended.2")).toBe(SessionEvent.Step.Ended)
  50. })
  51. })