1package main
2
3// SEND: 1000000ugnot
4
5import (
6 "std"
7
8 "gno.land/p/demo/dao"
9 "gno.land/p/demo/testutils"
10
11 users "gno.land/r/gnoland/users/v1"
12 _ "gno.land/r/gov/dao/init" // so that the govdao.GovDAO initializer is executed
13 govdao "gno.land/r/gov/dao/v2"
14 susers "gno.land/r/sys/users"
15)
16
17// Test updating a name via GovDAO
18
19func init() {
20 c := std.OriginCaller()
21 alice := testutils.TestAddress("alice")
22
23 // Register alice
24 std.TestSetOriginCaller(alice)
25 std.TestSetRealm(std.NewUserRealm(alice))
26 users.Register("alice123")
27
28 // Prop to change name
29 std.TestSetOriginCaller(c)
30 std.TestSetRealm(std.NewUserRealm(c))
31 ex := users.ProposeDeleteUser(alice)
32
33 // Create a proposal
34 prop := dao.ProposalRequest{
35 Title: "Change alice's name!",
36 Description: "",
37 Executor: ex,
38 }
39
40 govdao.GovDAO.Propose(prop)
41}
42
43func main() {
44 println("--")
45 println(govdao.Render(""))
46 println("--")
47 println(govdao.Render("0"))
48 println("--")
49 govdao.GovDAO.VoteOnProposal(0, "YES")
50 println("--")
51 println(govdao.Render("0"))
52 println("--")
53 govdao.GovDAO.ExecuteProposal(0)
54 println("--")
55 println(govdao.Render("0"))
56
57 data, _ := susers.ResolveName("alice123")
58 if data == nil {
59 println("Successfully deleted alice")
60 }
61}
62
63// Output:
64// --
65// # GovDAO Proposals
66//
67// ## [Prop #0 - Change alice's name!](/r/gov/dao/v2:0)
68//
69// **Status: ACTIVE**
70//
71// **Author: g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm**
72//
73//
74// --
75// # Proposal #0 - Change alice's name!
76//
77// ## Description
78//
79// No description provided.
80//
81// ## Proposal information
82//
83// **Status: ACTIVE**
84//
85// **Voting stats:**
86// - YES 0 (0%)
87// - NO 0 (0%)
88// - ABSTAIN 0 (0%)
89// - MISSING VOTES 10 (100%)
90//
91//
92// **Threshold met: FALSE**
93//
94// **Author: g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm**
95//
96// ### Actions
97//
98// #### [[Vote YES](/r/gov/dao/v2$help&func=VoteOnProposal&id=0&option=YES)] - [[Vote NO](/r/gov/dao/v2$help&func=VoteOnProposal&id=0&option=NO)] - [[Vote ABSTAIN](/r/gov/dao/v2$help&func=VoteOnProposal&id=0&option=ABSTAIN)]
99//
100//
101// --
102// --
103// # Proposal #0 - Change alice's name!
104//
105// ## Description
106//
107// No description provided.
108//
109// ## Proposal information
110//
111// **Status: ACCEPTED**
112//
113// **Voting stats:**
114// - YES 10 (100%)
115// - NO 0 (0%)
116// - ABSTAIN 0 (0%)
117// - MISSING VOTES 0 (0%)
118//
119//
120// **Threshold met: TRUE**
121//
122// **Author: g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm**
123//
124// ### Actions
125//
126// The voting period for this proposal is over.
127//
128//
129// --
130// --
131// # Proposal #0 - Change alice's name!
132//
133// ## Description
134//
135// No description provided.
136//
137// ## Proposal information
138//
139// **Status: EXECUTION SUCCESSFUL**
140//
141// **Voting stats:**
142// - YES 10 (100%)
143// - NO 0 (0%)
144// - ABSTAIN 0 (0%)
145// - MISSING VOTES 0 (0%)
146//
147//
148// **Threshold met: TRUE**
149//
150// **Author: g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm**
151//
152// ### Actions
153//
154// The voting period for this proposal is over.
155//
156//
157// Successfully deleted alice
158
159// Events:
160// [
161// {
162// "type": "Registered",
163// "attrs": [
164// {
165// "key": "name",
166// "value": "alice123"
167// },
168// {
169// "key": "address",
170// "value": "g1v9kxjcm9ta047h6lta047h6lta047h6lzd40gh"
171// }
172// ],
173// "pkg_path": "gno.land/r/sys/users",
174// "func": "RegisterUser"
175// },
176// {
177// "type": "Registeration",
178// "attrs": [
179// {
180// "key": "address",
181// "value": "g1v9kxjcm9ta047h6lta047h6lta047h6lzd40gh"
182// },
183// {
184// "key": "name",
185// "value": "alice123"
186// }
187// ],
188// "pkg_path": "gno.land/r/gnoland/users/v1",
189// "func": "Register"
190// },
191// {
192// "type": "ProposalAdded",
193// "attrs": [
194// {
195// "key": "proposal-id",
196// "value": "0"
197// },
198// {
199// "key": "proposal-author",
200// "value": "g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm"
201// }
202// ],
203// "pkg_path": "gno.land/r/gov/dao/v2",
204// "func": "EmitProposalAdded"
205// },
206// {
207// "type": "VoteAdded",
208// "attrs": [
209// {
210// "key": "proposal-id",
211// "value": "0"
212// },
213// {
214// "key": "author",
215// "value": "g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm"
216// },
217// {
218// "key": "option",
219// "value": "YES"
220// }
221// ],
222// "pkg_path": "gno.land/r/gov/dao/v2",
223// "func": "EmitVoteAdded"
224// },
225// {
226// "type": "ProposalAccepted",
227// "attrs": [
228// {
229// "key": "proposal-id",
230// "value": "0"
231// }
232// ],
233// "pkg_path": "gno.land/r/gov/dao/v2",
234// "func": "EmitProposalAccepted"
235// },
236// {
237// "type": "Deleted",
238// "attrs": [
239// {
240// "key": "address",
241// "value": "g1v9kxjcm9ta047h6lta047h6lta047h6lzd40gh"
242// }
243// ],
244// "pkg_path": "gno.land/r/sys/users",
245// "func": "Delete"
246// },
247// {
248// "type": "ProposalExecuted",
249// "attrs": [
250// {
251// "key": "proposal-id",
252// "value": "0"
253// },
254// {
255// "key": "exec-status",
256// "value": "accepted"
257// }
258// ],
259// "pkg_path": "gno.land/r/gov/dao/v2",
260// "func": "ExecuteProposal"
261// }
262// ]
z_1_prop2_filetest.gno
5.09 Kb ยท 262 lines