Files
aego/tools/gendocs/site/editorial_test.go

51 lines
2.6 KiB
Go

package site
import (
"html"
"regexp"
"strings"
"testing"
)
func TestLocalNamesAreNotRegistryLinks(t *testing.T) {
conv := newConverter()
source := "enum State { Idle, Run }\nstruct Weapon { Range float }\nfloor := node.Find(\"Floor\")\nvalues := []Weapon{Weapon{Range: 2}}\nother := node.Get<Weapon>()\n"
md := "`Floor`, `State`, `Range` and `Weapon.Range` are user names.\n\n" +
"[Explicit Floor](ref:Floor), `aego/math.Clamp`.\n\n```aes\n" + source + "```"
aliases := map[string]string{"Floor": "wrong-floor", "State": "wrong-state", "Range": "wrong-range", "Weapon.Range": "wrong-field", "aego/math.Clamp": "math-clamp"}
p := &pageCtx{resolve: func(id string) (string, bool) { u, ok := aliases[id]; return u, ok }, autoResolve: func(id string) (string, bool) { return "math-clamp", id == "aego/math.Clamp" }, broken: func(id string) { t.Errorf("broken: %s", id) }}
got, err := conv.render(p, md)
if err != nil {
t.Fatal(err)
}
if strings.Count(got, `href="wrong-floor"`) != 1 || strings.Contains(got, `href="wrong-state"`) || strings.Contains(got, `href="wrong-range"`) || strings.Contains(got, `href="wrong-field"`) {
t.Fatalf("guessed a link for a local symbol: %s", got)
}
if !strings.Contains(got, `href="math-clamp"`) {
t.Fatal("lost the qualified API reference")
}
code := regexp.MustCompile(`(?s)<code class="lang-aes">(.*?)</code>`).FindStringSubmatch(got)
if len(code) != 2 || html.UnescapeString(tagRe.ReplaceAllString(code[1], "")) != source {
t.Fatalf("copied code differs from source: %s", got)
}
}
func TestEmbeddedArticleCannotAddAnotherH1(t *testing.T) {
exp := fixture()
for i := range exp.Entries {
if exp.Entries[i].ID == "engine.SpriteRenderer" {
exp.Entries[i].Component = &ComponentInfo{}
exp.Entries[i].Body = "Schema description.\n\n# Embedded article\n\n## Details\n\nAn explanation."
exp.Entries[i].Translations = map[string]Translation{"ru": {Body: "Описание.\n\n# Встроенная статья\n\n## Подробности\n\nПояснение."}}
}
}
_, _, pages := build(t, exp, Options{})
page := pages["ref/engine.SpriteRenderer.html"]
if strings.Count(page, "<h1 ") != 1 || !strings.Contains(page, `<span class="legacy-anchor" id="embedded-article">`) || strings.Contains(page, ">Embedded article</h") || !strings.Contains(page, `<h2 id="details">`) {
t.Fatalf("invalid embedded heading hierarchy: %s", page)
}
if translated := pages["ru/ref/engine.SpriteRenderer.html"]; !strings.Contains(translated, `<span class="legacy-anchor" id="embedded-article">`) || !strings.Contains(translated, `<h2 id="details">`) {
t.Fatalf("translation lost the old embedded-title anchor: %s", translated)
}
}