internal/httpd/filenav_test.go

v1.41.0
gitbay/internal/httpd/filenav_test.go history · blame · raw

42 lines · 1460 bytes

 1package httpd
 2
 3import (
 4	"testing"
 5
 6	"gitbay.org/gitbay/internal/gitutil"
 7)
 8
 9// The navigator lists the file's directory, directories first, links each
10// entry to its tree or blob page, marks the file itself, and links the
11// parent (the tree root when the file is at the top).
12func TestFileNavMarksCurrentAndLinksParent(t *testing.T) {
13	entries := []gitutil.TreeEntry{
14		{Type: "blob", Name: "main.go"},
15		{Type: "tree", Name: "sub"},
16		{Type: "blob", Name: "util.go"},
17	}
18	nav := fileNavFor("krz/gitbay", "main", "cmd/gitbay/util.go", entries)
19	if nav.Title != "cmd/gitbay" {
20		t.Errorf("title = %q", nav.Title)
21	}
22	if nav.Parent != "/krz/gitbay/tree/main/cmd" {
23		t.Errorf("parent = %q", nav.Parent)
24	}
25	if len(nav.Entries) != 3 || nav.Entries[0].Name != "sub/" || !nav.Entries[0].Dir {
26		t.Fatalf("entries not directories-first: %+v", nav.Entries)
27	}
28	if nav.Entries[0].URL != "/krz/gitbay/tree/main/cmd/gitbay/sub" {
29		t.Errorf("dir url = %q", nav.Entries[0].URL)
30	}
31	if nav.Entries[2].Name != "util.go" || !nav.Entries[2].Current || nav.Entries[2].URL != "/krz/gitbay/blob/main/cmd/gitbay/util.go" {
32		t.Errorf("current entry: %+v", nav.Entries[2])
33	}
34	if nav.Entries[1].Current {
35		t.Error("main.go marked current")
36	}
37
38	root := fileNavFor("krz/gitbay", "main", "Makefile", []gitutil.TreeEntry{{Type: "blob", Name: "Makefile"}})
39	if root.Title != "gitbay" || root.Parent != "" {
40		t.Errorf("root nav: title %q parent %q", root.Title, root.Parent)
41	}
42}