diff --git a/examples/gno.land/r/nt/boards2/public.gno b/examples/gno.land/r/nt/boards2/public.gno index 06505b4a2fc..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) @@ -100,7 +103,7 @@ func CreateReply(bid BoardID, threadID, replyID PostID, body string) PostID { assertThreadVisible(thread) var reply *Post - if replyID == threadID { + if replyID == 0 { // When the parent reply is the thread just add reply to thread reply = thread.AddReply(caller, body) } else { 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 index c4fd1da0c87..f9e332d2cca 100644 --- a/examples/gno.land/r/nt/boards2/z_2_a_filetest.gno +++ b/examples/gno.land/r/nt/boards2/z_2_a_filetest.gno @@ -2,22 +2,39 @@ package main import ( "std" + "strings" "gno.land/r/nt/boards2" ) -const owner = std.Address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5") // @test1 +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() { - bid := boards2.CreateBoard("test123") - pid := boards2.CreateThread(bid, "thread", "thread") - boards2.FlagThread(bid, pid, "reason") - _ = boards2.CreateReply(bid, pid, pid, "reply") + 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")) } -// Error: -// thread with ID: 1 was hidden +// 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 index f215c0c84eb..88b2233dff3 100644 --- a/examples/gno.land/r/nt/boards2/z_2_b_filetest.gno +++ b/examples/gno.land/r/nt/boards2/z_2_b_filetest.gno @@ -13,14 +13,8 @@ func init() { } func main() { - // ensure that nested replies denied if root thread is hidden. - bid := boards2.CreateBoard("test123") - pid := boards2.CreateThread(bid, "thread", "thread") - rid := boards2.CreateReply(bid, pid, pid, "reply1") - - boards2.FlagThread(bid, pid, "reason") - _ = boards2.CreateReply(bid, pid, rid, "reply1.1") + boards2.CreateReply(404, 1, 0, "comment") } // Error: -// thread with ID: 1 was hidden +// 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 index 98ffbc7f624..4e0779194ab 100644 --- a/examples/gno.land/r/nt/boards2/z_2_c_filetest.gno +++ b/examples/gno.land/r/nt/boards2/z_2_c_filetest.gno @@ -8,19 +8,16 @@ import ( const owner = std.Address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5") // @test1 +var bid boards2.BoardID + func init() { std.TestSetOrigCaller(owner) + bid = boards2.CreateBoard("test123") } func main() { - // ensure that nested replies denied if root thread is hidden. - bid := boards2.CreateBoard("test123") - pid := boards2.CreateThread(bid, "thread", "thread") - rid := boards2.CreateReply(bid, pid, pid, "reply1") - - boards2.FlagReply(bid, pid, rid, "reason") - _ = boards2.CreateReply(bid, pid, rid, "reply1.1") + boards2.CreateReply(bid, 404, 0, "comment") } // Error: -// reply with ID: 2 was hidden +// 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 index 9a95fd869b7..66edfb3d6f2 100644 --- a/examples/gno.land/r/nt/boards2/z_2_d_filetest.gno +++ b/examples/gno.land/r/nt/boards2/z_2_d_filetest.gno @@ -8,18 +8,20 @@ import ( 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() { - // Only single user per flag can't be tested atm, as flagThreshold = 1. - bid := boards2.CreateBoard("test123") - pid := boards2.CreateThread(bid, "thread", "thread") - - boards2.FlagThread(bid, pid, "reason1") - boards2.FlagThread(bid, pid, "reason2") + boards2.CreateReply(bid, tid, 404, "comment") } // Error: -// item flag count threshold exceeded: 1 +// reply does not exist with ID: 404 diff --git a/examples/gno.land/r/nt/boards2/z_2_e_filetest.gno b/examples/gno.land/r/nt/boards2/z_2_e_filetest.gno new file mode 100644 index 00000000000..8c231b552cd --- /dev/null +++ b/examples/gno.land/r/nt/boards2/z_2_e_filetest.gno @@ -0,0 +1,30 @@ +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("test123") + tid = boards2.CreateThread(bid, "Foo", "bar") + + // Hide thread by flagging it so reply can't be submitted + boards2.FlagThread(bid, tid, "reason") +} + +func main() { + boards2.CreateReply(bid, tid, 0, "Test reply") +} + +// Error: +// thread with ID: 1 was hidden diff --git a/examples/gno.land/r/nt/boards2/z_2_f_filetest.gno b/examples/gno.land/r/nt/boards2/z_2_f_filetest.gno new file mode 100644 index 00000000000..0b595a84cb6 --- /dev/null +++ b/examples/gno.land/r/nt/boards2/z_2_f_filetest.gno @@ -0,0 +1,31 @@ +package main + +import ( + "std" + + "gno.land/r/nt/boards2" +) + +const owner = std.Address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5") // @test1 + +var ( + bid boards2.BoardID + tid, rid boards2.PostID +) + +func init() { + std.TestSetOrigCaller(owner) + bid = boards2.CreateBoard("test123") + tid = boards2.CreateThread(bid, "Foo", "bar") + rid = boards2.CreateReply(bid, tid, 0, "reply1") + + // Hide thread by flagging it so reply of a reply can't be submitted + boards2.FlagThread(bid, tid, "reason") +} + +func main() { + boards2.CreateReply(bid, tid, rid, "reply1.1") +} + +// Error: +// thread with ID: 1 was hidden diff --git a/examples/gno.land/r/nt/boards2/z_2_g_filetest.gno b/examples/gno.land/r/nt/boards2/z_2_g_filetest.gno new file mode 100644 index 00000000000..6f69a023a0b --- /dev/null +++ b/examples/gno.land/r/nt/boards2/z_2_g_filetest.gno @@ -0,0 +1,31 @@ +package main + +import ( + "std" + + "gno.land/r/nt/boards2" +) + +const owner = std.Address("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5") // @test1 + +var ( + bid boards2.BoardID + tid, rid boards2.PostID +) + +func init() { + std.TestSetOrigCaller(owner) + bid = boards2.CreateBoard("test123") + tid = boards2.CreateThread(bid, "thread", "thread") + rid = boards2.CreateReply(bid, tid, 0, "reply1") + + // Hide reply by flagging it so sub reply can't be submitted + boards2.FlagReply(bid, tid, rid, "reason") +} + +func main() { + boards2.CreateReply(bid, tid, rid, "reply1.1") +} + +// Error: +// reply with ID: 2 was hidden 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