v1-isolation.test.ts 1.4 KB

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