Search Apps Documentation Source Content File Folder Download Copy Actions Download

unlock_test.gno

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