Skip to content

Commit 7eea493

Browse files
committed
EventByHandle test
1 parent 44ace21 commit 7eea493

File tree

1 file changed

+98
-1
lines changed

1 file changed

+98
-1
lines changed

nodeClient_test.go

+98-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package aptos
22

33
import (
4-
"github.com/stretchr/testify/assert"
4+
"encoding/json"
5+
"fmt"
6+
"net/http"
7+
"net/http/httptest"
8+
"strconv"
59
"testing"
610
"time"
11+
12+
"github.com/stretchr/testify/assert"
713
)
814

915
func TestPollForTransaction(t *testing.T) {
@@ -20,3 +26,94 @@ func TestPollForTransaction(t *testing.T) {
2026
assert.Less(t, dt, 20*time.Millisecond)
2127
assert.Error(t, err)
2228
}
29+
30+
func TestEventsByHandle(t *testing.T) {
31+
mockServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
32+
if r.URL.Path == "/" {
33+
// handle initial request from client
34+
w.WriteHeader(http.StatusOK)
35+
return
36+
}
37+
38+
assert.Equal(t, "/accounts/0x0/events/0x2/transfer", r.URL.Path)
39+
40+
start := r.URL.Query().Get("start")
41+
limit := r.URL.Query().Get("limit")
42+
43+
startInt, _ := strconv.ParseUint(start, 10, 64)
44+
limitInt, _ := strconv.ParseUint(limit, 10, 64)
45+
46+
events := make([]map[string]interface{}, 0, limitInt)
47+
for i := uint64(0); i < limitInt; i++ {
48+
events = append(events, map[string]interface{}{
49+
"type": "0x1::coin::TransferEvent",
50+
"guid": map[string]interface{}{
51+
"creation_number": "1",
52+
"account_address": AccountZero.String(),
53+
},
54+
"sequence_number": strconv.FormatUint(startInt+i, 10),
55+
"data": map[string]interface{}{
56+
"amount": fmt.Sprintf("%d", (startInt+i)*100),
57+
},
58+
})
59+
}
60+
61+
json.NewEncoder(w).Encode(events)
62+
}))
63+
defer mockServer.Close()
64+
65+
client, err := NewClient(NetworkConfig{
66+
Name: "mocknet",
67+
NodeUrl: mockServer.URL,
68+
})
69+
assert.NoError(t, err)
70+
71+
t.Run("pagination with concurrent fetching", func(t *testing.T) {
72+
start := uint64(0)
73+
limit := uint64(150)
74+
events, err := client.EventsByHandle(
75+
AccountZero,
76+
"0x2",
77+
"transfer",
78+
&start,
79+
&limit,
80+
)
81+
82+
assert.NoError(t, err)
83+
assert.Len(t, events, 150)
84+
})
85+
86+
t.Run("default page size when limit not provided", func(t *testing.T) {
87+
events, err := client.EventsByHandle(
88+
AccountZero,
89+
"0x2",
90+
"transfer",
91+
nil,
92+
nil,
93+
)
94+
95+
assert.NoError(t, err)
96+
assert.Len(t, events, 100)
97+
assert.Equal(t, uint64(99), events[99].SequenceNumber)
98+
})
99+
100+
t.Run("single page fetch", func(t *testing.T) {
101+
start := uint64(50)
102+
limit := uint64(5)
103+
events, err := client.EventsByHandle(
104+
AccountZero,
105+
"0x2",
106+
"transfer",
107+
&start,
108+
&limit,
109+
)
110+
111+
jsonBytes, _ := json.MarshalIndent(events, "", " ")
112+
t.Logf("JSON Response: %s", string(jsonBytes))
113+
114+
assert.NoError(t, err)
115+
assert.Len(t, events, 5)
116+
assert.Equal(t, uint64(50), events[0].SequenceNumber)
117+
assert.Equal(t, uint64(54), events[4].SequenceNumber)
118+
})
119+
}

0 commit comments

Comments
 (0)