unlock_test.gno

1.88 Kb ยท 88 lines
 1package params
 2
 3import (
 4	"std"
 5	"testing"
 6
 7	"gno.land/p/nt/testutils"
 8	"gno.land/p/nt/urequire"
 9	"gno.land/r/gov/dao"
10	ini "gno.land/r/gov/dao/v3/init"
11	susers "gno.land/r/sys/users"
12)
13
14var (
15	g1user = testutils.TestAddress("g1user")
16)
17
18func init() {
19	testing.SetRealm(std.NewUserRealm(g1user))
20	ini.InitWithUsers(g1user)
21	registerTestUsers(g1user)
22}
23
24const gUsersV1Path = "gno.land/r/gnoland/users/v1"
25
26// Register a namespace for every addresses
27// Necessary to test GovDAO Vote
28func registerTestUsers(addrs ...std.Address) {
29	// Set realm to users admin to register test user
30	testing.SetRealm(std.NewCodeRealm(gUsersV1Path))
31	for _, addr := range addrs {
32		err := susers.RegisterUser(cross, addr.String()[1:], addr)
33		if err != nil {
34			panic(err.Error() + " : " + addr.String())
35		}
36	}
37}
38
39func TestProUnlockTransfer(t *testing.T) {
40	testing.SetRealm(std.NewUserRealm(g1user))
41
42	pr := ProposeUnlockTransferRequest()
43	id := dao.MustCreateProposal(cross, pr)
44	p, err := dao.GetProposal(cross, id)
45	urequire.NoError(t, err)
46	urequire.Equal(t, unlockTransferTitle, p.Title())
47}
48
49func TestFailUnlockTransfer(t *testing.T) {
50	testing.SetRealm(std.NewUserRealm(g1user))
51
52	pr := ProposeUnlockTransferRequest()
53	id := dao.MustCreateProposal(cross, pr)
54	urequire.AbortsWithMessage(
55		t,
56		"proposal didn't reach supermajority yet: 66",
57		func() {
58			dao.ExecuteProposal(cross, id)
59		},
60	)
61}
62
63func TestExeUnlockTransfer(t *testing.T) {
64	testing.SetRealm(std.NewUserRealm(g1user))
65
66	pr := ProposeUnlockTransferRequest()
67	id := dao.MustCreateProposal(cross, pr)
68	_, err := dao.GetProposal(cross, id)
69	urequire.NoError(t, err)
70	// urequire.True(t, dao.Active == p.Status()) // TODO
71
72	urequire.NotPanics(
73		t,
74		func() {
75			dao.MustVoteOnProposal(cross, dao.VoteRequest{
76				Option:     dao.YesVote,
77				ProposalID: dao.ProposalID(id),
78			})
79		},
80	)
81
82	urequire.NotPanics(
83		t,
84		func() {
85			dao.ExecuteProposal(cross, id)
86		},
87	)
88}