mirror of
https://github.com/anomalyco/opencode.git
synced 2026-11-13 11:39:41 +03:00
52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
import { afterEach, expect, test } from "bun:test"
|
|
import { CodeRenderable, MarkdownRenderable, SyntaxStyle } from "@opentui/core"
|
|
import { testRender, useRenderer } from "@opentui/solid"
|
|
import { batch, createSignal } from "solid-js"
|
|
|
|
const renderers: {
|
|
renderer: Awaited<ReturnType<typeof testRender>>["renderer"]
|
|
syntaxStyle: SyntaxStyle
|
|
}[] = []
|
|
|
|
afterEach(async () => {
|
|
await Promise.all(
|
|
renderers.splice(0).map(async (output) => {
|
|
output.renderer.destroy()
|
|
await output.renderer.closed
|
|
output.syntaxStyle.destroy()
|
|
}),
|
|
)
|
|
})
|
|
|
|
test.each(["completion-first", "content-first"])("applies final fence text in a Solid batch: %s", async (order) => {
|
|
const [content, setContent] = createSignal("```text\ninitial")
|
|
const [streaming, setStreaming] = createSignal(true)
|
|
const output = await testRender(
|
|
() => {
|
|
const renderer = useRenderer()
|
|
const syntaxStyle = SyntaxStyle.fromStyles({ default: { fg: "#ffffff" } }, renderer.nativeScene)
|
|
renderers.push({ renderer, syntaxStyle })
|
|
return (
|
|
<markdown syntaxStyle={syntaxStyle} content={content()} streaming={streaming()} internalBlockMode="top-level" />
|
|
)
|
|
},
|
|
{ width: 80, height: 12, remote: true },
|
|
)
|
|
await output.renderOnce()
|
|
|
|
batch(() => {
|
|
if (order === "completion-first") setStreaming(false)
|
|
setContent("```text\ninitial final\n```")
|
|
if (order === "content-first") setStreaming(false)
|
|
})
|
|
await output.renderOnce()
|
|
|
|
const markdown = output.renderer.root.getChildren()[0]
|
|
expect(markdown).toBeInstanceOf(MarkdownRenderable)
|
|
const block = markdown?.getChildren()[0]
|
|
expect(block).toBeInstanceOf(CodeRenderable)
|
|
if (!(block instanceof CodeRenderable)) throw new Error("Expected a code fence")
|
|
expect(block.content).toBe("initial final")
|
|
expect(markdown?.getChildren()).toHaveLength(1)
|
|
})
|