Skip to content
quarry Artifact [650f20cbb6]
Login

Artifact [650f20cbb6]

Artifact 650f20cbb6a10756a8f47394962ea9a8baa14b3e539a996e6bea1bcab3582889:


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)
	}
}