committee_test.gno
2.55 Kb · 96 lines
1package evaluation
2
3import (
4 "testing"
5
6 "gno.land/p/nt/testutils/v0"
7)
8
9func TestCommitteeMembers(t *testing.T) {
10 members := []address{testutils.TestAddress("member1"), testutils.TestAddress("member2"), testutils.TestAddress("member3")}
11 c := NewCommittee()
12
13 t.Run("Designate Committee Members", func(t *testing.T) {
14 c.DesignateMembers(members)
15 if !isEqualAddressSlice(c.members, members) {
16 t.Errorf("Designated Committee members got %v expcted %v", members, c.members)
17 }
18 })
19
20 t.Run("Dismiss Committee Members", func(t *testing.T) {
21 c.DismissMembers(members)
22 })
23}
24
25func TestCategoryEvaluationCriteria(t *testing.T) {
26 member := testutils.TestAddress("member")
27 category := "document"
28 criteria := []string{"clarity", "usage"}
29 category2 := "bounty"
30 criteria2 := []string{"complexity"}
31 expectedGategory := NewCategory(category, criteria)
32 expectedGategory2 := NewCategory(category2, criteria2)
33
34 c := NewCommittee()
35 c.DesignateMembers([]address{member})
36
37 t.Run("Add First Committee Category and Evaluation Criteria", func(t *testing.T) {
38 testing.SetOriginCaller(member)
39 c.AddCategory(category, criteria)
40 value, exists := c.categories.Get(category)
41 if !exists {
42 t.Errorf("Add first category %s failed", category)
43 }
44 gotCategory := value.(*Category)
45 if gotCategory.name != expectedGategory.name {
46 t.Errorf("First Committee category got %s expected %s", gotCategory.name, expectedGategory.name)
47 }
48 })
49
50 t.Run("Add Second Committee Category and Evaluation Criteria", func(t *testing.T) {
51 testing.SetOriginCaller(member)
52 c.AddCategory(category2, criteria2)
53 value2, exists2 := c.categories.Get(category2)
54 if !exists2 {
55 t.Errorf("Add second category %s failed", category2)
56 }
57 gotCategory2 := value2.(*Category)
58 if gotCategory2.name != expectedGategory2.name {
59 t.Errorf("Second Committee category got %s expected %s", gotCategory2.name, expectedGategory2.name)
60 }
61 })
62
63 t.Run("Approve First Committee Category", func(t *testing.T) {
64 testing.SetOriginCaller(member)
65 approved := c.ApproveCategory(category, VoteYes)
66 if !approved {
67 value, _ := c.categories.Get(category)
68 gotCategory := value.(*Category)
69 t.Errorf("Approved First Committee category got %s expected %s", gotCategory.status, "Approved")
70 }
71 })
72}
73
74func isEqualStringSlice(a, b []string) bool {
75 if len(a) != len(b) {
76 return false
77 }
78 for i := range a {
79 if a[i] != b[i] {
80 return false
81 }
82 }
83 return true
84}
85
86func isEqualAddressSlice(a, b []address) bool {
87 if len(a) != len(b) {
88 return false
89 }
90 for i := range a {
91 if a[i] != b[i] {
92 return false
93 }
94 }
95 return true
96}