internal/httpd/filenav_test.go
42 lines · 1460 bytes
1 symbol in this file
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}