Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}