@@ -143,6 +143,97 @@ func TestIterListAndMeta(t *testing.T) {
143
143
assert .Equal (t , listMeta , it .Meta ())
144
144
}
145
145
146
+ func TestV1ListEmpty (t * testing.T ) {
147
+ tq := testV1Query [* int ]{{nil , & ListMeta {}, nil }}
148
+ g , gerr := collectList (getV1List (nil , tq .query ))
149
+ assert .Equal (t , 0 , len (tq ))
150
+ assert .Equal (t , 0 , len (g ))
151
+ assert .NoError (t , gerr )
152
+ }
153
+
154
+ func TestV1ListEmptyErr (t * testing.T ) {
155
+ tq := testV1Query [* int ]{{nil , & ListMeta {}, errTest }}
156
+ g , gerr := collectList (getV1List (nil , tq .query ))
157
+ assert .Equal (t , 0 , len (tq ))
158
+ assert .Equal (t , 0 , len (g ))
159
+ assert .Equal (t , errTest , gerr )
160
+ }
161
+
162
+ func TestV1ListOne (t * testing.T ) {
163
+ tq := testV1Query [* int ]{{[]* int {intPtr (1 )}, & ListMeta {}, nil }}
164
+ want := []* int {intPtr (1 )}
165
+ g , gerr := collectList (getV1List (nil , tq .query ))
166
+ assert .Equal (t , 0 , len (tq ))
167
+ assert .Equal (t , want , g )
168
+ assert .NoError (t , gerr )
169
+ }
170
+
171
+ func TestV1ListOneErr (t * testing.T ) {
172
+ tq := testV1Query [* int ]{{[]* int {intPtr (1 )}, & ListMeta {}, errTest }}
173
+ want := []* int {intPtr (1 )}
174
+ g , gerr := collectList (getV1List (nil , tq .query ))
175
+ assert .Equal (t , 0 , len (tq ))
176
+ assert .Equal (t , want , g )
177
+ assert .Equal (t , errTest , gerr )
178
+ }
179
+
180
+ func TestV1ListPage2EmptyErr (t * testing.T ) {
181
+ tq := testV1Query [* item ]{
182
+ {[]* item {{"x" }}, & ListMeta {HasMore : true , TotalCount : 0 , URL : "" }, nil },
183
+ {nil , & ListMeta {}, errTest },
184
+ }
185
+ want := []* item {{"x" }}
186
+ g , gerr := collectList (getV1List (nil , tq .query ))
187
+ assert .Equal (t , 0 , len (tq ))
188
+ assert .Equal (t , want , g )
189
+ assert .Equal (t , errTest , gerr )
190
+ }
191
+
192
+ func TestV1ListTwoPages (t * testing.T ) {
193
+ tq := testV1Query [* item ]{
194
+ {[]* item {{"x" }}, & ListMeta {HasMore : true , TotalCount : 0 , URL : "" }, nil },
195
+ {[]* item {{"y" }}, & ListMeta {}, nil },
196
+ }
197
+ want := []* item {{"x" }, {"y" }}
198
+ g , gerr := collectList (getV1List (nil , tq .query ))
199
+ assert .Equal (t , 0 , len (tq ))
200
+ assert .Equal (t , want , g )
201
+ assert .NoError (t , gerr )
202
+ }
203
+
204
+ func TestV1ListTwoPagesErr (t * testing.T ) {
205
+ tq := testV1Query [* item ]{
206
+ {[]* item {{"x" }}, & ListMeta {HasMore : true , TotalCount : 0 , URL : "" }, nil },
207
+ {[]* item {{"y" }}, & ListMeta {}, errTest },
208
+ }
209
+ want := []* item {{"x" }, {"y" }}
210
+ g , gerr := collectList (getV1List (nil , tq .query ))
211
+ assert .Equal (t , 0 , len (tq ))
212
+ assert .Equal (t , want , g )
213
+ assert .Equal (t , errTest , gerr )
214
+ }
215
+
216
+ func TestV1ListReversed (t * testing.T ) {
217
+ tq := testV1Query [* int ]{{[]* int {intPtr (1 ), intPtr (2 )}, & ListMeta {}, nil }}
218
+ want := []* int {intPtr (2 ), intPtr (1 )}
219
+ g , gerr := collectList (getV1List (& ListParams {EndingBefore : String ("x" )}, tq .query ))
220
+ assert .Equal (t , 0 , len (tq ))
221
+ assert .Equal (t , want , g )
222
+ assert .NoError (t , gerr )
223
+ }
224
+
225
+ func TestV1ListReversedTwoPages (t * testing.T ) {
226
+ tq := testV1Query [* item ]{
227
+ {[]* item {& item {"3" }, & item {"4" }}, & ListMeta {HasMore : true , TotalCount : 0 , URL : "" }, nil },
228
+ {[]* item {& item {"1" }, & item {"2" }}, & ListMeta {}, nil },
229
+ }
230
+ want := []* item {& item {"4" }, & item {"3" }, & item {"2" }, & item {"1" }}
231
+ g , gerr := collectList (getV1List (& ListParams {EndingBefore : String ("x" )}, tq .query ))
232
+ assert .Equal (t , 0 , len (tq ))
233
+ assert .Equal (t , want , g )
234
+ assert .NoError (t , gerr )
235
+ }
236
+
146
237
//
147
238
// ---
148
239
//
@@ -165,6 +256,38 @@ func (tq *testQuery) query(*Params, *form.Values) ([]interface{}, ListContainer,
165
256
return x .v , x .m , x .e
166
257
}
167
258
259
+ type testV1Query [T any ] []struct {
260
+ v []T
261
+ m ListContainer
262
+ e error
263
+ }
264
+
265
+ func (tq * testV1Query [T ]) query (* Params , * form.Values ) ([]T , ListContainer , error ) {
266
+ x := (* tq )[0 ]
267
+ * tq = (* tq )[1 :]
268
+ return x .v , x .m , x .e
269
+ }
270
+
271
+ func collectList [T any ](it * v1List [* T ]) ([]* T , error ) {
272
+ var tt []* T
273
+ var err error
274
+ it .All ()(func (t * T , e error ) bool {
275
+ if e != nil {
276
+ err = e
277
+ return false
278
+ }
279
+ tt = append (tt , t )
280
+ return true
281
+ })
282
+ return tt , err
283
+ }
284
+
285
+ func intPtr (i int ) * int {
286
+ intPtr := new (int )
287
+ * intPtr = i
288
+ return intPtr
289
+ }
290
+
168
291
type collectable interface {
169
292
Next () bool
170
293
Current () interface {}
0 commit comments