Files
go-omni/pagination/pagination_test.go

31 lines
804 B
Go

package pagination
import (
"encoding/json"
"math"
"net/url"
"strings"
"testing"
)
func TestBoundsAndEnvelope(t *testing.T) {
for _, raw := range []string{"page=0", "page=1&page=2", "pageSize=101", "page=9223372036854775807&pageSize=100", "pageSize=-1"} {
q, _ := url.ParseQuery(raw)
if _, err := Parse(q, Config{}); err == nil {
t.Fatal(raw)
}
}
r, err := Parse(url.Values{"page": {"2"}, "pageSize": {"30"}}, Config{})
if err != nil || r.Offset() != 30 {
t.Fatal(r, err)
}
result, err := NewResult(r, []string(nil), math.MaxInt64)
if err != nil || result.TotalPages != math.MaxInt64/30+1 {
t.Fatal(result, err)
}
raw, _ := json.Marshal(result)
if !strings.Contains(string(raw), `"items":[]`) || !strings.Contains(string(raw), `"pageSize":30`) {
t.Fatal(string(raw))
}
}