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 plugin
6
7import (
8 "encoding/json"
9 "testing"
10
11 "gitroot.dev/libs/golang/plugin/model"
12)
13
14type dataCheckEqualTest struct {
15 name string
16 aPlugin Plugin
17 bPlugin Plugin
18 shouldBeEqual bool
19}
20
21var fullLadybug1 = `{"Url":"","Checksum":"","Name":"ladybug","Version":"0.0.2","Active":true,"Run":[{"Path":"issues/**/*.md","Branch":["*"],"When":["add","mod"],"Write":{"Git":[{"Path":"issues/**/*.md","Can":["mod"]}],"Web":[],"Exec":[]},"Configuration":{"metadata":[{"default":"autogenerated","mandatory":true,"name":"id","type":"crc16"},{"default":50,"mandatory":true,"name":"priority","type":"int"},{"default":null,"mandatory":false,"name":"assignee","type":"user"},{"default":"triage","mandatory":false,"name":"status","type":"string"},{"default":"issue","mandatory":false,"name":"kind","type":"string"}]}}]}`
22var fullLadybug2 = `{"Url":"","Checksum":"","Name":"ladybug","Version":"0.0.2","Active":true,"Run":[{"Path":"issues/**/*.md","Branch":["*"],"When":["add","mod"],"Write":{"Git":[{"Path":"issues/**/*.md","Can":["mod"]}],"Web":[],"Exec":[]},"Configuration":{"metadata":[{"default":"autogenerated","mandatory":true,"name":"id","type":"crc16"},{"default":50,"mandatory":true,"name":"priority","type":"int"},{"default":null,"mandatory":false,"name":"assignee","type":"user"},{"default":"triage","mandatory":false,"name":"status","type":"string"},{"default":"issue","mandatory":false,"name":"kind","type":"string"}]}}]}`
23
24func TestEqualPlugin(t *testing.T) {
25 laydybug1 := Plugin{}
26 json.Unmarshal([]byte(fullLadybug1), &laydybug1)
27 laydybug2 := Plugin{}
28 json.Unmarshal([]byte(fullLadybug2), &laydybug2)
29
30 data := []dataCheckEqualTest{
31 {name: "empty", aPlugin: buildPlugin("a"), bPlugin: buildPlugin("a"), shouldBeEqual: true},
32 {name: "different", aPlugin: buildPlugin("a"), bPlugin: buildPlugin("b"), shouldBeEqual: false},
33 {name: "fullLadybug", aPlugin: laydybug1, bPlugin: laydybug2, shouldBeEqual: true},
34 }
35
36 for _, d := range data {
37 ok := Equal(d.aPlugin, d.bPlugin)
38 if ok != d.shouldBeEqual {
39 t.Fatalf("%s fail with %t should be %t", d.name, ok, d.shouldBeEqual)
40 }
41 }
42}
43
44func buildPlugin(name string) Plugin {
45 return Plugin{
46 Name: name,
47 Version: "0.0.0",
48 Active: true,
49 Run: []PluginRun{buildPluginRun([]string{"*"}, buildPluginWriteRight("*", model.PluginWriteRightCanAdd))},
50 }
51}