query_test.gno
2.69 Kb · 87 lines
1package gnocial
2
3import (
4 "strings"
5 "testing"
6
7 "gno.land/p/nt/testutils/v0"
8 "gno.land/p/nt/uassert/v0"
9 "gno.land/p/nt/urequire/v0"
10)
11
12func TestQueriesAndSuccessor(cur realm, t *testing.T) {
13 resetArena()
14 alice := testutils.TestAddress("alice")
15 bob := testutils.TestAddress("bob")
16 admin := testutils.TestAddress("admin")
17
18 testing.SetRealm(testing.NewUserRealm(alice))
19 testing.SetOriginSend(nil)
20 Register(cross(cur), "alice", "Alice", "xin chao", "")
21 mustAbort(t, cur, "body has markup", func() {
22 Post(cross(cur), "<b>x</b>", "")
23 })
24 id := Post(cross(cur), "bai cong khai", "")
25 gid := Post(cross(cur), "bi mat 42", "yes")
26
27 testing.SetRealm(testing.NewUserRealm(bob))
28 testing.SetOriginSend(nil)
29 Register(cross(cur), "bob", "Bob", "", alice.String())
30 Reply(cross(cur), id, "tra loi 1")
31 reply2 := Reply(cross(cur), id, "tra loi 2")
32
33 rows := Feed(0, 8)
34 urequire.Equal(t, true, len(rows) >= 2)
35 urequire.Equal(t, false, strings.Contains(Render(""), "bi mat 42"))
36 urequire.Equal(t, false, strings.Contains(Render(""), "bai cong khai"))
37 secret, ok := GetPost(gid)
38 urequire.Equal(t, true, ok)
39 urequire.Equal(t, "bi mat 42", secret.Body)
40
41 people := Handles("", 1)
42 urequire.Equal(t, 1, len(people))
43 urequire.Equal(t, "alice", people[0].Handle)
44 next := Handles(people[0].Handle, 1)
45 urequire.Equal(t, "bob", next[0].Handle)
46
47 reps := Replies(id, 0, 1)
48 urequire.Equal(t, 1, len(reps))
49 urequire.Equal(t, "tra loi 1", reps[0].Body)
50 rest := Replies(id, reps[0].ID, 1)
51 urequire.Equal(t, reply2, rest[0].ID)
52
53 due, _, _, _, _ := QuoteBuy("alice", 1)
54 urequire.Equal(t, int64(11000), due)
55 acc, ok := ProfileOf(alice)
56 urequire.Equal(t, true, ok)
57 urequire.Equal(t, "xin chao", acc.Bio)
58 urequire.Equal(t, 2, MemberCount())
59 urequire.Equal(t, true, LatestID() >= reply2)
60
61 if !uassert.PanicsWithMessage(t, cur, "limit", func() { Feed(0, 0) }) {
62 t.FailNow()
63 }
64
65 testing.SetRealm(testing.NewUserRealm(alice))
66 testing.SetOriginSend(nil)
67 mustAbort(t, cur, "admin only", func() {
68 SetSuccessor(cross(cur), "gno.land/r/demo/next")
69 })
70 testing.SetRealm(testing.NewUserRealm(admin))
71 testing.SetOriginSend(ugnots(1))
72 mustAbort(t, cur, "this call takes no payment", func() {
73 SetSuccessor(cross(cur), "gno.land/r/demo/next")
74 })
75 testing.SetRealm(testing.NewUserRealm(admin))
76 testing.SetOriginSend(nil)
77 mustAbort(t, cur, "bad successor", func() {
78 SetSuccessor(cross(cur), "gno.land/r/demo/next.v2")
79 })
80 reserve := TotalReserve()
81 SetSuccessor(cross(cur), "gno.land/r/demo/next")
82 urequire.Equal(t, "gno.land/r/demo/next", Successor())
83 urequire.Equal(t, reserve, TotalReserve())
84 urequire.Equal(t, true, strings.Contains(Render("about"), "gno.land/r/demo/next"))
85 SetSuccessor(cross(cur), "")
86 urequire.Equal(t, "", Successor())
87}