render_test.gno
1.71 Kb · 57 lines
1package gns
2
3import (
4 "strings"
5 "testing"
6)
7
8func TestRenderRoutes(cur realm, t *testing.T) {
9 reset()
10 doRegister(cur, "alice", alice, 100000)
11 testing.SetRealm(testing.NewUserRealm(alice))
12 SetText(cross(cur), "alice", "com.github", "moul")
13
14 home := Render("")
15 isTrue(t, strings.Contains(home, "GNS"), "home mentions GNS")
16 isTrue(t, strings.Contains(home, "Registered names"), "home shows stats")
17
18 name := Render("name/alice")
19 isTrue(t, strings.Contains(name, "alice"), "name page has name")
20 isTrue(t, strings.Contains(name, alice.String()), "name page shows owner")
21 isTrue(t, strings.Contains(name, "com.github"), "name page shows records")
22
23 avail := Render("available/freeone")
24 isTrue(t, strings.Contains(avail, "Available"), "available page")
25
26 help := Render("help")
27 isTrue(t, strings.Contains(help, "Register"), "help lists API")
28
29 events := Render("events")
30 isTrue(t, strings.Contains(events, "events"), "events page")
31}
32
33func TestRenderNoMutation(cur realm, t *testing.T) {
34 reset()
35 doRegister(cur, "alice", alice, 100000)
36 before := names.Size()
37 _ = Render("name/alice")
38 _ = Render("")
39 _ = Render("available/whatever")
40 after := names.Size()
41 eqInt(t, int64(before), int64(after), "Render does not mutate state")
42}
43
44func TestEnumerationBounded(cur realm, t *testing.T) {
45 reset()
46 doRegister(cur, "one", alice, 100000)
47 doRegister(cur, "two", alice, 100000)
48 doRegister(cur, "three", alice, 100000)
49
50 page := NamesByOwner(alice.String(), "", 2)
51 eqInt(t, 2, int64(len(page.Items)), "page limited to 2")
52 isTrue(t, page.Next != "", "cursor for next page")
53
54 // invariant 15: hard cap even when a huge limit is requested.
55 page2 := NamesByOwner(alice.String(), "", 65535)
56 isTrue(t, len(page2.Items) <= 200, "hard cap applied")
57}