package astrodocs import "testing" const testAstroPageHTML = ` Components | Astro Docs

Components

Astro components are basic HTML templates.

Props

Pass props to customize output.

const { title } = Astro.props;
` func TestParsePage(t *testing.T) { parser := NewParser() page, err := parser.ParsePage(testAstroPageHTML, "https://docs.astro.build/en/guides/components/") if err != nil { t.Fatalf("ParsePage failed: %v", err) } if page.Title != "Components" { t.Fatalf("unexpected title: %q", page.Title) } if page.Description == "" { t.Fatal("expected non-empty description") } if len(page.Sections) < 2 { t.Fatalf("expected at least 2 sections, got %d", len(page.Sections)) } if len(page.CodeBlocks) == 0 { t.Fatal("expected at least one code block") } foundJS := false for _, block := range page.CodeBlocks { if block.Language == "js" { foundJS = true break } } if !foundJS { t.Fatalf("expected at least one js code block, got %+v", page.CodeBlocks) } } func TestParseSidebar(t *testing.T) { parser := NewParser() html := ` ` sections, err := parser.ParseSidebar(html) if err != nil { t.Fatalf("ParseSidebar failed: %v", err) } if len(sections) != 2 { t.Fatalf("expected 2 sections, got %d", len(sections)) } if sections[0].DocURL != "https://docs.astro.build/en/guides/components/" { t.Fatalf("unexpected resolved URL: %q", sections[0].DocURL) } } func TestResolveURL(t *testing.T) { got := resolveURL("https://docs.astro.build", "/en/guides/components/") if got != "https://docs.astro.build/en/guides/components/" { t.Fatalf("resolveURL returned %q", got) } }