(t *testing.T)
| 210 | } |
| 211 | |
| 212 | func TestListPager_EachListItem(t *testing.T) { |
| 213 | type fields struct { |
| 214 | PageSize int64 |
| 215 | PageFn ListPageFunc |
| 216 | } |
| 217 | tests := []struct { |
| 218 | name string |
| 219 | fields fields |
| 220 | want runtime.Object |
| 221 | wantErr bool |
| 222 | wantPanic bool |
| 223 | isExpired bool |
| 224 | processorErrorOnItem int |
| 225 | processorPanicOnItem int |
| 226 | cancelContextOnItem int |
| 227 | }{ |
| 228 | { |
| 229 | name: "empty page", |
| 230 | fields: fields{PageSize: 10, PageFn: (&testPager{t: t, expectPage: 10, remaining: 0, rv: "rv:20"}).PagedList}, |
| 231 | want: list(0, "rv:20"), |
| 232 | }, |
| 233 | { |
| 234 | name: "one page", |
| 235 | fields: fields{PageSize: 10, PageFn: (&testPager{t: t, expectPage: 10, remaining: 9, rv: "rv:20"}).PagedList}, |
| 236 | want: list(9, "rv:20"), |
| 237 | }, |
| 238 | { |
| 239 | name: "one full page", |
| 240 | fields: fields{PageSize: 10, PageFn: (&testPager{t: t, expectPage: 10, remaining: 10, rv: "rv:20"}).PagedList}, |
| 241 | want: list(10, "rv:20"), |
| 242 | }, |
| 243 | { |
| 244 | name: "two pages", |
| 245 | fields: fields{PageSize: 10, PageFn: (&testPager{t: t, expectPage: 10, remaining: 11, rv: "rv:20"}).PagedList}, |
| 246 | want: list(11, "rv:20"), |
| 247 | }, |
| 248 | { |
| 249 | name: "three pages", |
| 250 | fields: fields{PageSize: 10, PageFn: (&testPager{t: t, expectPage: 10, remaining: 21, rv: "rv:20"}).PagedList}, |
| 251 | want: list(21, "rv:20"), |
| 252 | }, |
| 253 | { |
| 254 | name: "expires on second page", |
| 255 | fields: fields{PageSize: 10, PageFn: (&testPager{t: t, expectPage: 10, remaining: 21, rv: "rv:20"}).ExpiresOnSecondPage}, |
| 256 | want: list(10, "rv:20"), // all items on the first page should have been visited |
| 257 | wantErr: true, |
| 258 | isExpired: true, |
| 259 | }, |
| 260 | { |
| 261 | name: "error processing item", |
| 262 | fields: fields{PageSize: 10, PageFn: (&testPager{t: t, expectPage: 10, remaining: 51, rv: "rv:20"}).PagedList}, |
| 263 | want: list(3, "rv:20"), // all the items <= the one the processor returned an error on should have been visited |
| 264 | wantPanic: true, |
| 265 | processorPanicOnItem: 3, |
| 266 | }, |
| 267 | { |
| 268 | name: "cancel context while processing", |
| 269 | fields: fields{PageSize: 10, PageFn: (&testPager{t: t, expectPage: 10, remaining: 51, rv: "rv:20"}).PagedList}, |
nothing calls this directly
no test coverage detected