Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

member_test.gno

1.37 Kb · 43 lines
 1package hub_test
 2
 3import (
 4	"testing"
 5
 6	"gno.land/p/gnoland/boards/exts/hub/v0"
 7	"gno.land/p/gnoland/boards/v0"
 8	"gno.land/p/nt/urequire/v0"
 9)
10
11func TestNewSafeMember(t *testing.T) {
12	ref := boards.User{
13		Address: alice,
14		Roles:   []boards.Role{"owner", "admin"},
15	}
16
17	member := hub.NewSafeMember(ref)
18
19	urequire.Equal(t, alice.String(), member.Address().String(), "expect address to match")
20	urequire.Equal(t, 2, len(member.Roles()), "expect role count to match")
21	urequire.Equal(t, "owner", member.Roles()[0], "expect first role to match")
22	urequire.Equal(t, "admin", member.Roles()[1], "expect second role to match")
23}
24
25func TestNewSafeMemberWithoutRoles(t *testing.T) {
26	member := hub.NewSafeMember(boards.User{Address: bob})
27
28	urequire.Equal(t, bob.String(), member.Address().String(), "expect address to match")
29	urequire.Equal(t, 0, len(member.Roles()), "expect no roles")
30}
31
32func TestSafeMemberIsASnapshot(t *testing.T) {
33	roles := []boards.Role{"owner"}
34	member := hub.NewSafeMember(boards.User{Address: alice, Roles: roles})
35
36	// Mutating the source must not change what the member reports.
37	roles[0] = "guest"
38	urequire.Equal(t, "owner", member.Roles()[0], "expect source mutation to be ignored")
39
40	// Mutating a returned slice must not change what the member reports.
41	member.Roles()[0] = "guest"
42	urequire.Equal(t, "owner", member.Roles()[0], "expect returned slice to be a copy")
43}