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

setup_test.gno

1.94 Kb · 66 lines
 1package craft
 2
 3import (
 4	"chain"
 5	"chain/banker"
 6	"testing"
 7
 8	"gno.land/p/nt/testutils/v0"
 9	"gno.land/r/akkadia/beta/admin"
10	"gno.land/r/akkadia/beta/equipment"
11	"gno.land/r/akkadia/beta/item"
12)
13
14var craftTest = struct {
15	Admin, Owner, Other, FeeCollector, PkgAddr address
16	SetupDone                                  bool
17}{
18	Admin:        testutils.TestAddress("craftAdmin"),
19	Owner:        testutils.TestAddress("craftOwner"),
20	Other:        testutils.TestAddress("craftOther"),
21	FeeCollector: testutils.TestAddress("craftFeeCollector"),
22	PkgAddr:      chain.PackageAddress("gno.land/r/akkadia/beta/craft"),
23}
24
25func setupCraftTest(cur realm, t *testing.T) {
26	t.Helper()
27	resetCraftState()
28	testing.SetOriginSend(chain.Coins{})
29	if !craftTest.SetupDone {
30		originalAdmin := admin.GetAdmin()
31		testing.SetOriginCaller(originalAdmin)
32		testing.SetRealm(testing.NewUserRealm(originalAdmin))
33		admin.TransferAdmin(cross(cur), craftTest.Admin)
34		testing.SetOriginCaller(craftTest.Admin)
35		testing.SetRealm(testing.NewUserRealm(craftTest.Admin))
36		admin.AcceptAdmin(cross(cur))
37		admin.SetFeeCollector(cross(cur), craftTest.FeeCollector)
38		craftTest.SetupDone = true
39	}
40
41	testing.SetOriginCaller(craftTest.Admin)
42	testing.SetRealm(testing.NewUserRealm(craftTest.Admin))
43	item.SetMinterRealm(cross(cur), "gno.land/r/akkadia/beta/craft")
44	equipment.SetMinterRealm(cross(cur), "gno.land/r/akkadia/beta/craft")
45}
46
47func mintCraftItem(cur realm, tokenID string, amount int64) {
48	testing.SetOriginCaller(craftTest.Admin)
49	testing.SetRealm(testing.NewUserRealm(craftTest.Admin))
50	item.SafeMint(cross(cur), craftTest.Owner, tokenID, amount)
51}
52
53func defaultCraftFeeCoins() chain.Coins {
54	return chain.Coins{{"ugnot", defaultCraftFee}}
55}
56
57func payCraftFee(coins chain.Coins) {
58	if len(coins) > 0 {
59		testing.IssueCoins(craftTest.PkgAddr, coins)
60	}
61	testing.SetOriginSend(coins)
62}
63
64func ugnotBalanceForTest(addr address) int64 {
65	return banker.NewReadonlyBanker().GetCoins(addr).AmountOf("ugnot")
66}