member_grouping_test.gno
3.51 Kb ยท 128 lines
1package commondao_test
2
3import (
4 "testing"
5
6 "gno.land/p/nt/uassert"
7 "gno.land/p/nt/urequire"
8
9 "gno.land/p/devx000/wip/nt/commondao"
10)
11
12func TestMemberGroupingAdd(t *testing.T) {
13 t.Run("defauls", func(t *testing.T) {
14 name := "Foo"
15 g := commondao.NewMemberGrouping()
16
17 uassert.False(t, g.Has(name), "expect grouping group not to be found")
18 uassert.Equal(t, 0, g.Size(), "expect grouping to be empty")
19 })
20
21 t.Run("success", func(t *testing.T) {
22 name := "Foo"
23 g := commondao.NewMemberGrouping()
24 mg, err := g.Add(name)
25
26 urequire.NoError(t, err, "expect no error")
27 uassert.True(t, g.Has(name), "expect grouping group to be found")
28 uassert.Equal(t, 1, g.Size(), "expect grouping to have a single group")
29
30 urequire.True(t, mg != nil, "expected grouping group to be not nil")
31 uassert.Equal(t, name, mg.Name(), "expect group to have the right name")
32 })
33
34 t.Run("duplicated name", func(t *testing.T) {
35 name := "Foo"
36 g := commondao.NewMemberGrouping()
37 _, err := g.Add(name)
38 urequire.NoError(t, err, "expect no error")
39
40 _, err = g.Add(name)
41 uassert.ErrorContains(t, err, "member group already exists: Foo", "expect duplication error")
42 })
43}
44
45func TestMemberGroupingGet(t *testing.T) {
46 t.Run("success", func(t *testing.T) {
47 name := "Foo"
48 g := commondao.NewMemberGrouping()
49 g.Add(name)
50
51 mg, found := g.Get(name)
52
53 urequire.True(t, found, "expect grouping group to be found")
54 urequire.True(t, mg != nil, "expect grouping group to be not nil")
55 uassert.Equal(t, name, mg.Name(), "expect group to have the right name")
56 })
57
58 t.Run("group not found", func(t *testing.T) {
59 g := commondao.NewMemberGrouping()
60
61 _, found := g.Get("Foo")
62
63 urequire.False(t, found, "expect grouping group to be not found")
64 })
65}
66
67func TestMemberGroupingDelete(t *testing.T) {
68 name := "Foo"
69 g := commondao.NewMemberGrouping()
70 g.Add(name)
71
72 err := g.Delete(name)
73
74 urequire.NoError(t, err, "expect no error")
75 uassert.False(t, g.Has(name), "expect grouping group not to be found")
76}
77
78func TestMemberGroupingIterate(t *testing.T) {
79 groups := []string{"Tier 1", "Tier 2", "Tier 3"}
80 g := commondao.NewMemberGrouping()
81 for _, name := range groups {
82 g.Add(name)
83 }
84
85 var i int
86 g.IterateByOffset(0, g.Size(), func(mg commondao.MemberGroup) bool {
87 urequire.True(t, mg != nil, "expect member group not to be nil")
88 urequire.Equal(t, groups[i], mg.Name(), "expect group to be iterated in order")
89
90 i++
91 return false
92 })
93
94 uassert.Equal(t, len(groups), i, "expect all groups to be iterated")
95}
96
97func TestMemberGroupingUseStorageFactory(t *testing.T) {
98 var (
99 groupName string
100 defaultMember = address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5")
101 )
102
103 fn := func(group string) commondao.MemberStorage {
104 groupName = group
105
106 // Create storage and add a default member
107 s := commondao.NewMemberStorage()
108 s.Add(defaultMember)
109 return s
110 }
111
112 grouping := commondao.NewMemberGrouping(commondao.UseStorageFactory(fn))
113 group, err := grouping.Add("foo")
114
115 urequire.NoError(t, err, "expect no group creation error")
116 uassert.True(t, group.Members().Has(defaultMember), "expect storage to have a default member")
117 uassert.Equal(t, "foo", groupName, "expect group name to match")
118}
119
120func TestMemberGroupingWithGroups(t *testing.T) {
121 defaultGroups := []string{"foo", "bar", "baz"}
122 grouping := commondao.NewMemberGrouping(commondao.WithGroups(defaultGroups...))
123
124 urequire.Equal(t, len(defaultGroups), grouping.Size(), "expect groups to be created")
125 for _, group := range defaultGroups {
126 uassert.True(t, grouping.Has(group), "expect group to be found: "+group)
127 }
128}