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/equipment

Realm
Open in gnoweb ↗

Overview

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

Files (7)

  • gnomod.tomltoml
  • config.gnogno
  • equipment.gnogno
  • render.gnogno
  • validation.gnogno
  • equipment_test.gnogno
  • render_test.gnogno
render_test.gnogno
1package equipment23import (4	"net/url"5	"strings"6	"testing"78

Functions

  • Approve(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, tokenID uint64)

  • BalanceOf(owner 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}, tokenID uint64)

  • 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}, tokenID uint64)

  • GetApproved(tokenID uint64) string

  • GetLatestTokenID() uint64

  • GetListLimit() int

  • GetMetadata(tokenID uint64) map[string]string

  • GetOwnedCount(owner string) int

  • Has(tokenID uint64) bool

  • IsApprovedForAll(owner string, operator string) bool

  • IsMinterRealm(addr string) bool

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

  • Mint(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, definitionID uint32, attrKeys string, attrValues string) uint64

  • MintFromRealm(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, definitionID uint32, attrKeys string, attrValues string) uint64

  • Name() string

  • OwnerOf(tokenID uint64) string

  • Render(iURL string) string

  • 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)

  • SetMetadata(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}, tokenID uint64, attrKeys string, attrValues string)

  • SetMetadataFromRealm(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}, tokenID uint64, attrKeys string, attrValues string)

  • 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)

  • Symbol() string

  • TransferFrom(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 uint64)

  • 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)

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.

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