markdown-stream.test.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. import { describe, expect, test } from "bun:test"
  2. import { stream } from "./markdown-stream"
  3. describe("markdown stream", () => {
  4. test("heals incomplete emphasis while streaming", () => {
  5. expect(stream("hello **world", true)).toEqual([{ raw: "hello **world", src: "hello **world**", mode: "live" }])
  6. expect(stream("say `code", true)).toEqual([{ raw: "say `code", src: "say `code`", mode: "live" }])
  7. })
  8. test("keeps incomplete links non-clickable until they finish", () => {
  9. expect(stream("see [docs](https://example.com/gu", true)).toEqual([
  10. { raw: "see [docs](https://example.com/gu", src: "see docs", mode: "live" },
  11. ])
  12. })
  13. test("splits an unfinished trailing code fence from stable content", () => {
  14. expect(stream("before\n\n```ts\nconst x = 1", true)).toEqual([
  15. { raw: "before\n\n", src: "before\n\n", mode: "live" },
  16. { raw: "```ts\nconst x = 1", src: "```ts\nconst x = 1", mode: "live" },
  17. ])
  18. })
  19. test("keeps reference-style markdown as one block", () => {
  20. expect(stream("[docs][1]\n\n[1]: https://example.com", true)).toEqual([
  21. {
  22. raw: "[docs][1]\n\n[1]: https://example.com",
  23. src: "[docs][1]\n\n[1]: https://example.com",
  24. mode: "live",
  25. },
  26. ])
  27. })
  28. })