GitRoot
Craft your forge, Build your project, Grow your community freely
1// SPDX-FileCopyrightText: 2025 Romain Maneschi <romain@gitroot.dev>
2//
3// SPDX-License-Identifier: EUPL-1.2
4
5package main
6
7import (
8 "testing"
9)
10
11func TestSimpleMetadata(t *testing.T) {
12 p := &Plugin{}
13 res, meta := p.mdToHTML("index.md", []byte("---\ncoucou: hello\napexRenderMetadatas: true\n---\n#Title"), map[string]string{})
14 want := "<dl><dt>coucou</dt><dd>hello</dd></dl>\n\n<p>#Title</p>\n"
15 if res != want {
16 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
17 }
18 if val, ok := meta["coucou"]; !ok || val != "hello" {
19 t.Errorf("meta coucou should be hello but was %s", val)
20 }
21}
22
23func TestBadMetadata(t *testing.T) {
24 p := &Plugin{}
25 res, meta := p.mdToHTML("index.md", []byte("---\n#Title"), map[string]string{})
26 want := "\n<hr>\n<p>#Title</p>\n"
27 if res != want {
28 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
29 }
30 if len(meta) != 0 {
31 t.Errorf("meta should be empty")
32 }
33}
34
35func TestComplexeMetadata(t *testing.T) {
36 p := &Plugin{}
37 res, meta := p.mdToHTML("index.md", []byte("---\n\"og:title\": hello\napexRenderMetadatas: true\n---\n#Title"), map[string]string{})
38 want := "<dl><dt>og:title</dt><dd>hello</dd></dl>\n\n<p>#Title</p>\n"
39 if res != want {
40 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
41 }
42 if val, ok := meta["og:title"]; !ok || val != "hello" {
43 t.Errorf("meta og:title should be hello but was %s", val)
44 }
45}
46
47func TestComplexeMetadataSpace(t *testing.T) {
48 p := &Plugin{}
49 res, meta := p.mdToHTML("index.md", []byte("---\nchecksum: sha256:e6e94e\napexRenderMetadatas: true\n---\n#Title"), map[string]string{})
50 want := "<dl><dt>checksum</dt><dd>sha256:e6e94e</dd></dl>\n\n<p>#Title</p>\n"
51 if res != want {
52 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
53 }
54 if val, ok := meta["checksum"]; !ok || val != "sha256:e6e94e" {
55 t.Errorf("meta checksum should be sha256:e6e94e but was %s", val)
56 }
57}
58
59func TestMetadataNoValue(t *testing.T) {
60 p := &Plugin{}
61 res, _ := p.mdToHTML("index.md", []byte("---\ncoucou:\napexRenderMetadatas: true\n---\n#Title"), map[string]string{})
62 want := "<dl><dt>coucou</dt><dd></dd></dl>\n\n<p>#Title</p>\n"
63 if res != want {
64 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
65 }
66}
67
68func TestBreakPage(t *testing.T) {
69 p := &Plugin{}
70 res, _ := p.mdToHTML("index.md", []byte("# Title\n\nHello world!\n\n---\n\nKiss"), map[string]string{})
71 want := "<h1 id=\"title\">Title</h1>\n\n<p>Hello world!</p>\n\n<hr>\n\n<p>Kiss</p>\n"
72 if res != want {
73 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
74 }
75}
76
77func TestBreakPageAndMeta(t *testing.T) {
78 p := &Plugin{}
79 res, _ := p.mdToHTML("index.md", []byte("---\ncoucou:\napexRenderMetadatas: true\n---\n# Title\n\nHello world!\n\n---\n\nKiss"), map[string]string{})
80 want := "<dl><dt>coucou</dt><dd></dd></dl>\n\n<h1 id=\"title\">Title</h1>\n\n<p>Hello world!</p>\n\n<hr>\n\n<p>Kiss</p>\n"
81 if res != want {
82 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
83 }
84}
85
86func TestBreakPageAndMeta2(t *testing.T) {
87 p := &Plugin{}
88 res, _ := p.mdToHTML("index.md", []byte("---\ncoucou\napexRenderMetadatas: true\n---\n# Title\n\nHello world!\n\n---\n\nKiss"), map[string]string{})
89 want := "<dl><dt>coucou</dt><dd></dd></dl>\n\n<h1 id=\"title\">Title</h1>\n\n<p>Hello world!</p>\n\n<hr>\n\n<p>Kiss</p>\n"
90 if res != want {
91 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
92 }
93}
94
95func TestLink(t *testing.T) {
96 p := &Plugin{}
97 res, _ := p.mdToHTML("/issues/1.md", []byte("[other](../2.md)"), map[string]string{})
98 want := "<p><a href=\"/2.html\">other</a></p>\n"
99 if res != want {
100 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
101 }
102}
103
104func TestLinkAnchor(t *testing.T) {
105 p := &Plugin{}
106 res, _ := p.mdToHTML("/issues/1.md", []byte("[other](../2.md#title)"), map[string]string{})
107 want := "<p><a href=\"/2.html#title\">other</a></p>\n"
108 if res != want {
109 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
110 }
111}
112
113func TestLinkInternalAnchor(t *testing.T) {
114 p := &Plugin{}
115 res, _ := p.mdToHTML("/issues/1.md", []byte("[other](#title)"), map[string]string{})
116 want := "<p><a href=\"/issues/1.html#title\">other</a></p>\n"
117 if res != want {
118 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
119 }
120}
121
122func TestLinkrelative(t *testing.T) {
123 p := &Plugin{}
124 res, _ := p.mdToHTML("/boards/board.md", []byte("[other](../issues/issue_44.md)"), map[string]string{})
125 want := "<p><a href=\"/issues/issue_44.html\">other</a></p>\n"
126 if res != want {
127 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
128 }
129}
130
131func TestHorizontalRule(t *testing.T) {
132 p := &Plugin{}
133 res, _ := p.mdToHTML("/boards/board.md", []byte("---\ncoucou\napexRenderMetadatas: true\nhorizontalRuleMetadatas: article---\n# Title\n\nHello world!\n\n---\n\nKiss"), map[string]string{})
134 want := "<dl><dt>coucou</dt><dd></dd></dl>\n\n<article><h1 id=\"title\">Title</h1>\n\n<p>Hello world!</p>\n\n</article><article>\n\n<p>Kiss</p>\n</article>"
135 if res != want {
136 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
137 }
138}
139
140func TestHorizontalRuleExtraMetadata(t *testing.T) {
141 p := &Plugin{}
142 res, _ := p.mdToHTML("/boards/board.md", []byte("---\ncoucou\napexRenderMetadatas: true---\n# Title\n\nHello world!\n\n---\n\nKiss"), map[string]string{"horizontalRuleMetadatas": "section"})
143 want := "<dl><dt>coucou</dt><dd></dd></dl>\n\n<section><h1 id=\"title\">Title</h1>\n\n<p>Hello world!</p>\n\n</section><section>\n\n<p>Kiss</p>\n</section>"
144 if res != want {
145 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
146 }
147}