Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}