markdown-worker-transport.test.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { expect, test } from "bun:test"
  2. import { createWorkerTransport } from "./markdown-worker-transport"
  3. test("posts one request and retains only the latest queued snapshot per key", () => {
  4. const posted: number[] = []
  5. const superseded: number[] = []
  6. const transport = createWorkerTransport<{ id: number; key: string }>({
  7. post: (request) => posted.push(request.id),
  8. supersede: (request) => superseded.push(request.id),
  9. })
  10. transport.send({ id: 1, key: "code" })
  11. transport.send({ id: 2, key: "code" })
  12. transport.send({ id: 3, key: "code" })
  13. expect(posted).toEqual([1])
  14. expect(superseded).toEqual([2])
  15. expect(transport.queued()).toBe(1)
  16. transport.complete("code", 1)
  17. expect(posted).toEqual([1, 3])
  18. expect(transport.queued()).toBe(0)
  19. })
  20. test("ignores a disposed request response after the key is reused", () => {
  21. const posted: number[] = []
  22. const transport = createWorkerTransport<{ id: number; key: string }>({
  23. post: (request) => posted.push(request.id),
  24. supersede: () => {},
  25. })
  26. transport.send({ id: 1, key: "code" })
  27. transport.dispose("code")
  28. transport.send({ id: 2, key: "code" })
  29. transport.send({ id: 3, key: "code" })
  30. transport.complete("code", 1)
  31. expect(posted).toEqual([1, 2])
  32. expect(transport.queued()).toBe(1)
  33. transport.complete("code", 2)
  34. expect(posted).toEqual([1, 2, 3])
  35. })
  36. test("drops queued snapshots when a key is disposed", () => {
  37. const superseded: number[] = []
  38. const transport = createWorkerTransport<{ id: number; key: string }>({
  39. post: () => {},
  40. supersede: (request) => superseded.push(request.id),
  41. })
  42. transport.send({ id: 1, key: "code" })
  43. transport.send({ id: 2, key: "code" })
  44. transport.dispose("code")
  45. expect(superseded).toEqual([2])
  46. expect(transport.queued()).toBe(0)
  47. })