Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/git/vole.git

Write over SSH with a registered key:

git clone ssh://git@0.0.0.0:2222/vole.git

A free and open-source forge that lives in your Git repo.

Blame · server/web/home_test.go

Line attribution on main · 64 line(s)

074ae160
Keenan Nemetz
14d ago
1 package web
2
8dc56e4e
Keenan Nemetz
9d ago
3 import "testing"
074ae160
Keenan Nemetz
14d ago
4
5 func TestPaginateClampsToTheFeed(t *testing.T) {
6 events := make([]activityEvent, 120)
7
c8cdb6ac
Keenan Nemetz
9d ago
8 page, p := paginate(events, 1, 50, instanceActivityURL(""), "Activity pages")
c717d4eb
Keenan Nemetz
13d ago
9 if len(page) != 50 || p.Page != 1 || p.Pages != 3 || p.From != 1 || p.To != 50 {
074ae160
Keenan Nemetz
14d ago
10 t.Fatalf("page 1 = len %d, %+v", len(page), p)
11 }
ed03b3d1
Keenan Nemetz
4h ago
12 if p.PrevURL != "" || p.NextURL != "/-/activity?page=2" {
c717d4eb
Keenan Nemetz
13d ago
13 t.Fatalf("page 1 links = %q, %q", p.PrevURL, p.NextURL)
14 }
c8cdb6ac
Keenan Nemetz
9d ago
15 page, p = paginate(events, 2, 50, instanceActivityURL(""), "Activity pages")
ed03b3d1
Keenan Nemetz
4h ago
16 if len(page) != 50 || p.PrevURL != "/-/activity" || p.NextURL != "/-/activity?page=3" {
074ae160
Keenan Nemetz
14d ago
17 t.Fatalf("page 2 = len %d, %+v", len(page), p)
18 }
c8cdb6ac
Keenan Nemetz
9d ago
19 page, p = paginate(events, 3, 50, instanceActivityURL(""), "Activity pages")
ed03b3d1
Keenan Nemetz
4h ago
20 if len(page) != 20 || p.PrevURL != "/-/activity?page=2" || p.NextURL != "" {
074ae160
Keenan Nemetz
14d ago
21 t.Fatalf("page 3 = len %d, %+v", len(page), p)
22 }
c8cdb6ac
Keenan Nemetz
9d ago
23 if _, p = paginate(events, 99, 50, instanceActivityURL(""), "Activity pages"); p.Page != 3 {
c717d4eb
Keenan Nemetz
13d ago
24 t.Fatalf("page 99 clamped to %d, want 3", p.Page)
074ae160
Keenan Nemetz
14d ago
25 }
c8cdb6ac
Keenan Nemetz
9d ago
26 if _, p = paginate(events, 0, 50, instanceActivityURL(""), "Activity pages"); p.Page != 1 {
c717d4eb
Keenan Nemetz
13d ago
27 t.Fatalf("page 0 clamped to %d, want 1", p.Page)
074ae160
Keenan Nemetz
14d ago
28 }
c8cdb6ac
Keenan Nemetz
9d ago
29 if page, p = paginate(nil, 4, 50, instanceActivityURL(""), "Activity pages"); page != nil || p.Page != 1 || p.Pages != 1 {
074ae160
Keenan Nemetz
14d ago
30 t.Fatalf("empty feed = %v, %+v", page, p)
31 }
c717d4eb
Keenan Nemetz
13d ago
32 // A filtered feed keeps its filter in the page links: paging must not
33 // silently widen what the reader asked for.
ed03b3d1
Keenan Nemetz
4h ago
34 if _, p = paginate(events, 1, 50, instanceActivityURL("issue"), "Activity pages"); p.NextURL != "/-/activity?kind=issue&page=2" {
c717d4eb
Keenan Nemetz
13d ago
35 t.Fatalf("filtered next URL = %q", p.NextURL)
36 }
37 // A page size below one is treated as one rather than dividing by zero.
c8cdb6ac
Keenan Nemetz
9d ago
38 if page, _ = paginate(events, 1, 0, instanceActivityURL(""), "Activity pages"); len(page) != 1 {
c717d4eb
Keenan Nemetz
13d ago
39 t.Fatalf("perPage 0 returned %d events, want 1", len(page))
074ae160
Keenan Nemetz
14d ago
40 }
41 }
42
43 func TestPageSection(t *testing.T) {
44 cases := map[string]string{
ed03b3d1
Keenan Nemetz
4h ago
45 "/": "home",
46 "/demo": "repos",
47 "/demo/issues": "repos",
48 "/-/activity": "activity",
49 "/-/repos/new": "repos",
50 "/-/users": "admin",
51 "/-/users/keenan": "admin",
52 "/-/admin": "admin",
53 "/-/u": "people",
54 "/-/u/keenan": "people",
55 "/-/account": "account",
56 "/-/login": "",
57 "/-/status": "admin",
074ae160
Keenan Nemetz
14d ago
58 }
59 for path, want := range cases {
60 if got := pageSection(path); got != want {
61 t.Errorf("pageSection(%q) = %q, want %q", path, got, want)
62 }
63 }
64 }