31 lines
804 B
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))
|
|
}
|
|
}
|