diff --git a/modules/markup/orgmode/orgmode_test.go b/modules/markup/orgmode/orgmode_test.go index ebda2271f2..1b66ac4d24 100644 --- a/modules/markup/orgmode/orgmode_test.go +++ b/modules/markup/orgmode/orgmode_test.go @@ -104,3 +104,70 @@ int a;
int a;
`)
}
+
+func TestRender_TocHeaderExtraction(t *testing.T) {
+ // Test single level headers
+ t.Run("SingleLevel", func(t *testing.T) {
+ input := `* Header 1
+* Header 2
+* Header 3
+`
+ ctx := markup.NewTestRenderContext()
+ _, err := orgmode.RenderString(ctx, input)
+ assert.NoError(t, err)
+ assert.Len(t, ctx.TocHeadingItems, 3)
+ assert.Equal(t, "Header 1", ctx.TocHeadingItems[0].InnerText)
+ assert.Equal(t, "Header 2", ctx.TocHeadingItems[1].InnerText)
+ assert.Equal(t, "Header 3", ctx.TocHeadingItems[2].InnerText)
+ for _, item := range ctx.TocHeadingItems {
+ assert.Equal(t, 1, item.HeadingLevel)
+ }
+ })
+
+ // Test nested headers
+ t.Run("NestedHeaders", func(t *testing.T) {
+ input := `* Level 1
+** Level 2
+*** Level 3
+** Another Level 2
+`
+ ctx := markup.NewTestRenderContext()
+ _, err := orgmode.RenderString(ctx, input)
+ assert.NoError(t, err)
+ assert.Len(t, ctx.TocHeadingItems, 4)
+ assert.Equal(t, 1, ctx.TocHeadingItems[0].HeadingLevel)
+ assert.Equal(t, 2, ctx.TocHeadingItems[1].HeadingLevel)
+ assert.Equal(t, 3, ctx.TocHeadingItems[2].HeadingLevel)
+ assert.Equal(t, 2, ctx.TocHeadingItems[3].HeadingLevel)
+ })
+
+ // Test headers with special characters
+ t.Run("SpecialCharacters", func(t *testing.T) {
+ input := `* Header with