feat: add independent platform modules and multi-provider storage
This commit is contained in:
30
pagination/pagination_test.go
Normal file
30
pagination/pagination_test.go
Normal file
@@ -0,0 +1,30 @@
|
||||
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))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user