v1-isolation.test.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { expect, test } from "bun:test"
  2. import { LegacyEventV1 } from "../src/legacy-event.js"
  3. import { PermissionV1 } from "../src/permission-v1.js"
  4. import { QuestionV1 } from "../src/question-v1.js"
  5. import { SessionV1 } from "../src/session-v1.js"
  6. const isolatedLegacyEvent = await import("../src/v1/legacy-event.js")
  7. const isolatedPermission = await import("../src/v1/permission.js")
  8. const isolatedQuestion = await import("../src/v1/question.js")
  9. const isolatedSession = await import("../src/v1/session.js")
  10. test("compatibility entrypoints preserve isolated V1 schema identity", () => {
  11. expect(LegacyEventV1).toBe(isolatedLegacyEvent.LegacyEventV1)
  12. expect(PermissionV1).toBe(isolatedPermission.PermissionV1)
  13. expect(QuestionV1).toBe(isolatedQuestion.QuestionV1)
  14. expect(SessionV1).toBe(isolatedSession.SessionV1)
  15. })
  16. test("current source does not import the V1 subtree directly", async () => {
  17. const allowed = new Set([
  18. "filesystem-v1.ts",
  19. "legacy-event.ts",
  20. "permission-v1.ts",
  21. "question-v1.ts",
  22. "session-v1.ts",
  23. ])
  24. const files = [...new Bun.Glob("*.ts").scanSync(new URL("../src", import.meta.url).pathname)].filter(
  25. (file) => !allowed.has(file),
  26. )
  27. const directImports = await Promise.all(
  28. files.map(async (file) => ({ file, source: await Bun.file(new URL(`../src/${file}`, import.meta.url)).text() })),
  29. ).then((values) => values.filter((value) => value.source.includes('from "./v1/')))
  30. expect(directImports).toEqual([])
  31. })