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 = &params
    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 = &params
    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 = &params
    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 = &params
    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  }