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