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.ProposeNewName(alice, "alice_new123")
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("alice_new123")
58 println(data.Addr())
59}
60
61// Output:
62// --
63// # GovDAO Proposals
64//
65// ## [Prop #0 - Change alice's name!](/r/gov/dao/v2:0)
66//
67// **Status: ACTIVE**
68//
69// **Author: g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm**
70//
71//
72// --
73// # Proposal #0 - Change alice's name!
74//
75// ## Description
76//
77// No description provided.
78//
79// ## Proposal information
80//
81// **Status: ACTIVE**
82//
83// **Voting stats:**
84// - YES 0 (0%)
85// - NO 0 (0%)
86// - ABSTAIN 0 (0%)
87// - MISSING VOTES 10 (100%)
88//
89//
90// **Threshold met: FALSE**
91//
92// **Author: g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm**
93//
94// ### Actions
95//
96// #### [[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)]
97//
98//
99// --
100// --
101// # Proposal #0 - Change alice's name!
102//
103// ## Description
104//
105// No description provided.
106//
107// ## Proposal information
108//
109// **Status: ACCEPTED**
110//
111// **Voting stats:**
112// - YES 10 (100%)
113// - NO 0 (0%)
114// - ABSTAIN 0 (0%)
115// - MISSING VOTES 0 (0%)
116//
117//
118// **Threshold met: TRUE**
119//
120// **Author: g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm**
121//
122// ### Actions
123//
124// The voting period for this proposal is over.
125//
126//
127// --
128// --
129// # Proposal #0 - Change alice's name!
130//
131// ## Description
132//
133// No description provided.
134//
135// ## Proposal information
136//
137// **Status: EXECUTION SUCCESSFUL**
138//
139// **Voting stats:**
140// - YES 10 (100%)
141// - NO 0 (0%)
142// - ABSTAIN 0 (0%)
143// - MISSING VOTES 0 (0%)
144//
145//
146// **Threshold met: TRUE**
147//
148// **Author: g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm**
149//
150// ### Actions
151//
152// The voting period for this proposal is over.
153//
154//
155// g1v9kxjcm9ta047h6lta047h6lta047h6lzd40gh
156
157// Events:
158// [
159// {
160// "type": "Registered",
161// "attrs": [
162// {
163// "key": "name",
164// "value": "alice123"
165// },
166// {
167// "key": "address",
168// "value": "g1v9kxjcm9ta047h6lta047h6lta047h6lzd40gh"
169// }
170// ],
171// "pkg_path": "gno.land/r/sys/users",
172// "func": "RegisterUser"
173// },
174// {
175// "type": "Registeration",
176// "attrs": [
177// {
178// "key": "address",
179// "value": "g1v9kxjcm9ta047h6lta047h6lta047h6lzd40gh"
180// },
181// {
182// "key": "name",
183// "value": "alice123"
184// }
185// ],
186// "pkg_path": "gno.land/r/gnoland/users/v1",
187// "func": "Register"
188// },
189// {
190// "type": "ProposalAdded",
191// "attrs": [
192// {
193// "key": "proposal-id",
194// "value": "0"
195// },
196// {
197// "key": "proposal-author",
198// "value": "g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm"
199// }
200// ],
201// "pkg_path": "gno.land/r/gov/dao/v2",
202// "func": "EmitProposalAdded"
203// },
204// {
205// "type": "VoteAdded",
206// "attrs": [
207// {
208// "key": "proposal-id",
209// "value": "0"
210// },
211// {
212// "key": "author",
213// "value": "g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm"
214// },
215// {
216// "key": "option",
217// "value": "YES"
218// }
219// ],
220// "pkg_path": "gno.land/r/gov/dao/v2",
221// "func": "EmitVoteAdded"
222// },
223// {
224// "type": "ProposalAccepted",
225// "attrs": [
226// {
227// "key": "proposal-id",
228// "value": "0"
229// }
230// ],
231// "pkg_path": "gno.land/r/gov/dao/v2",
232// "func": "EmitProposalAccepted"
233// },
234// {
235// "type": "Updated",
236// "attrs": [
237// {
238// "key": "alias",
239// "value": "alice_new123"
240// },
241// {
242// "key": "address",
243// "value": "g1v9kxjcm9ta047h6lta047h6lta047h6lzd40gh"
244// }
245// ],
246// "pkg_path": "gno.land/r/sys/users",
247// "func": "UpdateName"
248// },
249// {
250// "type": "ProposalExecuted",
251// "attrs": [
252// {
253// "key": "proposal-id",
254// "value": "0"
255// },
256// {
257// "key": "exec-status",
258// "value": "accepted"
259// }
260// ],
261// "pkg_path": "gno.land/r/gov/dao/v2",
262// "func": "ExecuteProposal"
263// }
264// ]
z_0_prop1_filetest.gno
5.17 Kb ยท 264 lines