54 lines
2.1 KiB
Go
54 lines
2.1 KiB
Go
package vault
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestRewriteAssetLinksPreservesCodeBlocks(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
name string
|
|
code string
|
|
}{
|
|
{"缩进", " \n"},
|
|
{"制表符", "\t\n"},
|
|
{"引用围栏", "> ```markdown\n> \n> ```\n"},
|
|
{"引用缩进", "> \n"},
|
|
{"列表围栏", "- ```markdown\n \n ```\n"},
|
|
{"列表缩进", "- 项目\n\n \n"},
|
|
{"有序列表缩进", "10. 项目\n\n \n"},
|
|
{"引用内嵌列表", "> - ```markdown\n> \n> ```\n"},
|
|
{"围栏内四格关闭标记", "```markdown\n ```\n\n```\n"},
|
|
{"标题后缩进代码", "# 标题\n \n"},
|
|
{"分隔线后缩进代码", "* * *\n \n"},
|
|
} {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
input := tc.code + "\n\n"
|
|
want := tc.code + "\n\n"
|
|
if got := string(RewriteAssetLinks([]byte(input), "a", "b")); got != want {
|
|
t.Fatalf("代码示例应保持原样,真实链接应更新:\n got %q\nwant %q", got, want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestRewriteAssetLinksInContainersAndParagraphs(t *testing.T) {
|
|
for _, input := range []string{
|
|
"> \n",
|
|
"- \n",
|
|
"- 项目\n\n \n",
|
|
"- 项目\n - 子项\n \n",
|
|
"段落\n \n",
|
|
"> 段落\n \n",
|
|
"- 段落\n\n \n",
|
|
"10. 项目\n\n \n",
|
|
"- 项目\n - 子项\n ```markdown\n \n ```\n\n \n",
|
|
"> ```markdown\n> \n\n\n",
|
|
} {
|
|
want := strings.ReplaceAll(input, "a.assets/real.png", "b.assets/real.png")
|
|
if got := string(RewriteAssetLinks([]byte(input), "a", "b")); got != want {
|
|
t.Errorf("容器缩进与段落续行不应被当作代码:\n got %q\nwant %q", got, want)
|
|
}
|
|
}
|
|
}
|