github.com/Files-com/files-sdk-go/v2@v2.1.2/iter_test.go (about) 1 package files_sdk 2 3 import ( 4 "testing" 5 6 "github.com/Files-com/files-sdk-go/v2/lib" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestIter_Next_MaxPages(t *testing.T) { 12 assert := assert.New(t) 13 params := ListParams{Page: 0, PerPage: 5, MaxPages: 2} 14 it := Iter{} 15 it.ListParams = ¶ms 16 17 it.Query = func(lib.Values, ...RequestResponseOption) (*[]interface{}, string, error) { 18 ret := make([]interface{}, params.PerPage) 19 20 return &ret, "cursor", nil 21 } 22 recordCount := 0 23 for it.Next() { 24 recordCount += 1 25 } 26 assert.Equal(int(params.PerPage*params.MaxPages), recordCount) 27 assert.Equal(nil, it.Err()) 28 assert.Equal("cursor", it.GetCursor()) 29 } 30 31 func TestIter_Next_ZeroMaxPages(t *testing.T) { 32 assert := assert.New(t) 33 params := ListParams{Page: 0, PerPage: 2, MaxPages: 0} 34 pages := make([][]interface{}, 0) 35 pages = append(pages, make([]interface{}, params.PerPage)) 36 pages = append(pages, make([]interface{}, params.PerPage)) 37 pages = append(pages, make([]interface{}, 0)) 38 it := Iter{} 39 it.ListParams = ¶ms 40 41 it.Query = func(lib.Values, ...RequestResponseOption) (*[]interface{}, string, error) { 42 ret := pages[:1][0] 43 pages = pages[1:] 44 45 return &ret, "cursor", nil 46 } 47 recordCount := 0 48 for it.Next() { 49 recordCount += 1 50 } 51 assert.Equal(4, recordCount) 52 } 53 54 func TestIter_Next_PerPage_of_one(t *testing.T) { 55 assert := assert.New(t) 56 params := ListParams{Page: 0, PerPage: 1, MaxPages: 2} 57 it := Iter{} 58 it.ListParams = ¶ms 59 var sliceOfSliceInterfaces [2][]interface{} 60 sliceOfSliceInterfaces[0] = make([]interface{}, params.PerPage) 61 sliceOfSliceInterfaces[1] = make([]interface{}, 0) 62 resultCounter := 0 63 it.Query = func(lib.Values, ...RequestResponseOption) (*[]interface{}, string, error) { 64 ret := sliceOfSliceInterfaces[resultCounter] 65 resultCounter += 1 66 return &ret, "cursor", nil 67 } 68 recordCount := 0 69 for it.Next() { 70 recordCount += 1 71 assert.Equal(lib.Interface(), it.Current()) 72 } 73 assert.Equal(1, recordCount) 74 } 75 76 func TestIter_Next_No_Cursor(t *testing.T) { 77 assert := assert.New(t) 78 params := ListParams{} 79 it := Iter{} 80 it.ListParams = ¶ms 81 resultCounter := 0 82 it.Query = func(lib.Values, ...RequestResponseOption) (*[]interface{}, string, error) { 83 ret := make([]interface{}, 1) 84 resultCounter += 1 85 return &ret, "", nil 86 } 87 recordCount := 0 88 for it.Next() { 89 recordCount += 1 90 assert.Equal(lib.Interface(), it.Current()) 91 } 92 assert.Equal(1, recordCount) 93 }