@@ -4,10 +4,11 @@ import (
44 "testing"
55 "time"
66
7- "github.com/docker/cagent/pkg/chat"
8- "github.com/docker/cagent/pkg/session"
97 "github.com/stretchr/testify/assert"
108 "github.com/stretchr/testify/require"
9+
10+ "github.com/docker/cagent/pkg/chat"
11+ "github.com/docker/cagent/pkg/session"
1112)
1213
1314func TestEncodeDecode (t * testing.T ) {
@@ -39,7 +40,7 @@ func TestDecodeInvalidCursor(t *testing.T) {
3940
4041func createTestMessages (count int ) []session.Message {
4142 messages := make ([]session.Message , count )
42- for i := 0 ; i < count ; i ++ {
43+ for i := range count {
4344 role := chat .MessageRoleUser
4445 if i % 2 == 1 {
4546 role = chat .MessageRoleAssistant
@@ -59,11 +60,11 @@ func createTestMessages(count int) []session.Message {
5960
6061func TestPaginateMessages_FirstPage (t * testing.T ) {
6162 messages := createTestMessages (100 )
62-
63+
6364 params := PaginationParams {
6465 Limit : 10 ,
6566 }
66-
67+
6768 paginated , meta , err := PaginateMessages (messages , params )
6869 require .NoError (t , err )
6970 assert .Len (t , paginated , 10 )
@@ -72,187 +73,187 @@ func TestPaginateMessages_FirstPage(t *testing.T) {
7273 assert .True (t , meta .HasMore )
7374 assert .NotEmpty (t , meta .NextCursor )
7475 assert .NotEmpty (t , meta .PrevCursor )
75-
76+
7677 // Should get first 10 messages
7778 assert .Equal (t , "Message A" , paginated [0 ].Message .Content )
7879 assert .Equal (t , "Message J" , paginated [9 ].Message .Content )
7980}
8081
8182func TestPaginateMessages_WithAfterCursor (t * testing.T ) {
8283 messages := createTestMessages (100 )
83-
84+
8485 // Get first page
8586 firstPageParams := PaginationParams {Limit : 10 }
8687 firstPage , firstMeta , err := PaginateMessages (messages , firstPageParams )
8788 require .NoError (t , err )
88-
89+
8990 // Get second page using nextCursor
9091 secondPageParams := PaginationParams {
9192 Limit : 10 ,
9293 After : firstMeta .NextCursor ,
9394 }
9495 secondPage , secondMeta , err := PaginateMessages (messages , secondPageParams )
9596 require .NoError (t , err )
96-
97+
9798 assert .Len (t , secondPage , 10 )
9899 assert .True (t , secondMeta .HasMore )
99-
100+
100101 // Should get messages 11-20
101102 assert .Equal (t , "Message K" , secondPage [0 ].Message .Content )
102103 assert .Equal (t , "Message T" , secondPage [9 ].Message .Content )
103-
104+
104105 // No overlap with first page
105106 assert .NotEqual (t , firstPage [9 ].Message .Content , secondPage [0 ].Message .Content )
106107}
107108
108109func TestPaginateMessages_WithBeforeCursor (t * testing.T ) {
109110 messages := createTestMessages (100 )
110-
111+
111112 // Get a page in the middle (starting at index 50)
112113 middleCursor , _ := EncodeCursor (MessageCursor {
113114 Timestamp : messages [50 ].Message .CreatedAt ,
114115 Index : 50 ,
115116 })
116-
117+
117118 params := PaginationParams {
118119 Limit : 10 ,
119120 Before : middleCursor ,
120121 }
121-
122+
122123 paginated , meta , err := PaginateMessages (messages , params )
123124 require .NoError (t , err )
124-
125+
125126 assert .Len (t , paginated , 10 )
126127 assert .True (t , meta .HasMore ) // There are older messages
127-
128+
128129 // Should get 10 messages before index 50 (indices 40-49)
129130 assert .Equal (t , "Message " + string (rune ('A' + 40 )), paginated [0 ].Message .Content )
130131 assert .Equal (t , "Message " + string (rune ('A' + 49 )), paginated [9 ].Message .Content )
131132}
132133
133134func TestPaginateMessages_DefaultLimit (t * testing.T ) {
134135 messages := createTestMessages (100 )
135-
136+
136137 params := PaginationParams {
137138 Limit : 0 , // Should use default
138139 }
139-
140+
140141 paginated , meta , err := PaginateMessages (messages , params )
141142 require .NoError (t , err )
142-
143+
143144 assert .Len (t , paginated , DefaultLimit )
144145 assert .Equal (t , DefaultLimit , meta .Limit )
145146}
146147
147148func TestPaginateMessages_MaxLimit (t * testing.T ) {
148149 messages := createTestMessages (300 )
149-
150+
150151 params := PaginationParams {
151152 Limit : 500 , // Should be capped at MaxLimit
152153 }
153-
154+
154155 paginated , meta , err := PaginateMessages (messages , params )
155156 require .NoError (t , err )
156-
157+
157158 assert .Len (t , paginated , MaxLimit )
158159 assert .Equal (t , MaxLimit , meta .Limit )
159160}
160161
161162func TestPaginateMessages_EmptyMessages (t * testing.T ) {
162163 messages := []session.Message {}
163-
164+
164165 params := PaginationParams {
165166 Limit : 10 ,
166167 }
167-
168+
168169 paginated , meta , err := PaginateMessages (messages , params )
169170 require .NoError (t , err )
170-
171- assert .Len (t , paginated , 0 )
171+
172+ assert .Empty (t , paginated )
172173 assert .Equal (t , 0 , meta .TotalMessages )
173174 assert .False (t , meta .HasMore )
174175}
175176
176177func TestPaginateMessages_LastPage (t * testing.T ) {
177178 messages := createTestMessages (25 )
178-
179+
179180 // Get first page
180181 firstPageParams := PaginationParams {Limit : 10 }
181182 _ , firstMeta , err := PaginateMessages (messages , firstPageParams )
182183 require .NoError (t , err )
183-
184+
184185 // Get second page
185186 secondPageParams := PaginationParams {
186187 Limit : 10 ,
187188 After : firstMeta .NextCursor ,
188189 }
189190 _ , secondMeta , err := PaginateMessages (messages , secondPageParams )
190191 require .NoError (t , err )
191-
192+
192193 // Get third page (last page, only 5 messages)
193194 thirdPageParams := PaginationParams {
194195 Limit : 10 ,
195196 After : secondMeta .NextCursor ,
196197 }
197198 thirdPage , thirdMeta , err := PaginateMessages (messages , thirdPageParams )
198199 require .NoError (t , err )
199-
200- assert .Len (t , thirdPage , 5 ) // Only 5 messages left
200+
201+ assert .Len (t , thirdPage , 5 ) // Only 5 messages left
201202 assert .False (t , thirdMeta .HasMore ) // No more messages
202203 assert .Equal (t , 25 , thirdMeta .TotalMessages )
203204}
204205
205206func TestPaginateMessages_AfterLastMessage (t * testing.T ) {
206207 messages := createTestMessages (10 )
207-
208+
208209 // Create cursor pointing to last message
209210 lastCursor , _ := EncodeCursor (MessageCursor {
210211 Timestamp : messages [9 ].Message .CreatedAt ,
211212 Index : 9 ,
212213 })
213-
214+
214215 params := PaginationParams {
215216 Limit : 10 ,
216217 After : lastCursor ,
217218 }
218-
219+
219220 paginated , meta , err := PaginateMessages (messages , params )
220221 require .NoError (t , err )
221-
222- assert .Len (t , paginated , 0 )
222+
223+ assert .Empty (t , paginated )
223224 assert .False (t , meta .HasMore )
224225}
225226
226227func TestPaginateMessages_BeforeFirstMessage (t * testing.T ) {
227228 messages := createTestMessages (10 )
228-
229+
229230 // Create cursor pointing to first message
230231 firstCursor , _ := EncodeCursor (MessageCursor {
231232 Timestamp : messages [0 ].Message .CreatedAt ,
232233 Index : 0 ,
233234 })
234-
235+
235236 params := PaginationParams {
236237 Limit : 10 ,
237238 Before : firstCursor ,
238239 }
239-
240+
240241 paginated , meta , err := PaginateMessages (messages , params )
241242 require .NoError (t , err )
242-
243- assert .Len (t , paginated , 0 )
243+
244+ assert .Empty (t , paginated )
244245 assert .False (t , meta .HasMore )
245246}
246247
247248func TestPaginateMessages_InvalidCursor (t * testing.T ) {
248249 messages := createTestMessages (10 )
249-
250+
250251 params := PaginationParams {
251252 Limit : 10 ,
252253 After : "invalid-cursor" ,
253254 }
254-
255+
255256 _ , _ , err := PaginateMessages (messages , params )
256- assert .Error (t , err )
257+ require .Error (t , err )
257258 assert .Contains (t , err .Error (), "invalid after cursor" )
258259}
0 commit comments