package docsite import "testing" const testCorpus = "testdata/corpus" func TestLoadReadsNavAndPages(t *testing.T) { site, err := Load(testCorpus) if err != nil { t.Fatalf("load: %v", err) } if site.Index == nil || site.Index.Title != "Documentation" { t.Fatalf("index not loaded: %+v", site.Index) } if len(site.Sections) != 2 { t.Fatalf("got %d sections, want 2", len(site.Sections)) } if got := site.Sections[1].Pages[0].Slug; got != "reference/cli" { t.Errorf("nested slug = %q, want reference/cli", got) } if got := len(site.Pages()); got != 3 { t.Errorf("Pages() = %d, want 3 (index + two)", got) } } func TestParsePageFindsHeadingsLinksAndFences(t *testing.T) { site, err := Load(testCorpus) if err != nil { t.Fatalf("load: %v", err) } p := site.BySlug["getting-started"] if p == nil { t.Fatal("no getting-started page") } if len(p.Headings) != 3 { t.Fatalf("got %d headings, want 3", len(p.Headings)) } if p.Headings[1].Anchor != "install-the-cli" { t.Errorf("anchor = %q, want install-the-cli", p.Headings[1].Anchor) } if len(p.Fences) != 1 || p.Fences[0].Lang != "sh" { t.Fatalf("fences = %+v, want one sh fence", p.Fences) } if len(p.Links) != 1 || p.Links[0].Target != "reference/cli" { t.Fatalf("links = %+v, want one to reference/cli", p.Links) } } func TestIndexLinkResolvesToIndexSlug(t *testing.T) { l := parseDocsHref("/docs") if l.Target != "index" { t.Errorf("parseDocsHref(\"/docs\") target = %q, want index", l.Target) } l = parseDocsHref("/docs/reference/cli#carlos-ship") if l.Target != "reference/cli" || l.Fragment != "carlos-ship" { t.Errorf("got %+v, want reference/cli #carlos-ship", l) } } func TestMarkdownFilesWalksNested(t *testing.T) { files, err := MarkdownFiles(testCorpus) if err != nil { t.Fatalf("walk: %v", err) } want := map[string]bool{"index": true, "getting-started": true, "reference/cli": true} if len(files) != len(want) { t.Fatalf("got %v, want %d files", files, len(want)) } for _, f := range files { if !want[f] { t.Errorf("unexpected file %q", f) } } }