member_grouping_test.gno
2.33 Kb ยท 93 lines
1package commondao
2
3import (
4 "testing"
5
6 "gno.land/p/nt/uassert"
7 "gno.land/p/nt/urequire"
8)
9
10func TestMemberGroupingAdd(t *testing.T) {
11 t.Run("defauls", func(t *testing.T) {
12 name := "Foo"
13 g := NewMemberGrouping()
14
15 uassert.False(t, g.Has(name), "expect grouping group not to be found")
16 uassert.Equal(t, 0, g.Size(), "expect grouping to be empty")
17 })
18
19 t.Run("success", func(t *testing.T) {
20 name := "Foo"
21 g := NewMemberGrouping()
22 mg, err := g.Add(name)
23
24 urequire.NoError(t, err, "expect no error")
25 uassert.True(t, g.Has(name), "expect grouping group to be found")
26 uassert.Equal(t, 1, g.Size(), "expect grouping to have a single group")
27
28 urequire.True(t, mg != nil, "expected grouping group to be not nil")
29 uassert.Equal(t, name, mg.Name(), "expect group to have the right name")
30 })
31
32 t.Run("duplicated name", func(t *testing.T) {
33 name := "Foo"
34 g := NewMemberGrouping()
35 _, err := g.Add(name)
36 urequire.NoError(t, err, "expect no error")
37
38 _, err = g.Add(name)
39 uassert.ErrorContains(t, err, "member group already exists: Foo", "expect duplication error")
40 })
41}
42
43func TestMemberGroupingGet(t *testing.T) {
44 t.Run("success", func(t *testing.T) {
45 name := "Foo"
46 g := NewMemberGrouping()
47 g.Add(name)
48
49 mg, found := g.Get(name)
50
51 urequire.True(t, found, "expect grouping group to be found")
52 urequire.True(t, mg != nil, "expect grouping group to be not nil")
53 uassert.Equal(t, name, mg.Name(), "expect group to have the right name")
54 })
55
56 t.Run("group not found", func(t *testing.T) {
57 g := NewMemberGrouping()
58
59 _, found := g.Get("Foo")
60
61 urequire.False(t, found, "expect grouping group to be not found")
62 })
63}
64
65func TestMemberGroupingDelete(t *testing.T) {
66 name := "Foo"
67 g := NewMemberGrouping()
68 g.Add(name)
69
70 err := g.Delete(name)
71
72 uassert.NoError(t, err, "expect no error")
73 urequire.False(t, g.Has(name), "expect grouping group not to be found")
74}
75
76func TestMemberGroupingIterate(t *testing.T) {
77 groups := []string{"Tier 1", "Tier 2", "Tier 3"}
78 g := NewMemberGrouping()
79 for _, name := range groups {
80 g.Add(name)
81 }
82
83 var i int
84 g.IterateByOffset(0, g.Size(), func(mg MemberGroup) bool {
85 urequire.True(t, mg != nil, "expect member group not to be nil")
86 urequire.Equal(t, groups[i], mg.Name(), "expect group to be iterated in order")
87
88 i++
89 return false
90 })
91
92 uassert.Equal(t, len(groups), i, "expect all groups to be iterated")
93}