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}