grc20reg_test.gno

1.94 Kb ยท 59 lines
 1package grc20reg
 2
 3import (
 4	"std"
 5	"strings"
 6	"testing"
 7
 8	"gno.land/p/demo/grc/grc20"
 9	"gno.land/p/demo/urequire"
10)
11
12func TestRegistry(t *testing.T) {
13	testing.SetRealm(std.NewCodeRealm("gno.land/r/demo/foo"))
14	realmAddr := std.CurrentRealm().PkgPath()
15	token, ledger := grc20.NewToken("TestToken", "TST", 4)
16	ledger.Mint(std.CurrentRealm().Address(), 1234567)
17	tokenGetter := func() *grc20.Token { return token }
18	// register
19	Register(tokenGetter, "")
20	regTokenGetter := Get(realmAddr)
21	regToken := regTokenGetter()
22	urequire.True(t, regToken != nil, "expected to find a token") // fixme: use urequire.NotNil
23	urequire.Equal(t, regToken.GetSymbol(), "TST")
24
25	expected := `- **TestToken** - [gno.land/r/demo/foo](/r/demo/foo) - [info](/r/demo/grc20reg:gno.land/r/demo/foo)
26`
27	got := Render("")
28	urequire.True(t, strings.Contains(got, expected))
29	// 404
30	invalidToken := Get("0xdeadbeef")
31	urequire.True(t, invalidToken == nil)
32
33	// register with a slug
34	Register(tokenGetter, "mySlug")
35	regTokenGetter = Get(realmAddr + ".mySlug")
36	regToken = regTokenGetter()
37	urequire.True(t, regToken != nil, "expected to find a token") // fixme: use urequire.NotNil
38	urequire.Equal(t, regToken.GetSymbol(), "TST")
39
40	// override
41	Register(tokenGetter, "")
42	regTokenGetter = Get(realmAddr + "")
43	regToken = regTokenGetter()
44	urequire.True(t, regToken != nil, "expected to find a token") // fixme: use urequire.NotNil
45	urequire.Equal(t, regToken.GetSymbol(), "TST")
46
47	got = Render("")
48	urequire.True(t, strings.Contains(got, `- **TestToken** - [gno.land/r/demo/foo](/r/demo/foo) - [info](/r/demo/grc20reg:gno.land/r/demo/foo)`))
49	urequire.True(t, strings.Contains(got, `- **TestToken** - [gno.land/r/demo/foo](/r/demo/foo).mySlug - [info](/r/demo/grc20reg:gno.land/r/demo/foo.mySlug)`))
50
51	expected = `# TestToken
52- symbol: **TST**
53- realm: [gno.land/r/demo/foo](/r/demo/foo).mySlug
54- decimals: 4
55- total supply: 1234567
56`
57	got = Render("gno.land/r/demo/foo.mySlug")
58	urequire.Equal(t, expected, got)
59}