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"))
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 TestComplexeMetadata(t *testing.T) {
24 p := &Plugin{}
25 res, meta := p.mdToHTML("index.md", []byte("---\n\"og:title\": hello\napexRenderMetadatas: true\n---\n#Title"))
26 want := "<dl><dt>og:title</dt><dd>hello</dd></dl>\n\n<p>#Title</p>\n"
27 if res != want {
28 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
29 }
30 if val, ok := meta["og:title"]; !ok || val != "hello" {
31 t.Errorf("meta og:title should be hello but was %s", val)
32 }
33}
34
35func TestMetadataNoValue(t *testing.T) {
36 p := &Plugin{}
37 res, _ := p.mdToHTML("index.md", []byte("---\ncoucou:\napexRenderMetadatas:true\n---\n#Title"))
38 want := "<dl><dt>coucou</dt><dd></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}
43
44func TestBreakPage(t *testing.T) {
45 p := &Plugin{}
46 res, _ := p.mdToHTML("index.md", []byte("# Title\n\nHello world!\n\n---\n\nKiss"))
47 want := "<h1 id=\"title\">Title</h1>\n\n<p>Hello world!</p>\n\n<hr>\n\n<p>Kiss</p>\n"
48 if res != want {
49 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
50 }
51}
52
53func TestBreakPageAndMeta(t *testing.T) {
54 p := &Plugin{}
55 res, _ := p.mdToHTML("index.md", []byte("---\ncoucou:\napexRenderMetadatas:true\n---\n# Title\n\nHello world!\n\n---\n\nKiss"))
56 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"
57 if res != want {
58 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
59 }
60}
61
62func TestBreakPageAndMeta2(t *testing.T) {
63 p := &Plugin{}
64 res, _ := p.mdToHTML("index.md", []byte("---\ncoucou\napexRenderMetadatas:true\n---\n# Title\n\nHello world!\n\n---\n\nKiss"))
65 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"
66 if res != want {
67 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
68 }
69}
70
71func TestLink(t *testing.T) {
72 p := &Plugin{}
73 res, _ := p.mdToHTML("/issues/1.md", []byte("[other](../2.md)"))
74 want := "<p><a href=\"/2.html\">other</a></p>\n"
75 if res != want {
76 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
77 }
78}
79
80func TestLinkAnchor(t *testing.T) {
81 p := &Plugin{}
82 res, _ := p.mdToHTML("/issues/1.md", []byte("[other](../2.md#title)"))
83 want := "<p><a href=\"/2.html#title\">other</a></p>\n"
84 if res != want {
85 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
86 }
87}
88
89func TestLinkInternalAnchor(t *testing.T) {
90 p := &Plugin{}
91 res, _ := p.mdToHTML("/issues/1.md", []byte("[other](#title)"))
92 want := "<p><a href=\"/issues/1.html#title\">other</a></p>\n"
93 if res != want {
94 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
95 }
96}
97
98func TestLinkrelative(t *testing.T) {
99 p := &Plugin{}
100 res, _ := p.mdToHTML("/boards/board.md", []byte("[other](../issues/issue_44.md)"))
101 want := "<p><a href=\"/issues/issue_44.html\">other</a></p>\n"
102 if res != want {
103 t.Errorf("---\n%s\n--- want ---\n%s\n---", res, want)
104 }
105}