package web
import (
"net/url"
"testing"
)
// The repositories listing is a page of fleetPageSize rows, and its
// pager says where it is and links the pages either side, keeping the
// filter (dmestas: "only show the top 50 on the first page").
func TestTheRepositoryListingPagesByFifty(t *testing.T) {
v := url.Values{}
if got := fleetWindow(v, "3"); got != 3 || v.Get("limit") != "50" || v.Get("offset") != "100" {
t.Errorf("FAIL: page 3 asks limit %s offset %s (page %d)", v.Get("limit"), v.Get("offset"), got)
}
for _, bad := range []string{"", "0", "-2", "x"} {
if got := fleetWindow(url.Values{}, bad); got != 1 {
t.Errorf("FAIL: ?page=%q read as page %d", bad, got)
}
}
d := pageData{Fleet: make([]repoInfo, 50), FleetTotal: 120, FleetPage: 2, Query: "fo", Sort: "size"}
p := d.FleetPager()
if p.From != 51 || p.To != 100 || p.Total != 120 {
t.Errorf("FAIL: page 2 says %d–%d of %d", p.From, p.To, p.Total)
}
if p.Prev != "/?q=fo&sort=size&view=explore" || p.Next != "/?page=3&q=fo&sort=size&view=explore" {
t.Errorf("FAIL: prev %q next %q", p.Prev, p.Next)
}
last := pageData{Fleet: make([]repoInfo, 20), FleetTotal: 120, FleetPage: 3}.FleetPager()
if last.Next != "" || last.To != 120 {
t.Errorf("FAIL: the last page offers next %q, ends at %d", last.Next, last.To)
}
}