Files
enkly-ai/pkg/officekit/markdown_test.go
enkly 79ce8dc4c0
Some checks failed
Go CI Pipeline / build_and_test (push) Failing after 22m0s
Init Project
2026-10-30 18:06:55 +01:00

75 lines
2.0 KiB
Go

package officekit
import "testing"
func TestMarkdownToParagraphsStructure(t *testing.T) {
src := "# Title\n\nAn intro paragraph.\n\n## Section\n\n- First item\n- Second item\n"
paras := MarkdownToParagraphs(src)
want := []Paragraph{
{Text: "Title", Style: StyleHeading1},
{Text: "An intro paragraph.", Style: StyleNormal},
{Text: "Section", Style: StyleHeading2},
{Text: "First item", Style: StyleBullet},
{Text: "Second item", Style: StyleBullet},
}
if len(paras) != len(want) {
t.Fatalf("got %d paragraphs, want %d: %+v", len(paras), len(want), paras)
}
for i := range want {
if paras[i].Text != want[i].Text || paras[i].Style != want[i].Style {
t.Errorf("paragraph %d: got %+v, want %+v", i, paras[i], want[i])
}
}
}
func TestMarkdownToParagraphsFlattensInlineFormatting(t *testing.T) {
paras := MarkdownToParagraphs("This has **bold** and *italic* and `code` text.")
if len(paras) != 1 {
t.Fatalf("got %d paragraphs, want 1: %+v", len(paras), paras)
}
want := "This has bold and italic and code text."
if paras[0].Text != want {
t.Errorf("got %q, want %q", paras[0].Text, want)
}
}
func TestMarkdownToParagraphsFeedsBuildDocx(t *testing.T) {
paras := MarkdownToParagraphs("# Report\n\nBody text here.\n")
data, err := BuildDocx(paras)
if err != nil {
t.Fatalf("BuildDocx(MarkdownToParagraphs(...)): %v", err)
}
text, err := ReadDocxText(data)
if err != nil {
t.Fatalf("ReadDocxText: %v", err)
}
for _, want := range []string{"Report", "Body text here."} {
if !containsLine(text, want) {
t.Errorf("expected read-back text to contain line %q, got:\n%s", want, text)
}
}
}
func containsLine(text, line string) bool {
for _, l := range splitLines(text) {
if l == line {
return true
}
}
return false
}
func splitLines(s string) []string {
var lines []string
start := 0
for i := 0; i < len(s); i++ {
if s[i] == '\n' {
lines = append(lines, s[start:i])
start = i + 1
}
}
lines = append(lines, s[start:])
return lines
}