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 "embed"
9 "io/fs"
10 "testing"
11
12 "gitroot.dev/libs/golang/plugin/test"
13)
14
15//go:embed test_ressources/*
16var fakeFs embed.FS
17
18type dataTest struct {
19 conf string
20 inputFile string
21 outputFile string
22}
23
24var data = []dataTest{{
25 conf: `{"metadata": [{"name": "type", "default": "test", "mandatory": true}]}`,
26 inputFile: "test_ressources/issue.md",
27 outputFile: "test_ressources/issue_res.md",
28}, {
29 conf: `{"metadata": [{"name": "type"}]}`,
30 inputFile: "test_ressources/issue.md",
31 outputFile: "test_ressources/issue_nomandatory_res.md",
32}, {
33 conf: `{"metadata": [{"name": "type", "default": "autogenerated", "mandatory": true, "type": "crc16"}]}`,
34 inputFile: "test_ressources/issue.md",
35 outputFile: "test_ressources/issue_autogenerated_res.md",
36}, {
37 conf: `{"metadata": [{"name": "id", "default": "autogenerated", "mandatory": true, "type": "crc16"}, {"name": "type", "default": "test", "mandatory": "true"}]}`,
38 inputFile: "test_ressources/issue.md",
39 outputFile: "test_ressources/issue_multiple_res.md",
40}}
41
42func TestIssue(t *testing.T) {
43 calledModifyContent := ""
44 s := test.NewFakeServer(t, test.Override{
45 Worktree: func() fs.FS {
46 return fakeFs
47 },
48 ModifyContent: func(path, content string) {
49 calledModifyContent = content
50 },
51 })
52 for _, d := range data {
53 p := Build(s)
54 p.Init("repoName", false, d.conf)
55 p.AddFile(d.inputFile)
56 res, _ := fs.ReadFile(fakeFs, d.outputFile)
57 if calledModifyContent != string(res) {
58 t.Errorf("%s= \n%s\n\nwant\n\n%s", d.outputFile, calledModifyContent, string(res))
59 }
60 }
61}