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}