package parser import ( "strings" "testing" ) func TestRenderMarkdown_Mermaid(t *testing.T) { input := "```mermaid\ngraph TD\n A --> B\n```\n" got, err := renderMarkdown([]byte(input)) if err != nil { t.Fatalf("renderMarkdown() error = %v", err) } want := `
graph TD A --> B` if string(got) != want { t.Errorf("renderMarkdown() = %q, want %q", got, want) } } func TestRenderMarkdown_KnownLanguageGetsSyntaxHighlighted(t *testing.T) { input := "```go\nfunc main() {}\n```\n" got, err := renderMarkdown([]byte(input)) if err != nil { t.Fatalf("renderMarkdown() error = %v", err) } if !strings.Contains(string(got), `class="chroma"`) { t.Errorf("renderMarkdown() = %q, want chroma-highlighted output for a known language", got) } if strings.Contains(string(got), `class="mermaid"`) { t.Errorf("renderMarkdown() = %q, non-mermaid block should not get mermaid class", got) } } func TestRenderMarkdown_UnknownLanguageFallsBackToPlain(t *testing.T) { input := "```this-language-does-not-exist-anywhere\nsome text\n```\n" got, err := renderMarkdown([]byte(input)) if err != nil { t.Fatalf("renderMarkdown() error = %v", err) } if !strings.Contains(string(got), `
`) {
t.Errorf("renderMarkdown() = %q, want standard fenced code block rendering for an unrecognized language", got)
}
}
func TestRenderMarkdown_NoLanguageFallsBackToPlain(t *testing.T) {
input := "```\nplain text\n```\n"
got, err := renderMarkdown([]byte(input))
if err != nil {
t.Fatalf("renderMarkdown() error = %v", err)
}
if !strings.Contains(string(got), ``) {
t.Errorf("renderMarkdown() = %q, want standard fenced code block rendering without a language", got)
}
}
func TestRenderMarkdown_GFMTable(t *testing.T) {
input := "| A | B |\n|---|---|\n| 1 | 2 |\n"
got, err := renderMarkdown([]byte(input))
if err != nil {
t.Fatalf("renderMarkdown() error = %v", err)
}
if !strings.Contains(string(got), "") {
t.Errorf("renderMarkdown() = %q, want a rendered table", got)
}
}
func TestRenderMarkdown_Footnote(t *testing.T) {
input := "Text with a footnote.[^1]\n\n[^1]: The footnote body.\n"
got, err := renderMarkdown([]byte(input))
if err != nil {
t.Fatalf("renderMarkdown() error = %v", err)
}
if !strings.Contains(string(got), `class="footnotes"`) {
t.Errorf("renderMarkdown() = %q, want rendered footnotes section", got)
}
}
func TestRenderMarkdown_RawHTMLAllowed(t *testing.T) {
input := "raw html\n"
got, err := renderMarkdown([]byte(input))
if err != nil {
t.Fatalf("renderMarkdown() error = %v", err)
}
if !strings.Contains(string(got), `raw html`) {
t.Errorf("renderMarkdown() = %q, want raw HTML passed through unescaped", got)
}
}