...
1 package pagination
2
3 import (
4 "encoding/json"
5 "testing"
6 "time"
7
8 "github.com/stretchr/testify/assert"
9 )
10
11 var (
12 defaultCursor = Pager{
13 Cursor: time.Now().Format(time.RFC3339),
14 Offset: 0,
15 Previous: false,
16 }
17 )
18
19 func TestParse(t *testing.T) {
20
21 _, count := Parse(nil, nil)
22 assert.Equal(t, count, defaultCount)
23
24 cursor := encode(defaultCursor)
25 limit := 20
26 startCursor, count := Parse(&cursor, &limit)
27 assert.Equal(t, count, 20)
28 expectedCursor, err := Decode(cursor)
29 assert.NoError(t, err)
30 decodedPager := Pager{}
31 err = json.Unmarshal(expectedCursor, &decodedPager)
32 assert.NoError(t, err)
33 assert.Equal(t, startCursor, decodedPager)
34 }
35
36 func TestOverall(t *testing.T) {
37 start := defaultCursor
38 end := time.Now().Add(36 * time.Hour).Format(time.RFC3339)
39 pager := Overall(start, end, "", 10, 10, 0)
40 assert.Equal(t, pager.HasNextPage, false)
41 assert.Equal(t, pager.CurrentCursor, encode(start))
42 assert.Equal(t, pager.NextCursor, encode(Pager{
43 Cursor: end,
44 Offset: 10,
45 }))
46 assert.Equal(t, pager.TotalCount, 10)
47 assert.Equal(t, pager.PreviousCursor, "")
48 }
49
View as plain text