github.com/rudderlabs/rudder-go-kit@v0.30.0/filemanager/iterator_test.go (about) 1 package filemanager 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestObjectIterator(t *testing.T) { 10 newMockListSession := func(pages, itemsPerPage int) ListSession { 11 pagesArray := make([][]*FileInfo, pages) 12 for i := 0; i < pages; i++ { 13 page := make([]*FileInfo, itemsPerPage) 14 for j := 0; j < itemsPerPage; j++ { 15 page[j] = &FileInfo{} 16 } 17 pagesArray[i] = page 18 } 19 return &itMockListSession{ 20 pages: pagesArray, 21 } 22 } 23 24 t.Run("no results", func(t *testing.T) { 25 it := NewListIterator(&mockListSession{}) 26 if it.Next() { 27 t.Error("expected no results") 28 } 29 }) 30 31 t.Run("single page", func(t *testing.T) { 32 it := NewListIterator(newMockListSession(1, 10)) 33 var count int 34 for it.Next() { 35 require.NotNil(t, it.Get()) 36 count++ 37 } 38 require.Equal(t, 10, count) 39 }) 40 41 t.Run("two pages", func(t *testing.T) { 42 it := NewListIterator(newMockListSession(2, 10)) 43 var count int 44 for it.Next() { 45 require.NotNil(t, it.Get()) 46 count++ 47 } 48 require.Equal(t, 20, count) 49 }) 50 } 51 52 type itMockListSession struct { 53 page int 54 pages [][]*FileInfo 55 } 56 57 func (m *itMockListSession) Next() (fileObjects []*FileInfo, err error) { 58 if m.page < len(m.pages) { 59 fileObjects = m.pages[m.page] 60 m.page++ 61 } 62 return fileObjects, nil 63 }