PathrockNetwork Gno Explorer
HomeBlocksTransactionsTokensRealmsPackagesValidatorsAnalytics

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/r/akkadia/beta/item

Realm
Open in gnoweb ↗

Overview

Kind
Realm (renderable)
Name
item
Namespace
akkadia / beta
Files
7 (gnomod.toml)
Exported functions
18
Module
gno.land/r/akkadia/beta/item
gno
0.9

Files (7)

  • gnomod.tomltoml
  • config.gnogno
  • item.gnogno
  • render.gnogno
  • validation.gnogno
  • item_test.gnogno
  • render_test.gnogno
render_test.gnogno
1package item23import (4	"strings"5	"testing"67	"gno.land/p/nt/uassert/v0"8

Functions

  • BalanceOf(owner string, tokenID string) int64

  • Burn(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, from string, tokenID string, amount int64)

  • BurnFromRealm(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, from string, tokenID string, amount int64)

  • GetListLimit() int

  • GetOwnedCount(owner string) int

  • IsApprovedForAll(owner string, operator string) bool

  • IsMinterRealm(addr string) bool

  • ListByOwner(owner string, page int, count int) []map[string]string

  • Render(iURL string) string

  • SafeMint(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, recipient string, tokenID string, amount int64)

  • SafeMintFromRealm(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, recipient string, tokenID string, amount int64)

  • SafeTransferFrom(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, from string, to string, tokenID string, amount int64)

  • SetApprovalForAll(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, operator string, approved bool)

  • SetListLimit(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, limit int)

  • SetMinterRealm(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, pkgPath string)

  • TotalSupply(tokenID string) int64

  • UnsetMinterRealm(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, pkgPath string)

  • Uri() string

Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.

Rendered

RenderedRawgnoweb ↗

vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.

)
9
10func TestRenderHomeAndOwner(cur realm, t *testing.T) {
11 setupItemTest(cross(cur), t)
12
13 home := Render("")
14 uassert.True(t, strings.Contains(home, `<gno-form path="owner">`), "should render the owner lookup form")
15 uassert.True(t, strings.Contains(home, `name="address"`), "should render the address input")
16
17 empty := Render("owner?address=" + itemTest.Owner.String())
18 uassert.True(t, strings.Contains(empty, itemTest.Owner.String()), "should render the owner address")
19 uassert.True(t, strings.Contains(empty, "Total**: 0"), "should render an empty total")
20 uassert.True(t, strings.Contains(empty, "No items held"), "should render an empty holding list")
21
22 testing.SetOriginCaller(itemTest.Operator)
23 testing.SetRealm(testing.NewUserRealm(itemTest.Operator))
24 SafeMint(cross(cur), itemTest.Owner, "test-iron", 3)
25 SafeMint(cross(cur), itemTest.Owner, "**x**", 2)
26
27 listed := Render("owner?address=" + itemTest.Owner.String())
28 uassert.True(t, strings.Contains(listed, "Total**: 2"), "should render the owned token count")
29 uassert.True(t, strings.Contains(listed, "test\\-iron"), "should escape item token ids")
30 uassert.True(t, strings.Contains(listed, "**: 3"), "should render item amounts")
31 uassert.True(t, strings.Contains(listed, `\*\*x\*\*`), "escaped markdown token id should be visible")
32 uassert.False(t, strings.Contains(listed, "**x**"), "raw markdown token id should not remain")
33}
34
35func TestRenderOwnerPagesWhenCountExceedsLimit(cur realm, t *testing.T) {
36 setupItemTest(cross(cur), t)
37 testing.SetOriginCaller(itemTest.Admin)
38 testing.SetRealm(testing.NewUserRealm(itemTest.Admin))
39 SetListLimit(cross(cur), 1)
40
41 testing.SetOriginCaller(itemTest.Operator)
42 testing.SetRealm(testing.NewUserRealm(itemTest.Operator))
43 SafeMint(cross(cur), itemTest.Owner, "10", 1)
44 SafeMint(cross(cur), itemTest.Owner, "20", 1)
45
46 page1 := Render("owner?address=" + itemTest.Owner.String())
47 uassert.True(t, strings.Contains(page1, "Total**: 2"), "should render total holdings")
48 uassert.True(t, strings.Contains(page1, "**10**"), "page 1 should include the first token")
49 uassert.False(t, strings.Contains(page1, "**20**"), "page 1 should not include the second token")
50 uassert.True(t, strings.Contains(page1, "page 1 of 2"), "should render a page picker")
51 uassert.True(t, strings.Contains(page1, "page=2"), "should link to the next page")
52
53 page2 := Render("owner?address=" + itemTest.Owner.String() + "&page=2")
54 uassert.True(t, strings.Contains(page2, "**20**"), "page 2 should include the second token")
55 uassert.False(t, strings.Contains(page2, "**10**"), "page 2 should not include the first token")
56 uassert.True(t, strings.Contains(page2, "page 2 of 2"), "should render the last page picker")
57
58 invalidPage := Render("owner?address=" + itemTest.Owner.String() + "&page=3")
59 uassert.True(t, strings.Contains(invalidPage, "Invalid page"), "should reject a page past the last page")
60}
61
62func TestRenderErrors(cur realm, t *testing.T) {
63 setupItemTest(cross(cur), t)
64
65 invalid := Render("owner?address=invalid-address")
66 uassert.True(t, strings.Contains(invalid, "Invalid address"), "should reject an invalid address")
67
68 unknown := Render("unknown")
69 uassert.True(t, strings.Contains(unknown, "Not found"), "should reject an unknown route")
70}
71
72func TestRenderRejectsOversizedURL(cur realm, t *testing.T) {
73 uassert.PanicsWithMessage(t, cur, "url exceeds max runes", func() {
74 Render(strings.Repeat("a", renderURLMaxRunes+1))
75 })
76 Render(strings.Repeat("a", renderURLMaxRunes))
77}
78