package pagination import ( "encoding/json" "testing" "time" "github.com/stretchr/testify/assert" ) var ( defaultCursor = Pager{ Cursor: time.Now().Format(time.RFC3339), Offset: 0, Previous: false, } ) func TestParse(t *testing.T) { // Test that default values are used _, count := Parse(nil, nil) assert.Equal(t, count, defaultCount) // Test that provided values are parsed cursor := encode(defaultCursor) limit := 20 startCursor, count := Parse(&cursor, &limit) assert.Equal(t, count, 20) expectedCursor, err := Decode(cursor) assert.NoError(t, err) decodedPager := Pager{} err = json.Unmarshal(expectedCursor, &decodedPager) assert.NoError(t, err) assert.Equal(t, startCursor, decodedPager) } func TestOverall(t *testing.T) { start := defaultCursor end := time.Now().Add(36 * time.Hour).Format(time.RFC3339) pager := Overall(start, end, "", 10, 10, 0) assert.Equal(t, pager.HasNextPage, false) assert.Equal(t, pager.CurrentCursor, encode(start)) assert.Equal(t, pager.NextCursor, encode(Pager{ Cursor: end, Offset: 10, })) assert.Equal(t, pager.TotalCount, 10) assert.Equal(t, pager.PreviousCursor, "") }