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}