diff --git a/examples/gno.land/r/nt/boards2/public.gno b/examples/gno.land/r/nt/boards2/public.gno index dfecf1cd514..cc2e36279f5 100644 --- a/examples/gno.land/r/nt/boards2/public.gno +++ b/examples/gno.land/r/nt/boards2/public.gno @@ -92,6 +92,9 @@ func CreateThread(bid BoardID, title, body string) PostID { func CreateReply(bid BoardID, threadID, replyID PostID, body string) PostID { assertIsUserCall() + body = strings.TrimSpace(body) + assertBodyIsNotEmpty(body) + caller := std.GetOrigCaller() board := mustGetBoard(bid) assertHasBoardPermission(board, caller, PermissionReplyCreate) diff --git a/examples/gno.land/r/nt/boards2/z_2_a_filetest.gno b/examples/gno.land/r/nt/boards2/z_2_a_filetest.gno new file mode 100644 index 00000000000..f9e332d2cca --- /dev/null +++ b/examples/gno.land/r/nt/boards2/z_2_a_filetest.gno @@ -0,0 +1,40 @@ +package main + +import ( + "std" + "strings" + + "gno.land/r/nt/boards2" +) + +const ( + owner = std.Address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5") // @test1 + path = "test-board/1/2" + comment = "Test comment" +) + +var ( + bid boards2.BoardID + tid boards2.PostID +) + +func init() { + std.TestSetOrigCaller(owner) + bid = boards2.CreateBoard("test-board") + tid = boards2.CreateThread(bid, "Foo", "bar") +} + +func main() { + rid := boards2.CreateReply(bid, tid, 0, comment) + + // Ensure that returned ID is right + println(rid == 2) + + // Render content must contain the reply + content := boards2.Render(path) + println(strings.Contains(content, "\n> "+comment+"\n")) +} + +// Output: +// true +// true diff --git a/examples/gno.land/r/nt/boards2/z_2_b_filetest.gno b/examples/gno.land/r/nt/boards2/z_2_b_filetest.gno new file mode 100644 index 00000000000..88b2233dff3 --- /dev/null +++ b/examples/gno.land/r/nt/boards2/z_2_b_filetest.gno @@ -0,0 +1,20 @@ +package main + +import ( + "std" + + "gno.land/r/nt/boards2" +) + +const owner = std.Address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5") // @test1 + +func init() { + std.TestSetOrigCaller(owner) +} + +func main() { + boards2.CreateReply(404, 1, 0, "comment") +} + +// Error: +// board does not exist with ID: 404 diff --git a/examples/gno.land/r/nt/boards2/z_2_c_filetest.gno b/examples/gno.land/r/nt/boards2/z_2_c_filetest.gno new file mode 100644 index 00000000000..4e0779194ab --- /dev/null +++ b/examples/gno.land/r/nt/boards2/z_2_c_filetest.gno @@ -0,0 +1,23 @@ +package main + +import ( + "std" + + "gno.land/r/nt/boards2" +) + +const owner = std.Address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5") // @test1 + +var bid boards2.BoardID + +func init() { + std.TestSetOrigCaller(owner) + bid = boards2.CreateBoard("test123") +} + +func main() { + boards2.CreateReply(bid, 404, 0, "comment") +} + +// Error: +// thread does not exist with ID: 404 diff --git a/examples/gno.land/r/nt/boards2/z_2_d_filetest.gno b/examples/gno.land/r/nt/boards2/z_2_d_filetest.gno new file mode 100644 index 00000000000..66edfb3d6f2 --- /dev/null +++ b/examples/gno.land/r/nt/boards2/z_2_d_filetest.gno @@ -0,0 +1,27 @@ +package main + +import ( + "std" + + "gno.land/r/nt/boards2" +) + +const owner = std.Address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5") // @test1 + +var ( + bid boards2.BoardID + tid boards2.PostID +) + +func init() { + std.TestSetOrigCaller(owner) + bid = boards2.CreateBoard("test-board") + tid = boards2.CreateThread(bid, "Foo", "bar") +} + +func main() { + boards2.CreateReply(bid, tid, 404, "comment") +} + +// Error: +// reply does not exist with ID: 404 diff --git a/examples/gno.land/r/nt/boards2/z_2_h_filetest.gno b/examples/gno.land/r/nt/boards2/z_2_h_filetest.gno new file mode 100644 index 00000000000..e34d8d167ef --- /dev/null +++ b/examples/gno.land/r/nt/boards2/z_2_h_filetest.gno @@ -0,0 +1,32 @@ +package main + +import ( + "std" + + "gno.land/r/nt/boards2" +) + +const ( + owner = std.Address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5") // @test1 + user = std.Address("g1us8428u2a5satrlxzagqqa5m6vmuze025anjlj") // @test2 +) + +var ( + bid boards2.BoardID + tid boards2.PostID +) + +func init() { + std.TestSetOrigCaller(owner) + bid = boards2.CreateBoard("test123") + tid = boards2.CreateThread(bid, "Foo", "bar") + + std.TestSetOrigCaller(user) +} + +func main() { + boards2.CreateReply(bid, tid, 0, "Test reply") +} + +// Error: +// unauthorized diff --git a/examples/gno.land/r/nt/boards2/z_2_i_filetest.gno b/examples/gno.land/r/nt/boards2/z_2_i_filetest.gno new file mode 100644 index 00000000000..aa43805f7fd --- /dev/null +++ b/examples/gno.land/r/nt/boards2/z_2_i_filetest.gno @@ -0,0 +1,27 @@ +package main + +import ( + "std" + + "gno.land/r/nt/boards2" +) + +const owner = std.Address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5") // @test1 + +var ( + bid boards2.BoardID + tid boards2.PostID +) + +func init() { + std.TestSetOrigCaller(owner) + bid = boards2.CreateBoard("test-board") + tid = boards2.CreateThread(bid, "Foo", "bar") +} + +func main() { + boards2.CreateReply(bid, tid, 0, "") +} + +// Error: +// body is empty diff --git a/examples/gno.land/r/nt/boards2/z_2_j_filetest.gno b/examples/gno.land/r/nt/boards2/z_2_j_filetest.gno new file mode 100644 index 00000000000..3449fb1c7ba --- /dev/null +++ b/examples/gno.land/r/nt/boards2/z_2_j_filetest.gno @@ -0,0 +1,41 @@ +package main + +import ( + "std" + "strings" + + "gno.land/r/nt/boards2" +) + +const ( + owner = std.Address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5") // @test1 + path = "test-board/1/2" + comment = "Second comment" +) + +var ( + bid boards2.BoardID + tid, rid boards2.PostID +) + +func init() { + std.TestSetOrigCaller(owner) + bid = boards2.CreateBoard("test-board") + tid = boards2.CreateThread(bid, "Foo", "bar") + rid = boards2.CreateReply(bid, tid, 0, "First comment") +} + +func main() { + rid2 := boards2.CreateReply(bid, tid, rid, comment) + + // Ensure that returned ID is right + println(rid2 == 3) + + // Render content must contain the sub-reply + content := boards2.Render(path) + println(strings.Contains(content, "\n> > "+comment+"\n")) +} + +// Output: +// true +// true