github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/examples/gno.land/r/demo/userbook/userbook_test.gno (about) 1 package userbook 2 3 import ( 4 "std" 5 "strings" 6 "testing" 7 8 "gno.land/p/demo/testutils" 9 "gno.land/p/demo/ufmt" 10 ) 11 12 func TestRender(t *testing.T) { 13 // Sign up 20 users + deployer 14 for i := 0; i < 20; i++ { 15 addrName := ufmt.Sprintf("test%d", i) 16 caller := testutils.TestAddress(addrName) 17 std.TestSetOrigCaller(caller) 18 SignUp() 19 } 20 21 testCases := []struct { 22 name string 23 nextPage bool 24 prevPage bool 25 path string 26 expectedNumberOfUsers int 27 }{ 28 { 29 name: "1st page render", 30 nextPage: true, 31 prevPage: false, 32 path: "page/1", 33 expectedNumberOfUsers: 20, 34 }, 35 { 36 name: "2nd page render", 37 nextPage: false, 38 prevPage: true, 39 path: "page/2", 40 expectedNumberOfUsers: 1, 41 }, 42 { 43 name: "Invalid path render", 44 nextPage: true, 45 prevPage: false, 46 path: "page/invalidtext", 47 expectedNumberOfUsers: 20, 48 }, 49 { 50 name: "Empty Page", 51 nextPage: false, 52 prevPage: false, 53 path: "page/1000", 54 expectedNumberOfUsers: 0, 55 }, 56 } 57 58 for _, tc := range testCases { 59 t.Run(tc.name, func(t *testing.T) { 60 got := Render(tc.path) 61 numUsers := countUsers(got) 62 63 if tc.prevPage && !strings.Contains(got, "Previous page") { 64 t.Fatalf("expected to find Previous page, didn't find it") 65 } 66 if tc.nextPage && !strings.Contains(got, "Next page") { 67 t.Fatalf("expected to find Next page, didn't find it") 68 } 69 70 if tc.expectedNumberOfUsers != numUsers { 71 t.Fatalf("expected %d, got %d users", tc.expectedNumberOfUsers, numUsers) 72 } 73 }) 74 } 75 } 76 77 func countUsers(input string) int { 78 return strings.Count(input, "#### User #") 79 }