30 lines
949 B
TypeScript
30 lines
949 B
TypeScript
import * as React from "react"
|
|
import { renderToStaticMarkup } from "react-dom/server"
|
|
import { describe, expect, it } from "vitest"
|
|
|
|
import { AnsiText, resolveAnsiComponent } from "./ansi-text"
|
|
|
|
function TestComponent({ children }: { children?: string }) {
|
|
return <code>{children}</code>
|
|
}
|
|
|
|
describe("AnsiText", () => {
|
|
it("resolves direct, CommonJS, and nested default exports", () => {
|
|
expect(resolveAnsiComponent(TestComponent)).toBe(TestComponent)
|
|
expect(resolveAnsiComponent({ default: TestComponent })).toBe(TestComponent)
|
|
expect(resolveAnsiComponent({ default: { default: TestComponent } })).toBe(
|
|
TestComponent
|
|
)
|
|
})
|
|
|
|
it("renders ANSI SGR output during server rendering", () => {
|
|
const markup = renderToStaticMarkup(
|
|
<AnsiText>{"\u001b[32mDone\u001b[39m"}</AnsiText>
|
|
)
|
|
|
|
expect(markup).toContain("Done")
|
|
expect(markup).toContain("color:")
|
|
expect(markup).not.toContain("\u001b")
|
|
})
|
|
})
|